From 6e3e7172247b0c5955184956df19ceb8e48c869f Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Fri, 17 Jun 2022 18:15:36 +0200 Subject: [PATCH] ---error options --- src/common/caching.c | 28 ++-- src/common/format.c | 34 +---- src/common/init.c | 109 ++++++---------- src/common/printing.c | 92 ++++++++----- src/data/config.txt | 38 ++++++ src/data/help.txt | 80 ++---------- src/data/help_format.txt | 6 - src/fastfetch.c | 256 +++++++++++++++++++++++-------------- src/fastfetch.h | 125 ++++++++---------- src/modules/battery.c | 12 +- src/modules/cpu.c | 8 +- src/modules/cpuUsage.c | 8 +- src/modules/cursor.c | 16 +-- src/modules/date.c | 6 +- src/modules/datetime.c | 10 +- src/modules/de.c | 10 +- src/modules/disk.c | 16 +-- src/modules/font.c | 12 +- src/modules/gpu.c | 8 +- src/modules/host.c | 6 +- src/modules/icons.c | 12 +- src/modules/kernel.c | 6 +- src/modules/locale.c | 6 +- src/modules/localip.c | 25 ++-- src/modules/memory.c | 10 +- src/modules/opencl.c | 8 +- src/modules/opengl.c | 8 +- src/modules/os.c | 8 +- src/modules/packages.c | 8 +- src/modules/player.c | 8 +- src/modules/processes.c | 6 +- src/modules/publicip.c | 8 +- src/modules/resolution.c | 8 +- src/modules/shell.c | 8 +- src/modules/song.c | 8 +- src/modules/terminal.c | 8 +- src/modules/terminalfont.c | 28 ++-- src/modules/theme.c | 10 +- src/modules/time.c | 6 +- src/modules/uptime.c | 6 +- src/modules/vulkan.c | 8 +- src/modules/wm.c | 8 +- src/modules/wmtheme.c | 28 ++-- 43 files changed, 551 insertions(+), 568 deletions(-) diff --git a/src/common/caching.c b/src/common/caching.c index e5e95ba8d..804cac2c0 100644 --- a/src/common/caching.c +++ b/src/common/caching.c @@ -77,7 +77,7 @@ void ffCacheClose(FFcache* cache) fclose(cache->split); } -static bool printCachedValue(FFinstance* instance, const char* moduleName, const FFstrbuf* customKeyFormat) +static bool printCachedValue(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs) { FFstrbuf content; ffStrbufInitA(&content, 512); @@ -95,7 +95,7 @@ static bool printCachedValue(FFinstance* instance, const char* moduleName, const { uint32_t nullByteIndex = ffStrbufNextIndexC(&content, startIndex, '\0'); uint8_t moduleIndex = (moduleCounter == 1 && nullByteIndex == content.length) ? 0 : moduleCounter; - ffPrintLogoAndKey(instance, moduleName, moduleIndex, customKeyFormat); + ffPrintLogoAndKey(instance, moduleName, moduleIndex, &moduleArgs->key); puts(content.chars + startIndex); startIndex = nullByteIndex + 1; ++moduleCounter; @@ -106,7 +106,7 @@ static bool printCachedValue(FFinstance* instance, const char* moduleName, const return moduleCounter > 1; } -static bool printCachedFormat(FFinstance* instance, const char* moduleName, const FFstrbuf* customKeyFormat, const FFstrbuf* formatString, uint32_t numArgs) +static bool printCachedFormat(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs, uint32_t numArgs) { FFstrbuf content; ffStrbufInitA(&content, 512); @@ -134,7 +134,7 @@ static bool printCachedFormat(FFinstance* instance, const char* moduleName, cons if(argumentCounter == numArgs) { uint8_t moduleIndex = (moduleCounter == 1 && nullByteIndex == content.length) ? 0 : moduleCounter; - ffPrintFormatString(instance, moduleName, moduleIndex, customKeyFormat, formatString, NULL, numArgs, arguments); + ffPrintFormat(instance, moduleName, moduleIndex, moduleArgs, numArgs, arguments); ++moduleCounter; argumentCounter = 0; } @@ -148,27 +148,27 @@ static bool printCachedFormat(FFinstance* instance, const char* moduleName, cons return moduleCounter > 1; } -bool ffPrintFromCache(FFinstance* instance, const char* moduleName, const FFstrbuf* customKeyFormat, const FFstrbuf* formatString, uint32_t numArgs) +bool ffPrintFromCache(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs, uint32_t numArgs) { if(instance->config.recache) return false; - if(formatString == NULL || formatString->length == 0) - return printCachedValue(instance, moduleName, customKeyFormat); + if(moduleArgs->outputFormat.length == 0) + return printCachedValue(instance, moduleName, moduleArgs); else - return printCachedFormat(instance, moduleName, customKeyFormat, formatString, numArgs); + return printCachedFormat(instance, moduleName, moduleArgs, numArgs); } -void ffPrintAndAppendToCache(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, FFcache* cache, const FFstrbuf* value, const FFstrbuf* formatString, uint32_t numArgs, const FFformatarg* arguments) +void ffPrintAndAppendToCache(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFcache* cache, const FFstrbuf* value, uint32_t numArgs, const FFformatarg* arguments) { - if(formatString == NULL || formatString->length == 0) + if(moduleArgs->outputFormat.length == 0) { - ffPrintLogoAndKey(instance, moduleName, moduleIndex, customKeyFormat); + ffPrintLogoAndKey(instance, moduleName, moduleIndex, &moduleArgs->key); ffStrbufPutTo(value, stdout); } else { - ffPrintFormatString(instance, moduleName, moduleIndex, customKeyFormat, formatString, NULL, numArgs, arguments); + ffPrintFormat(instance, moduleName, moduleIndex, moduleArgs, numArgs, arguments); } if(cache->value != NULL) @@ -191,10 +191,10 @@ void ffPrintAndAppendToCache(FFinstance* instance, const char* moduleName, uint8 } } -void ffPrintAndWriteToCache(FFinstance* instance, const char* moduleName, const FFstrbuf* customKeyFormat, const FFstrbuf* value, const FFstrbuf* formatString, uint32_t numArgs, const FFformatarg* arguments) +void ffPrintAndWriteToCache(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs, const FFstrbuf* value, uint32_t numArgs, const FFformatarg* arguments) { FFcache cache; ffCacheOpenWrite(instance, moduleName, &cache); - ffPrintAndAppendToCache(instance, moduleName, 0, customKeyFormat, &cache, value, formatString, numArgs, arguments); + ffPrintAndAppendToCache(instance, moduleName, 0, moduleArgs, &cache, value, numArgs, arguments); ffCacheClose(&cache); } diff --git a/src/common/format.c b/src/common/format.c index d2077ff78..e3a912469 100644 --- a/src/common/format.c +++ b/src/common/format.c @@ -32,15 +32,6 @@ void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg) } } -static inline bool placeholderValueIsForError(const FFstrbuf* placeholderValue) -{ - return - ffStrbufIgnCaseCompS(placeholderValue, "e") == 0 || - ffStrbufIgnCaseCompS(placeholderValue, "error") == 0 || - ffStrbufIgnCaseCompS(placeholderValue, "0") == 0 - ; -} - static inline uint32_t getArgumentIndex(const FFstrbuf* placeholderValue) { uint32_t result = UINT32_MAX; @@ -82,7 +73,7 @@ static inline bool formatArgSet(const FFformatarg* arg) ); } -void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, const FFstrbuf* error, uint32_t numArgs, const FFformatarg* arguments) +void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, uint32_t numArgs, const FFformatarg* arguments) { uint32_t argCounter = 0; @@ -129,13 +120,6 @@ void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, const FFst while(i < formatstr->length && formatstr->chars[i] != '}') ffStrbufAppendC(&placeholderValue, formatstr->chars[i++]); - // test for error, if so print it - if(placeholderValueIsForError(&placeholderValue)) { - ffStrbufAppend(buffer, error); - ffStrbufDestroy(&placeholderValue); - continue; - } - // test if for stop, if so break the loop if(placeholderValue.length == 1 && placeholderValue.chars[0] == '-') { @@ -187,14 +171,6 @@ void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, const FFst { ffStrbufSubstrAfter(&placeholderValue, 0); - // continue if an error is set - if(placeholderValueIsForError(&placeholderValue) && error != NULL && error->length > 0) - { - ++numOpenIfs; - ffStrbufDestroy(&placeholderValue); - continue; - } - uint32_t index = getArgumentIndex(&placeholderValue); // testing for an invalid index @@ -224,14 +200,6 @@ void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, const FFst { ffStrbufSubstrAfter(&placeholderValue, 0); - //continue if an error os not set - if(placeholderValueIsForError(&placeholderValue) && (error == NULL || error->length == 0)) - { - ++numOpenNotIfs; - ffStrbufDestroy(&placeholderValue); - continue; - } - uint32_t index = getArgumentIndex(&placeholderValue); // testing for an invalid index diff --git a/src/common/init.c b/src/common/init.c index 607a389a3..27ba23f86 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -102,6 +102,13 @@ static void initState(FFstate* state) initCacheDir(state); } +static void initModuleArg(FFModuleArgs* args) +{ + ffStrbufInitA(&args->key, 0); + ffStrbufInitA(&args->outputFormat, 0); + ffStrbufInitA(&args->errorFormat, 0); +} + static void defaultConfig(FFinstance* instance) { ffStrbufInit(&instance->config.logoSource); @@ -128,74 +135,40 @@ static void defaultConfig(FFinstance* instance) instance->config.glType = FF_GL_TYPE_AUTO; instance->config.pipe = false; - ffStrbufInitA(&instance->config.osFormat, 0); - ffStrbufInitA(&instance->config.osKey, 0); - ffStrbufInitA(&instance->config.hostFormat, 0); - ffStrbufInitA(&instance->config.hostKey, 0); - ffStrbufInitA(&instance->config.kernelFormat, 0); - ffStrbufInitA(&instance->config.kernelKey, 0); - ffStrbufInitA(&instance->config.uptimeFormat, 0); - ffStrbufInitA(&instance->config.uptimeKey, 0); - ffStrbufInitA(&instance->config.processesFormat, 0); - ffStrbufInitA(&instance->config.processesKey, 0); - ffStrbufInitA(&instance->config.packagesFormat, 0); - ffStrbufInitA(&instance->config.packagesKey, 0); - ffStrbufInitA(&instance->config.shellFormat, 0); - ffStrbufInitA(&instance->config.shellKey, 0); - ffStrbufInitA(&instance->config.resolutionFormat, 0); - ffStrbufInitA(&instance->config.resolutionKey, 0); - ffStrbufInitA(&instance->config.deFormat, 0); - ffStrbufInitA(&instance->config.deKey, 0); - ffStrbufInitA(&instance->config.wmFormat, 0); - ffStrbufInitA(&instance->config.wmKey, 0); - ffStrbufInitA(&instance->config.wmThemeFormat, 0); - ffStrbufInitA(&instance->config.wmThemeKey, 0); - ffStrbufInitA(&instance->config.themeFormat, 0); - ffStrbufInitA(&instance->config.themeKey, 0); - ffStrbufInitA(&instance->config.iconsFormat, 0); - ffStrbufInitA(&instance->config.iconsKey, 0); - ffStrbufInitA(&instance->config.fontFormat, 0); - ffStrbufInitA(&instance->config.fontKey, 0); - ffStrbufInitA(&instance->config.cursorKey, 0); - ffStrbufInitA(&instance->config.cursorFormat, 0); - ffStrbufInitA(&instance->config.terminalFormat, 0); - ffStrbufInitA(&instance->config.terminalKey, 0); - ffStrbufInitA(&instance->config.termFontFormat, 0); - ffStrbufInitA(&instance->config.termFontKey, 0); - ffStrbufInitA(&instance->config.cpuFormat, 0); - ffStrbufInitA(&instance->config.cpuKey, 0); - ffStrbufInitA(&instance->config.cpuUsageFormat, 0); - ffStrbufInitA(&instance->config.cpuUsageKey, 0); - ffStrbufInitA(&instance->config.gpuFormat, 0); - ffStrbufInitA(&instance->config.gpuKey, 0); - ffStrbufInitA(&instance->config.memoryFormat, 0); - ffStrbufInitA(&instance->config.memoryKey, 0); - ffStrbufInitA(&instance->config.diskFormat, 0); - ffStrbufInitA(&instance->config.diskKey, 0); - ffStrbufInitA(&instance->config.batteryFormat, 0); - ffStrbufInitA(&instance->config.batteryKey, 0); - ffStrbufInitA(&instance->config.localeFormat, 0); - ffStrbufInitA(&instance->config.localeKey, 0); - ffStrbufInitA(&instance->config.localIpKey, 0); - ffStrbufInitA(&instance->config.localIpFormat, 0); - ffStrbufInitA(&instance->config.publicIpKey, 0); - ffStrbufInitA(&instance->config.publicIpFormat, 0); - ffStrbufInitA(&instance->config.playerKey, 0); - ffStrbufInitA(&instance->config.playerFormat, 0); - ffStrbufInitA(&instance->config.songKey, 0); - ffStrbufInitA(&instance->config.songFormat, 0); - ffStrbufInitA(&instance->config.dateTimeKey, 0); - ffStrbufInitA(&instance->config.dateTimeFormat, 0); - ffStrbufInitA(&instance->config.dateKey, 0); - ffStrbufInitA(&instance->config.dateFormat, 0); - ffStrbufInitA(&instance->config.timeKey, 0); - ffStrbufInitA(&instance->config.timeFormat, 0); - ffStrbufInitA(&instance->config.vulkanKey, 0); - ffStrbufInitA(&instance->config.vulkanFormat, 0); - ffStrbufInitA(&instance->config.openGLKey, 0); - ffStrbufInitA(&instance->config.openGLFormat, 0); - ffStrbufInitA(&instance->config.openCLKey, 0); - ffStrbufInitA(&instance->config.openCLFormat, 0); + initModuleArg(&instance->config.os); + initModuleArg(&instance->config.host); + initModuleArg(&instance->config.kernel); + initModuleArg(&instance->config.uptime); + initModuleArg(&instance->config.processes); + initModuleArg(&instance->config.packages); + initModuleArg(&instance->config.shell); + initModuleArg(&instance->config.resolution); + initModuleArg(&instance->config.de); + initModuleArg(&instance->config.wm); + initModuleArg(&instance->config.wmTheme); + initModuleArg(&instance->config.theme); + initModuleArg(&instance->config.icons); + initModuleArg(&instance->config.font); + initModuleArg(&instance->config.cursor); + initModuleArg(&instance->config.terminal); + initModuleArg(&instance->config.terminalFont); + initModuleArg(&instance->config.cpu); + initModuleArg(&instance->config.cpuUsage); + initModuleArg(&instance->config.gpu); + initModuleArg(&instance->config.memory); + initModuleArg(&instance->config.disk); + initModuleArg(&instance->config.battery); + initModuleArg(&instance->config.locale); + initModuleArg(&instance->config.localIP); + initModuleArg(&instance->config.publicIP); + initModuleArg(&instance->config.player); + initModuleArg(&instance->config.song); + initModuleArg(&instance->config.dateTime); + initModuleArg(&instance->config.date); + initModuleArg(&instance->config.time); + initModuleArg(&instance->config.vulkan); + initModuleArg(&instance->config.openGL); + initModuleArg(&instance->config.openCL); ffStrbufInitA(&instance->config.libPCI, 0); ffStrbufInitA(&instance->config.libVulkan, 0); diff --git a/src/common/printing.c b/src/common/printing.c index f09a5dc7a..0ed701344 100644 --- a/src/common/printing.c +++ b/src/common/printing.c @@ -10,6 +10,7 @@ void ffPrintLogoAndKey(FFinstance* instance, const char* moduleName, uint8_t mod ffPrintColor(&instance->config.mainColor); } + //NULL check is required for modules with custom keys, e.g. disk with the folder path if(customKeyFormat == NULL || customKeyFormat->length == 0) { fputs(moduleName, stdout); @@ -21,7 +22,7 @@ void ffPrintLogoAndKey(FFinstance* instance, const char* moduleName, uint8_t mod { FFstrbuf key; ffStrbufInit(&key); - ffParseFormatString(&key, customKeyFormat, NULL, 1, (FFformatarg[]){ + ffParseFormatString(&key, customKeyFormat, 1, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT8, &moduleIndex} }); ffStrbufWriteTo(&key, stdout); @@ -37,44 +38,12 @@ void ffPrintLogoAndKey(FFinstance* instance, const char* moduleName, uint8_t mod fputs(FASTFETCH_TEXT_MODIFIER_RESET, stdout); } -void ffPrintError(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* formatString, uint32_t numFormatArgs, const char* message, ...) -{ - if(!instance->config.showErrors) - return; - - va_list arguments; - va_start(arguments, message); - - if(formatString == NULL || formatString->length == 0) - { - ffPrintLogoAndKey(instance, moduleName, moduleIndex, customKeyFormat); - fputs(FASTFETCH_TEXT_MODIFIER_ERROR, stdout); - vprintf(message, arguments); - puts(FASTFETCH_TEXT_MODIFIER_RESET); - } - else - { - FF_STRBUF_CREATE(error); - ffStrbufAppendVF(&error, message, arguments); - - // calloc sets all to 0 and FF_FORMAT_ARG_TYPE_NULL also has value 0 so we don't need to explictly set it - FFformatarg* nullArgs = calloc(numFormatArgs, sizeof(FFformatarg)); - - ffPrintFormatString(instance, moduleName, moduleIndex, customKeyFormat, formatString, &error, numFormatArgs, nullArgs); - - free(nullArgs); - ffStrbufDestroy(&error); - } - - va_end(arguments); -} - -void ffPrintFormatString(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* formatString, const FFstrbuf* error, uint32_t numArgs, const FFformatarg* arguments) +void ffPrintFormatString(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* format, uint32_t numArgs, const FFformatarg* arguments) { FFstrbuf buffer; ffStrbufInitA(&buffer, 256); - ffParseFormatString(&buffer, formatString, error, numArgs, arguments); + ffParseFormatString(&buffer, format, numArgs, arguments); if(buffer.length > 0) { @@ -85,6 +54,59 @@ void ffPrintFormatString(FFinstance* instance, const char* moduleName, uint8_t m ffStrbufDestroy(&buffer); } +void ffPrintFormat(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, uint32_t numArgs, const FFformatarg* arguments) +{ + ffPrintFormatString(instance, moduleName, moduleIndex, &moduleArgs->key, &moduleArgs->outputFormat, numArgs, arguments); +} + +static void printError(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* customErrorFormat, const char* message, va_list arguments) +{ + bool hasCustomErrorFormat = customErrorFormat != NULL && customErrorFormat->length > 0; + if(!hasCustomErrorFormat && !instance->config.showErrors) + return; + + if(hasCustomErrorFormat) + { + FFstrbuf error; + ffStrbufInit(&error); + ffStrbufAppendVF(&error, message, arguments); + + ffPrintFormatString(instance, moduleName, moduleIndex, customKeyFormat, customErrorFormat, 1, (FFformatarg[]) { + {FF_FORMAT_ARG_TYPE_STRBUF, &error} + }); + + ffStrbufDestroy(&error); + } + else + { + ffPrintLogoAndKey(instance, moduleName, moduleIndex, customKeyFormat); + + if(!instance->config.pipe) + fputs(FASTFETCH_TEXT_MODIFIER_ERROR, stdout); + + vprintf(message, arguments); + + if(!instance->config.pipe) + puts(FASTFETCH_TEXT_MODIFIER_RESET); + } +} + +void ffPrintErrorString(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* customErrorFormat, const char* message, ...) +{ + va_list arguments; + va_start(arguments, message); + printError(instance, moduleName, moduleIndex, customKeyFormat, customErrorFormat, message, arguments); + va_end(arguments); +} + +void ffPrintError(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, const char* message, ...) +{ + va_list arguments; + va_start(arguments, message); + printError(instance, moduleName, moduleIndex, &moduleArgs->key, &moduleArgs->errorFormat, message, arguments); + va_end(arguments); +} + void ffPrintColor(const FFstrbuf* colorValue) { //If the color is not set, this would reset in \033[m, which resets everything. diff --git a/src/data/config.txt b/src/data/config.txt index 97acb8052..db0d7145c 100644 --- a/src/data/config.txt +++ b/src/data/config.txt @@ -237,6 +237,44 @@ #--opengl-format #--opencl-format +# Error options: +# Sets the format string to use if an error occured +# For information on format strings, see "fastfetch --help format". +# Each of them take the error as first and only argument. +# If one of them is set, the module will appear, even if --show-errors is not given. +#--os-error +#--host-error +#--kernel-error +#--uptime-error +#--processes-error +#--packages-error +#--shell-error +#--resolution-error +#--de-error +#--wm-error +#--wm-theme-error +#--theme-error +#--icons-error +#--font-error +#--cursor-error +#--terminal-error +#--terminal-font-error +#--cpu-error +#--cpu-usage-error +#--gpu-error +#--memory-error +#--disk-error +#--battery-error +#--locale-error +#--local-ip-error +#--public-ip-error +#--player-error +#--song-error +#--datetime-error +#--vulkan-error +#--opengl-error +#--opencl-error + # Library options: # Sets an user specific path to a library to load. # Must be a valid path to a library. diff --git a/src/data/help.txt b/src/data/help.txt index cc51455e1..73b99aa67 100644 --- a/src/data/help.txt +++ b/src/data/help.txt @@ -46,77 +46,17 @@ Display options: --disable-linewrap : weather to disable linewrap during the run --hide-cursor : weather to hide the cursor during the run -Format options: Provide the format string for custom output. Use fastfetch --help *-format for specific help. - --os-format - --host-format - --kernel-format - --uptime-format - --processes-format - --packages-format - --shell-format - --resolution-format - --de-format - --wm-format - --wm-theme-format - --theme-format - --icons-format - --font-format - --cursor-format - --terminal-format - --terminal-font-format - --cpu-format - --cpu-usage-format - --gpu-format - --memory-format - --disk-format - --battery-format - --locale-format - --local-ip-format - --public-ip-format - --player-format - --song-format - --datetime-format - --time-format - --date-format - --vulkan-format - --opengl-format - --opencl-format +General module options: + ---format : Sets the format string to use for each specific module. + To see how a format string works, use fastfetch --help format. + To see help about a specific format string, use fastfetch --help -format. -Key options: Provide a custom key for an output - --os-key - --host-key - --kernel-key - --uptime-key - --processes-key - --packages-key - --shell-key - --resolution-key : takes the resolution index as argument - --de-key - --wm-key - --wm-theme-key - --theme-key - --icons-key - --font-key - --cursor-key - --terminal-key - --terminal-font-key - --cpu-key - --cpu-usage-key - --gpu-key : takes the gpu index as format argument - --memory-key - --disk-key : takes the mount path as format argument - --battery-key : takes the battery index as format argument - --locale-key - --local-ip-key : takes the name of this network interface as format argument - --public-ip-key - --player-key - --song-key - --datetime-key - --time-key - --date-key - --vulkan-key - --opengl-key - --opencl-key + ---key : Sets the key to use for each specific module. + For modules which print multiple lines, the string is parsed as a format string with the index as first character. + + ---error : Sets the error format string to use for each specific module. + The error is given as the first and only argument. + Setting this for a module will cause it to appear, even if --show-errors is not given. Library options: Set the path of a library to load --lib-PCI diff --git a/src/data/help_format.txt b/src/data/help_format.txt index 6fc160477..87a4b1cc2 100644 --- a/src/data/help_format.txt +++ b/src/data/help_format.txt @@ -19,24 +19,18 @@ If a "{?}" is found without an opener, it is printed as is. To only print something if a variable is not set, do the same as with if, just replace every '?' with a '!'. For example to print a fallback for a second value if it is not set, use "{?2}{2}{?}{/2}Second value fallback{/}" -There is a special variable set if an error occured during detection. You can access it with "{e}", "{error}" o -You can use ifs and not ifs with it like with an index. For example use "{?e}some text{?}", to print a text if an - To stop formatting at any point in the format string, use "{-}". -For example to print an error instead of the normal output if it occured, prefix the format string with "{?e}{e}{- To print something with color, start a placeholder with a '#' and then the linux terminal color encoding. "\\033[" at the start, and an 'm' at the end is automatically added, so don't do that. A "{#}" is equivalent to a "{#0}" and resets everything to normal. For example to print something pink and underline, use "{#4;35}...{#}". -If not in a format string, fastfetch wraps errors with "{#1;31}error{#}", so you might want to do that to if you Information about what the numbers mean can be found here: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Sele Which escape codes are supported and how they look is defined by your terminal. If a format string evaluates to an empty value, the whole line in the output will be discarded. You can therefore use --host-format " " to disable host output. Note that --host-format "" would evaluate as not set, and therefore use the built-in host format -This can be used to print nothing if an error occured: prefix the format string with "{?e}{-}{?}...". Format string is also the way to go to set a fixed value - just use one without placeholders. For example when running in headless mode, you could use "--resolution-format "Preferred". diff --git a/src/fastfetch.c b/src/fastfetch.c index 241feb17a..58e39d9dd 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -889,146 +889,210 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con ffValuestoreSet(&data->valuestore, value, separator + 1); } - //////////////////////// - //Format + Key options// - //////////////////////// + //////////////////////////////// + //Format + Key + Error options// + //////////////////////////////// - else if(strcasecmp(key, "--os-format") == 0) - optionParseString(key, value, &instance->config.osFormat); else if(strcasecmp(key, "--os-key") == 0) - optionParseString(key, value, &instance->config.osKey); - else if(strcasecmp(key, "--host-format") == 0) - optionParseString(key, value, &instance->config.hostFormat); + optionParseString(key, value, &instance->config.os.key); + else if(strcasecmp(key, "--os-format") == 0) + optionParseString(key, value, &instance->config.os.outputFormat); + else if(strcasecmp(key, "--os-error") == 0) + optionParseString(key, value, &instance->config.os.errorFormat); else if(strcasecmp(key, "--host-key") == 0) - optionParseString(key, value, &instance->config.hostKey); - else if(strcasecmp(key, "--kernel-format") == 0) - optionParseString(key, value, &instance->config.kernelFormat); + optionParseString(key, value, &instance->config.host.key); + else if(strcasecmp(key, "--host-format") == 0) + optionParseString(key, value, &instance->config.host.outputFormat); + else if(strcasecmp(key, "--host-error") == 0) + optionParseString(key, value, &instance->config.host.errorFormat); else if(strcasecmp(key, "--kernel-key") == 0) - optionParseString(key, value, &instance->config.kernelKey); - else if(strcasecmp(key, "--uptime-format") == 0) - optionParseString(key, value, &instance->config.uptimeFormat); + optionParseString(key, value, &instance->config.kernel.key); + else if(strcasecmp(key, "--kernel-format") == 0) + optionParseString(key, value, &instance->config.kernel.outputFormat); + else if(strcasecmp(key, "--kernel-error") == 0) + optionParseString(key, value, &instance->config.kernel.errorFormat); else if(strcasecmp(key, "--uptime-key") == 0) - optionParseString(key, value, &instance->config.uptimeKey); - else if(strcasecmp(key, "--processes-format") == 0) - optionParseString(key, value, &instance->config.processesFormat); + optionParseString(key, value, &instance->config.uptime.key); + else if(strcasecmp(key, "--uptime-format") == 0) + optionParseString(key, value, &instance->config.uptime.outputFormat); + else if(strcasecmp(key, "--uptime-error") == 0) + optionParseString(key, value, &instance->config.uptime.errorFormat); else if(strcasecmp(key, "--processes-key") == 0) - optionParseString(key, value, &instance->config.processesKey); - else if(strcasecmp(key, "--packages-format") == 0) - optionParseString(key, value, &instance->config.packagesFormat); + optionParseString(key, value, &instance->config.processes.key); + else if(strcasecmp(key, "--processes-format") == 0) + optionParseString(key, value, &instance->config.processes.outputFormat); + else if(strcasecmp(key, "--processes-error") == 0) + optionParseString(key, value, &instance->config.processes.errorFormat); else if(strcasecmp(key, "--packages-key") == 0) - optionParseString(key, value, &instance->config.packagesKey); - else if(strcasecmp(key, "--shell-format") == 0) - optionParseString(key, value, &instance->config.shellFormat); + optionParseString(key, value, &instance->config.packages.key); + else if(strcasecmp(key, "--packages-format") == 0) + optionParseString(key, value, &instance->config.packages.outputFormat); + else if(strcasecmp(key, "--packages-error") == 0) + optionParseString(key, value, &instance->config.packages.errorFormat); else if(strcasecmp(key, "--shell-key") == 0) - optionParseString(key, value, &instance->config.shellKey); - else if(strcasecmp(key, "--resolution-format") == 0) - optionParseString(key, value, &instance->config.resolutionFormat); + optionParseString(key, value, &instance->config.shell.key); + else if(strcasecmp(key, "--shell-format") == 0) + optionParseString(key, value, &instance->config.shell.outputFormat); + else if(strcasecmp(key, "--shell-error") == 0) + optionParseString(key, value, &instance->config.shell.errorFormat); else if(strcasecmp(key, "--resolution-key") == 0) - optionParseString(key, value, &instance->config.resolutionKey); - else if(strcasecmp(key, "--de-format") == 0) - optionParseString(key, value, &instance->config.deFormat); + optionParseString(key, value, &instance->config.resolution.key); + else if(strcasecmp(key, "--resolution-format") == 0) + optionParseString(key, value, &instance->config.resolution.outputFormat); + else if(strcasecmp(key, "--resolution-error") == 0) + optionParseString(key, value, &instance->config.resolution.errorFormat); else if(strcasecmp(key, "--de-key") == 0) - optionParseString(key, value, &instance->config.deKey); - else if(strcasecmp(key, "--wm-format") == 0) - optionParseString(key, value, &instance->config.wmFormat); + optionParseString(key, value, &instance->config.de.key); + else if(strcasecmp(key, "--de-format") == 0) + optionParseString(key, value, &instance->config.de.outputFormat); + else if(strcasecmp(key, "--de-error") == 0) + optionParseString(key, value, &instance->config.de.errorFormat); else if(strcasecmp(key, "--wm-key") == 0) - optionParseString(key, value, &instance->config.wmKey); - else if(strcasecmp(key, "--wm-theme-format") == 0) - optionParseString(key, value, &instance->config.wmThemeFormat); + optionParseString(key, value, &instance->config.wm.key); + else if(strcasecmp(key, "--wm-format") == 0) + optionParseString(key, value, &instance->config.wm.outputFormat); + else if(strcasecmp(key, "--wm-error") == 0) + optionParseString(key, value, &instance->config.wm.errorFormat); else if(strcasecmp(key, "--wm-theme-key") == 0) - optionParseString(key, value, &instance->config.wmThemeKey); - else if(strcasecmp(key, "--theme-format") == 0) - optionParseString(key, value, &instance->config.themeFormat); + optionParseString(key, value, &instance->config.wmTheme.key); + else if(strcasecmp(key, "--wm-theme-format") == 0) + optionParseString(key, value, &instance->config.wmTheme.outputFormat); + else if(strcasecmp(key, "--wm-theme-error") == 0) + optionParseString(key, value, &instance->config.wmTheme.errorFormat); else if(strcasecmp(key, "--theme-key") == 0) - optionParseString(key, value, &instance->config.themeKey); - else if(strcasecmp(key, "--icons-format") == 0) - optionParseString(key, value, &instance->config.iconsFormat); + optionParseString(key, value, &instance->config.theme.key); + else if(strcasecmp(key, "--theme-format") == 0) + optionParseString(key, value, &instance->config.theme.outputFormat); + else if(strcasecmp(key, "--theme-error") == 0) + optionParseString(key, value, &instance->config.theme.errorFormat); else if(strcasecmp(key, "--icons-key") == 0) - optionParseString(key, value, &instance->config.iconsKey); - else if(strcasecmp(key, "--font-format") == 0) - optionParseString(key, value, &instance->config.fontFormat); + optionParseString(key, value, &instance->config.icons.key); + else if(strcasecmp(key, "--icons-format") == 0) + optionParseString(key, value, &instance->config.icons.outputFormat); + else if(strcasecmp(key, "--icons-error") == 0) + optionParseString(key, value, &instance->config.icons.errorFormat); else if(strcasecmp(key, "--font-key") == 0) - optionParseString(key, value, &instance->config.fontKey); + optionParseString(key, value, &instance->config.font.key); + else if(strcasecmp(key, "--font-format") == 0) + optionParseString(key, value, &instance->config.font.outputFormat); + else if(strcasecmp(key, "--font-error") == 0) + optionParseString(key, value, &instance->config.font.errorFormat); else if(strcasecmp(key, "--cursor-key") == 0) - optionParseString(key, value, &instance->config.cursorKey); + optionParseString(key, value, &instance->config.cursor.key); else if(strcasecmp(key, "--cursor-format") == 0) - optionParseString(key, value, &instance->config.cursorFormat); - else if(strcasecmp(key, "--terminal-format") == 0) - optionParseString(key, value, &instance->config.terminalFormat); + optionParseString(key, value, &instance->config.cursor.outputFormat); + else if(strcasecmp(key, "--cursor-error") == 0) + optionParseString(key, value, &instance->config.cursor.errorFormat); else if(strcasecmp(key, "--terminal-key") == 0) - optionParseString(key, value, &instance->config.terminalKey); - else if(strcasecmp(key, "--terminal-font-format") == 0) - optionParseString(key, value, &instance->config.termFontFormat); + optionParseString(key, value, &instance->config.terminal.key); + else if(strcasecmp(key, "--terminal-format") == 0) + optionParseString(key, value, &instance->config.terminal.outputFormat); + else if(strcasecmp(key, "--terminal-error") == 0) + optionParseString(key, value, &instance->config.terminal.errorFormat); else if(strcasecmp(key, "--terminal-font-key") == 0) - optionParseString(key, value, &instance->config.termFontKey); - else if(strcasecmp(key, "--cpu-format") == 0) - optionParseString(key, value, &instance->config.cpuFormat); - else if(strcasecmp(key, "--cpu-usage-format") == 0) - optionParseString(key, value, &instance->config.cpuUsageFormat); + optionParseString(key, value, &instance->config.terminalFont.key); + else if(strcasecmp(key, "--terminal-font-format") == 0) + optionParseString(key, value, &instance->config.terminalFont.outputFormat); + else if(strcasecmp(key, "--terminal-font-error") == 0) + optionParseString(key, value, &instance->config.terminalFont.errorFormat); else if(strcasecmp(key, "--cpu-key") == 0) - optionParseString(key, value, &instance->config.cpuKey); + optionParseString(key, value, &instance->config.cpu.key); + else if(strcasecmp(key, "--cpu-format") == 0) + optionParseString(key, value, &instance->config.cpu.outputFormat); + else if(strcasecmp(key, "--cpu-error") == 0) + optionParseString(key, value, &instance->config.cpu.errorFormat); else if(strcasecmp(key, "--cpu-usage-key") == 0) - optionParseString(key, value, &instance->config.cpuUsageKey); - else if(strcasecmp(key, "--gpu-format") == 0) - optionParseString(key, value, &instance->config.gpuFormat); + optionParseString(key, value, &instance->config.cpuUsage.key); + else if(strcasecmp(key, "--cpu-usage-format") == 0) + optionParseString(key, value, &instance->config.cpuUsage.outputFormat); + else if(strcasecmp(key, "--cpu-usage-error") == 0) + optionParseString(key, value, &instance->config.cpuUsage.errorFormat); else if(strcasecmp(key, "--gpu-key") == 0) - optionParseString(key, value, &instance->config.gpuKey); - else if(strcasecmp(key, "--memory-format") == 0) - optionParseString(key, value, &instance->config.memoryFormat); + optionParseString(key, value, &instance->config.gpu.key); else if(strcasecmp(key, "--memory-key") == 0) - optionParseString(key, value, &instance->config.memoryKey); - else if(strcasecmp(key, "--disk-format") == 0) - optionParseString(key, value, &instance->config.diskFormat); + optionParseString(key, value, &instance->config.memory.key); + else if(strcasecmp(key, "--memory-format") == 0) + optionParseString(key, value, &instance->config.memory.outputFormat); + else if(strcasecmp(key, "--memory-error") == 0) + optionParseString(key, value, &instance->config.memory.errorFormat); else if(strcasecmp(key, "--disk-key") == 0) - optionParseString(key, value, &instance->config.diskKey); - else if(strcasecmp(key, "--battery-format") == 0) - optionParseString(key, value, &instance->config.batteryFormat); + optionParseString(key, value, &instance->config.disk.key); + else if(strcasecmp(key, "--disk-format") == 0) + optionParseString(key, value, &instance->config.disk.outputFormat); + else if(strcasecmp(key, "--disk-error") == 0) + optionParseString(key, value, &instance->config.disk.errorFormat); else if(strcasecmp(key, "--battery-key") == 0) - optionParseString(key, value, &instance->config.batteryKey); - else if(strcasecmp(key, "--locale-format") == 0) - optionParseString(key, value, &instance->config.localeFormat); + optionParseString(key, value, &instance->config.battery.key); + else if(strcasecmp(key, "--battery-format") == 0) + optionParseString(key, value, &instance->config.battery.outputFormat); + else if(strcasecmp(key, "--battery-error") == 0) + optionParseString(key, value, &instance->config.battery.errorFormat); else if(strcasecmp(key, "--locale-key") == 0) - optionParseString(key, value, &instance->config.localeKey); + optionParseString(key, value, &instance->config.locale.key); + else if(strcasecmp(key, "--locale-format") == 0) + optionParseString(key, value, &instance->config.locale.outputFormat); + else if(strcasecmp(key, "--locale-error") == 0) + optionParseString(key, value, &instance->config.locale.errorFormat); else if(strcasecmp(key, "--local-ip-key") == 0) - optionParseString(key, value, &instance->config.localIpKey); + optionParseString(key, value, &instance->config.localIP.key); else if(strcasecmp(key, "--local-ip-format") == 0) - optionParseString(key, value, &instance->config.localIpFormat); + optionParseString(key, value, &instance->config.localIP.outputFormat); + else if(strcasecmp(key, "--local-ip-error") == 0) + optionParseString(key, value, &instance->config.localIP.errorFormat); else if(strcasecmp(key, "--public-ip-key") == 0) - optionParseString(key, value, &instance->config.publicIpKey); + optionParseString(key, value, &instance->config.publicIP.key); else if(strcasecmp(key, "--public-ip-format") == 0) - optionParseString(key, value, &instance->config.publicIpFormat); + optionParseString(key, value, &instance->config.publicIP.outputFormat); + else if(strcasecmp(key, "--public-ip-error") == 0) + optionParseString(key, value, &instance->config.publicIP.errorFormat); else if(strcasecmp(key, "--player-key") == 0) - optionParseString(key, value, &instance->config.playerKey); + optionParseString(key, value, &instance->config.player.key); else if(strcasecmp(key, "--player-format") == 0) - optionParseString(key, value, &instance->config.playerFormat); + optionParseString(key, value, &instance->config.player.outputFormat); + else if(strcasecmp(key, "--player-error") == 0) + optionParseString(key, value, &instance->config.player.errorFormat); else if(strcasecmp(key, "--song-key") == 0) - optionParseString(key, value, &instance->config.songKey); + optionParseString(key, value, &instance->config.song.key); else if(strcasecmp(key, "--song-format") == 0) - optionParseString(key, value, &instance->config.songFormat); - else if(strcasecmp(key, "--datetime-key") == 0) - optionParseString(key, value, &instance->config.dateTimeKey); - else if(strcasecmp(key, "--datetime-format") == 0) - optionParseString(key, value, &instance->config.dateTimeFormat); + optionParseString(key, value, &instance->config.song.outputFormat); + else if(strcasecmp(key, "--song-error") == 0) + optionParseString(key, value, &instance->config.song.errorFormat); + else if(strcasecmp(key, "--date-time-key") == 0) + optionParseString(key, value, &instance->config.dateTime.key); + else if(strcasecmp(key, "--date-time-format") == 0) + optionParseString(key, value, &instance->config.dateTime.outputFormat); + else if(strcasecmp(key, "--date-time-error") == 0) + optionParseString(key, value, &instance->config.dateTime.errorFormat); else if(strcasecmp(key, "--date-key") == 0) - optionParseString(key, value, &instance->config.dateKey); + optionParseString(key, value, &instance->config.date.key); else if(strcasecmp(key, "--date-format") == 0) - optionParseString(key, value, &instance->config.dateFormat); + optionParseString(key, value, &instance->config.date.outputFormat); + else if(strcasecmp(key, "--date-error") == 0) + optionParseString(key, value, &instance->config.date.errorFormat); else if(strcasecmp(key, "--time-key") == 0) - optionParseString(key, value, &instance->config.timeKey); + optionParseString(key, value, &instance->config.time.key); else if(strcasecmp(key, "--time-format") == 0) - optionParseString(key, value, &instance->config.timeFormat); + optionParseString(key, value, &instance->config.time.outputFormat); + else if(strcasecmp(key, "--time-error") == 0) + optionParseString(key, value, &instance->config.time.errorFormat); else if(strcasecmp(key, "--vulkan-key") == 0) - optionParseString(key, value, &instance->config.vulkanKey); + optionParseString(key, value, &instance->config.vulkan.key); else if(strcasecmp(key, "--vulkan-format") == 0) - optionParseString(key, value, &instance->config.vulkanFormat); + optionParseString(key, value, &instance->config.vulkan.outputFormat); + else if(strcasecmp(key, "--vulkan-error") == 0) + optionParseString(key, value, &instance->config.vulkan.errorFormat); else if(strcasecmp(key, "--opengl-key") == 0) - optionParseString(key, value, &instance->config.openGLKey); + optionParseString(key, value, &instance->config.openGL.key); else if(strcasecmp(key, "--opengl-format") == 0) - optionParseString(key, value, &instance->config.openGLFormat); + optionParseString(key, value, &instance->config.openGL.outputFormat); + else if(strcasecmp(key, "--opengl-error") == 0) + optionParseString(key, value, &instance->config.openGL.errorFormat); else if(strcasecmp(key, "--opencl-key") == 0) - optionParseString(key, value, &instance->config.openCLKey); + optionParseString(key, value, &instance->config.openCL.key); else if(strcasecmp(key, "--opencl-format") == 0) - optionParseString(key, value, &instance->config.openCLFormat); + optionParseString(key, value, &instance->config.openCL.outputFormat); + else if(strcasecmp(key, "--opencl-error") == 0) + optionParseString(key, value, &instance->config.openCL.errorFormat); /////////////////// //Library options// diff --git a/src/fastfetch.h b/src/fastfetch.h index 9b814c658..265b93ae1 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -50,6 +50,13 @@ typedef enum FFGLType FF_GL_TYPE_OSMESA } FFGLType; +typedef struct FFModuleArgs +{ + FFstrbuf key; + FFstrbuf outputFormat; + FFstrbuf errorFormat; +} FFModuleArgs; + typedef struct FFconfig { FFstrbuf logoSource; @@ -74,74 +81,40 @@ typedef struct FFconfig FFGLType glType; bool pipe; //disables logo and all escape sequences - FFstrbuf osFormat; - FFstrbuf osKey; - FFstrbuf hostFormat; - FFstrbuf hostKey; - FFstrbuf kernelFormat; - FFstrbuf kernelKey; - FFstrbuf uptimeFormat; - FFstrbuf uptimeKey; - FFstrbuf processesFormat; - FFstrbuf processesKey; - FFstrbuf packagesFormat; - FFstrbuf packagesKey; - FFstrbuf shellFormat; - FFstrbuf shellKey; - FFstrbuf resolutionFormat; - FFstrbuf resolutionKey; - FFstrbuf deFormat; - FFstrbuf deKey; - FFstrbuf wmFormat; - FFstrbuf wmKey; - FFstrbuf wmThemeFormat; - FFstrbuf wmThemeKey; - FFstrbuf themeFormat; - FFstrbuf themeKey; - FFstrbuf iconsFormat; - FFstrbuf iconsKey; - FFstrbuf fontFormat; - FFstrbuf fontKey; - FFstrbuf cursorFormat; - FFstrbuf cursorKey; - FFstrbuf terminalFormat; - FFstrbuf terminalKey; - FFstrbuf termFontFormat; - FFstrbuf termFontKey; - FFstrbuf cpuFormat; - FFstrbuf cpuKey; - FFstrbuf cpuUsageFormat; - FFstrbuf cpuUsageKey; - FFstrbuf gpuFormat; - FFstrbuf gpuKey; - FFstrbuf memoryFormat; - FFstrbuf memoryKey; - FFstrbuf diskFormat; - FFstrbuf diskKey; - FFstrbuf batteryFormat; - FFstrbuf batteryKey; - FFstrbuf localeFormat; - FFstrbuf localeKey; - FFstrbuf localIpKey; - FFstrbuf localIpFormat; - FFstrbuf publicIpKey; - FFstrbuf publicIpFormat; - FFstrbuf playerKey; - FFstrbuf playerFormat; - FFstrbuf songKey; - FFstrbuf songFormat; - FFstrbuf dateTimeKey; - FFstrbuf dateTimeFormat; - FFstrbuf dateKey; - FFstrbuf dateFormat; - FFstrbuf timeKey; - FFstrbuf timeFormat; - FFstrbuf vulkanKey; - FFstrbuf vulkanFormat; - FFstrbuf openGLKey; - FFstrbuf openGLFormat; - FFstrbuf openCLKey; - FFstrbuf openCLFormat; + FFModuleArgs os; + FFModuleArgs host; + FFModuleArgs kernel; + FFModuleArgs uptime; + FFModuleArgs processes; + FFModuleArgs packages; + FFModuleArgs shell; + FFModuleArgs resolution; + FFModuleArgs de; + FFModuleArgs wm; + FFModuleArgs wmTheme; + FFModuleArgs theme; + FFModuleArgs icons; + FFModuleArgs font; + FFModuleArgs cursor; + FFModuleArgs terminal; + FFModuleArgs terminalFont; + FFModuleArgs cpu; + FFModuleArgs cpuUsage; + FFModuleArgs gpu; + FFModuleArgs memory; + FFModuleArgs disk; + FFModuleArgs battery; + FFModuleArgs locale; + FFModuleArgs localIP; + FFModuleArgs publicIP; + FFModuleArgs player; + FFModuleArgs song; + FFModuleArgs dateTime; + FFModuleArgs date; + FFModuleArgs time; + FFModuleArgs vulkan; + FFModuleArgs openGL; + FFModuleArgs openCL; FFstrbuf libPCI; FFstrbuf libVulkan; @@ -457,8 +430,10 @@ void ffGetTerminalResponse(const char* request, const char* format, ...); //common/printing.c void ffPrintLogoAndKey(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat); -void ffPrintError(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* formatString, uint32_t numFormatArgs, const char* message, ...); -void ffPrintFormatString(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* formatString, const FFstrbuf* error, uint32_t numArgs, const FFformatarg* arguments); +void ffPrintFormatString(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* format, uint32_t numArgs, const FFformatarg* arguments); +void ffPrintFormat(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, uint32_t numArgs, const FFformatarg* arguments); +void ffPrintErrorString(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, const FFstrbuf* customErrorFormat, const char* message, ...); +void ffPrintError(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, const char* message, ...); void ffPrintColor(const FFstrbuf* colorValue); void ffPrintCharTimes(char c, uint32_t times); @@ -468,9 +443,9 @@ void ffCacheValidate(FFinstance* instance); void ffCacheOpenWrite(FFinstance* instance, const char* moduleName, FFcache* cache); void ffCacheClose(FFcache* cache); -bool ffPrintFromCache(FFinstance* instance, const char* moduleName, const FFstrbuf* customKeyFormat, const FFstrbuf* formatString, uint32_t numArgs); -void ffPrintAndAppendToCache(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFstrbuf* customKeyFormat, FFcache* cache, const FFstrbuf* value, const FFstrbuf* formatString, uint32_t numArgs, const FFformatarg* arguments); -void ffPrintAndWriteToCache(FFinstance* instance, const char* moduleName, const FFstrbuf* customKeyFormat, const FFstrbuf* value, const FFstrbuf* formatString, uint32_t numArgs, const FFformatarg* arguments); +bool ffPrintFromCache(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs, uint32_t numArgs); +void ffPrintAndAppendToCache(FFinstance* instance, const char* moduleName, uint8_t moduleIndex, const FFModuleArgs* moduleArgs, FFcache* cache, const FFstrbuf* value, uint32_t numArgs, const FFformatarg* arguments); +void ffPrintAndWriteToCache(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs, const FFstrbuf* value, uint32_t numArgs, const FFformatarg* arguments); //common/properties.c bool ffParsePropLine(const char* line, const char* start, FFstrbuf* buffer); @@ -490,7 +465,7 @@ void ffFontDestroy(FFfont* font); //common/format.c void ffFormatAppendFormatArg(FFstrbuf* buffer, const FFformatarg* formatarg); -void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, const FFstrbuf* error, uint32_t numArgs, const FFformatarg* arguments); +void ffParseFormatString(FFstrbuf* buffer, const FFstrbuf* formatstr, uint32_t numArgs, const FFformatarg* arguments); //common/parsing.c bool ffStrSet(const char* str); @@ -573,7 +548,7 @@ const FFVulkanResult* ffDetectVulkan(const FFinstance* instance); //Common const FFTitleResult* ffDetectTitle(FFinstance* instance); -void ffPrintDateTimeFormat(FFinstance* instance, const char* moduleName, const FFstrbuf* key, const FFstrbuf* format); +void ffPrintDateTimeFormat(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs); //Printing diff --git a/src/modules/battery.c b/src/modules/battery.c index 1b7847d9c..b0745c03a 100644 --- a/src/modules/battery.c +++ b/src/modules/battery.c @@ -3,6 +3,8 @@ #include #include +#include + #define FF_BATTERY_MODULE_NAME "Battery" #define FF_BATTERY_NUM_FORMAT_ARGS 5 @@ -85,9 +87,9 @@ static void parseBattery(FFstrbuf* dir, FFlist* results) static void printBattery(FFinstance* instance, const BatteryResult* result, uint8_t index) { - if(instance->config.batteryFormat.length == 0) + if(instance->config.battery.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_BATTERY_MODULE_NAME, index, &instance->config.batteryKey); + ffPrintLogoAndKey(instance, FF_BATTERY_MODULE_NAME, index, &instance->config.battery.key); bool showStatus = result->status.length > 0 && @@ -114,7 +116,7 @@ static void printBattery(FFinstance* instance, const BatteryResult* result, uint } else { - ffPrintFormatString(instance, FF_BATTERY_MODULE_NAME, index, &instance->config.batteryKey, &instance->config.batteryFormat, NULL, FF_BATTERY_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_BATTERY_MODULE_NAME, index, &instance->config.battery, FF_BATTERY_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->manufacturer}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->modelName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->technology}, @@ -144,7 +146,7 @@ void ffPrintBattery(FFinstance* instance) DIR* dirp = opendir(baseDir.chars); if(dirp == NULL) { - ffPrintError(instance, FF_BATTERY_MODULE_NAME, 0, &instance->config.batteryKey, &instance->config.batteryFormat, FF_BATTERY_NUM_FORMAT_ARGS, "opendir(\"%s\") == NULL", baseDir.chars); + ffPrintError(instance, FF_BATTERY_MODULE_NAME, 0, &instance->config.battery, "opendir(\"%s\") == NULL", baseDir.chars); ffStrbufDestroy(&baseDir); return; } @@ -175,7 +177,7 @@ void ffPrintBattery(FFinstance* instance) } if(results.length == 0) - ffPrintError(instance, FF_BATTERY_MODULE_NAME, 0, &instance->config.batteryKey, &instance->config.batteryFormat, FF_BATTERY_NUM_FORMAT_ARGS, "%s doesn't contain any battery folder", baseDir.chars); + ffPrintError(instance, FF_BATTERY_MODULE_NAME, 0, &instance->config.battery, "%s doesn't contain any battery folder", baseDir.chars); ffListDestroy(&results); ffStrbufDestroy(&baseDir); diff --git a/src/modules/cpu.c b/src/modules/cpu.c index be1b5bfdf..f1684ebb1 100644 --- a/src/modules/cpu.c +++ b/src/modules/cpu.c @@ -29,13 +29,13 @@ static double getGhz(const char* policyFile, const char* cpuFile) void ffPrintCPU(FFinstance* instance) { - if(ffPrintFromCache(instance, FF_CPU_MODULE_NAME, &instance->config.cpuKey, &instance->config.cpuFormat, FF_CPU_NUM_FORMAT_ARGS)) + if(ffPrintFromCache(instance, FF_CPU_MODULE_NAME, &instance->config.cpu, FF_CPU_NUM_FORMAT_ARGS)) return; FILE* cpuinfo = fopen("/proc/cpuinfo", "r"); if(cpuinfo == NULL) { - ffPrintError(instance, FF_CPU_MODULE_NAME, 0, &instance->config.cpuKey, &instance->config.cpuFormat, FF_CPU_NUM_FORMAT_ARGS, "fopen(\"""/proc/cpuinfo\", \"r\") == NULL"); + ffPrintError(instance, FF_CPU_MODULE_NAME, 0, &instance->config.cpu, "fopen(\"""/proc/cpuinfo\", \"r\") == NULL"); return; } @@ -122,7 +122,7 @@ void ffPrintCPU(FFinstance* instance) ) { ffStrbufDestroy(&name); ffStrbufDestroy(&vendor); - ffPrintError(instance, FF_CPU_MODULE_NAME, 0, &instance->config.cpuKey, &instance->config.cpuFormat, FF_CPU_NUM_FORMAT_ARGS, "No CPU info found in /proc/cpuinfo"); + ffPrintError(instance, FF_CPU_MODULE_NAME, 0, &instance->config.cpu, "No CPU info found in /proc/cpuinfo"); return; } @@ -185,7 +185,7 @@ void ffPrintCPU(FFinstance* instance) if(ghz > 0) ffStrbufAppendF(&cpu, " @ %.9gGHz", ghz); - ffPrintAndWriteToCache(instance, FF_CPU_MODULE_NAME, &instance->config.cpuKey, &cpu, &instance->config.cpuFormat, FF_CPU_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintAndWriteToCache(instance, FF_CPU_MODULE_NAME, &instance->config.cpu, &cpu, FF_CPU_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &name}, {FF_FORMAT_ARG_TYPE_STRBUF, &namePretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &vendor}, diff --git a/src/modules/cpuUsage.c b/src/modules/cpuUsage.c index 8f98ea84a..854abae58 100644 --- a/src/modules/cpuUsage.c +++ b/src/modules/cpuUsage.c @@ -12,7 +12,7 @@ void ffPrintCPUUsage(FFinstance* instance) FILE* procStat = fopen("/proc/stat", "r"); if(procStat == NULL) { - ffPrintError(instance, FF_CPU_USAGE_MODULE_NAME, 0, &instance->config.cpuUsageKey, &instance->config.cpuUsageFormat, FF_CPU_USAGE_NUM_FORMAT_ARGS, "fopen(\"""/proc/stat\", \"r\") == NULL"); + ffPrintError(instance, FF_CPU_USAGE_MODULE_NAME, 0, &instance->config.cpu, "fopen(\"""/proc/stat\", \"r\") == NULL"); return; } if (fscanf(procStat, "cpu%ld%ld%ld%ld%ld%ld%ld", &user, &nice, &system, &idle, &iowait, &irq, &softirq) < 0) goto exit; @@ -31,15 +31,15 @@ void ffPrintCPUUsage(FFinstance* instance) long totalOverPeriod = totalJiffies2 - totalJiffies1; double cpuPercent = (double)workOverPeriod / (double)totalOverPeriod * 100; - if(instance->config.cpuUsageFormat.length == 0) + if(instance->config.cpuUsage.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_CPU_USAGE_MODULE_NAME, 0, &instance->config.cpuUsageKey); + ffPrintLogoAndKey(instance, FF_CPU_USAGE_MODULE_NAME, 0, &instance->config.cpuUsage.key); printf("%.2lf%%\n", cpuPercent); } else { - ffPrintFormatString(instance, FF_CPU_USAGE_MODULE_NAME, 0, &instance->config.cpuUsageKey, &instance->config.cpuUsageFormat, NULL, FF_CPU_USAGE_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_CPU_USAGE_MODULE_NAME, 0, &instance->config.cpuUsage, FF_CPU_USAGE_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_DOUBLE, &cpuPercent} }); } diff --git a/src/modules/cursor.c b/src/modules/cursor.c index 9665a82be..8d1e191d1 100644 --- a/src/modules/cursor.c +++ b/src/modules/cursor.c @@ -12,9 +12,9 @@ static void printCursor(FFinstance* instance, FFstrbuf* cursorTheme, const FFstr if(cursorTheme->length == 0) ffStrbufAppendS(cursorTheme, "default"); - if(instance->config.cursorFormat.length == 0) + if(instance->config.cursor.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursorKey); + ffPrintLogoAndKey(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor.key); ffStrbufWriteTo(cursorTheme, stdout); if(cursorSize != NULL && cursorSize->length > 0) @@ -28,7 +28,7 @@ static void printCursor(FFinstance* instance, FFstrbuf* cursorTheme, const FFstr } else { - ffPrintFormatString(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursorKey, &instance->config.cursorFormat, NULL, FF_CURSOR_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, FF_CURSOR_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, cursorTheme}, {FF_FORMAT_ARG_TYPE_STRBUF, cursorSize} }); @@ -47,7 +47,7 @@ static void printCursorGTK(FFinstance* instance) if(gtk->cursor.length == 0) { - ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursorKey, &instance->config.cursorFormat, FF_CURSOR_NUM_FORMAT_ARGS, "Couldn't detect GTK Cursor"); + ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, "Couldn't detect GTK Cursor"); return; } @@ -69,7 +69,7 @@ static void printCursorXFCE(FFinstance* instance) if(cursorTheme.length == 0) { - ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursorKey, &instance->config.cursorFormat, FF_CURSOR_NUM_FORMAT_ARGS, "Couldn't find xfce cursor in xfconf (xsettings::/Gtk/CursorThemeName)"); + ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, "Couldn't find xfce cursor in xfconf (xsettings::/Gtk/CursorThemeName)"); return; } @@ -105,7 +105,7 @@ static void printCursorFromConfigFile(FFinstance* instance, const char* relative } if(cursorTheme.length == 0) - ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursorKey, &instance->config.cursorFormat, FF_CURSOR_NUM_FORMAT_ARGS, "Couldn't find cursor in %s", relativeFilePath); + ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, "Couldn't find cursor in %s", relativeFilePath); else printCursor(instance, &cursorTheme, &cursorSize); @@ -185,7 +185,7 @@ static bool printCursorFromEnv(FFinstance* instance) void ffPrintCursor(FFinstance* instance) { #ifdef __ANDROID__ - ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursorKey, &instance->config.cursorFormat, FF_CURSOR_NUM_FORMAT_ARGS, "Cursor detection is not supported on Android"); + ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, "Cursor detection is not supported on Android"); return; #endif @@ -193,7 +193,7 @@ void ffPrintCursor(FFinstance* instance) if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, "TTY") == 0) { - ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursorKey, &instance->config.cursorFormat, FF_CURSOR_NUM_FORMAT_ARGS, "Cursor isn't supported in TTY"); + ffPrintError(instance, FF_CURSOR_MODULE_NAME, 0, &instance->config.cursor, "Cursor isn't supported in TTY"); return; } diff --git a/src/modules/date.c b/src/modules/date.c index 075acf7eb..f232ef4d1 100644 --- a/src/modules/date.c +++ b/src/modules/date.c @@ -4,14 +4,14 @@ void ffPrintDate(FFinstance* instance) { - if(instance->config.dateFormat.length > 0) + if(instance->config.date.outputFormat.length > 0) { - ffPrintDateTimeFormat(instance, FF_DATE_MODULE_NAME, &instance->config.dateKey, &instance->config.dateFormat); + ffPrintDateTimeFormat(instance, FF_DATE_MODULE_NAME, &instance->config.date); return; } const FFDateTimeResult* datetime = ffDetectDateTime(instance); - ffPrintLogoAndKey(instance, FF_DATE_MODULE_NAME, 0, &instance->config.dateKey); + ffPrintLogoAndKey(instance, FF_DATE_MODULE_NAME, 0, &instance->config.date.key); //yyyy-mm-dd printf("%u-%s-%u\n", datetime->year, datetime->monthPretty.chars, datetime->dayInMonth); diff --git a/src/modules/datetime.c b/src/modules/datetime.c index dad574e32..bd6a7c278 100644 --- a/src/modules/datetime.c +++ b/src/modules/datetime.c @@ -3,10 +3,10 @@ #define FF_DATETIME_MODULE_NAME "Date & Time" #define FF_DATETIME_NUM_FORMAT_ARGS 20 -void ffPrintDateTimeFormat(FFinstance* instance, const char* moduleName, const FFstrbuf* key, const FFstrbuf* format) +void ffPrintDateTimeFormat(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs) { const FFDateTimeResult* result = ffDetectDateTime(instance); - ffPrintFormatString(instance, moduleName, 0, key, format, NULL, FF_DATETIME_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintFormat(instance, moduleName, 0, moduleArgs, FF_DATETIME_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_UINT16, &result->year}, {FF_FORMAT_ARG_TYPE_UINT8, &result->yearShort}, {FF_FORMAT_ARG_TYPE_UINT8, &result->month}, @@ -32,14 +32,14 @@ void ffPrintDateTimeFormat(FFinstance* instance, const char* moduleName, const F void ffPrintDateTime(FFinstance* instance) { - if(instance->config.dateTimeFormat.length > 0) + if(instance->config.dateTime.outputFormat.length > 0) { - ffPrintDateTimeFormat(instance, FF_DATETIME_MODULE_NAME, &instance->config.dateTimeKey, &instance->config.dateTimeFormat); + ffPrintDateTimeFormat(instance, FF_DATETIME_MODULE_NAME, &instance->config.dateTime); return; } const FFDateTimeResult* datetime = ffDetectDateTime(instance); - ffPrintLogoAndKey(instance, FF_DATETIME_MODULE_NAME, 0, &instance->config.dateTimeKey); + ffPrintLogoAndKey(instance, FF_DATETIME_MODULE_NAME, 0, &instance->config.dateTime.key); //yyyy-mm-dd hh:mm:ss printf("%u-%s-%u %s:%s:%s\n", datetime->year, datetime->monthPretty.chars, datetime->dayInMonth, datetime->hourPretty.chars, datetime->minutePretty.chars, datetime->secondPretty.chars); diff --git a/src/modules/de.c b/src/modules/de.c index 47a95da91..05374afbd 100644 --- a/src/modules/de.c +++ b/src/modules/de.c @@ -8,7 +8,7 @@ void ffPrintDesktopEnvironment(FFinstance* instance) { #ifdef __ANDROID__ - ffPrintError(instance, FF_DE_MODULE_NAME, 0, &instance->config.deKey, &instance->config.deFormat, FF_DE_NUM_FORMAT_ARGS, "DE detection is not supported on Android"); + ffPrintError(instance, FF_DE_MODULE_NAME, 0, &instance->config.de "DE detection is not supported on Android"); return; #endif @@ -16,13 +16,13 @@ void ffPrintDesktopEnvironment(FFinstance* instance) if(result->dePrettyName.length == 0) { - ffPrintError(instance, FF_DE_MODULE_NAME, 0, &instance->config.deKey, &instance->config.deFormat, FF_DE_NUM_FORMAT_ARGS, "No DE found"); + ffPrintError(instance, FF_DE_MODULE_NAME, 0, &instance->config.de, "No DE found"); return; } - if(instance->config.deFormat.length == 0) + if(instance->config.de.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_DE_MODULE_NAME, 0, &instance->config.deKey); + ffPrintLogoAndKey(instance, FF_DE_MODULE_NAME, 0, &instance->config.de.key); ffStrbufWriteTo(&result->dePrettyName, stdout); @@ -36,7 +36,7 @@ void ffPrintDesktopEnvironment(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_DE_MODULE_NAME, 0, &instance->config.deKey, &instance->config.deFormat, NULL, FF_DE_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_DE_MODULE_NAME, 0, &instance->config.de, FF_DE_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->deProcessName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->dePrettyName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->deVersion} diff --git a/src/modules/disk.c b/src/modules/disk.c index 4515d051d..a2bf7814b 100644 --- a/src/modules/disk.c +++ b/src/modules/disk.c @@ -7,7 +7,7 @@ static void getKey(FFinstance* instance, FFstrbuf* key, const char* folderPath, bool showFolderPath) { - if(instance->config.diskKey.length == 0) + if(instance->config.disk.key.length == 0) { if(showFolderPath) ffStrbufAppendF(key, FF_DISK_MODULE_NAME" (%s)", folderPath); @@ -16,7 +16,7 @@ static void getKey(FFinstance* instance, FFstrbuf* key, const char* folderPath, } else { - ffParseFormatString(key, &instance->config.diskKey, NULL, 1, (FFformatarg[]){ + ffParseFormatString(key, &instance->config.disk.key, 1, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, folderPath} }); } @@ -33,14 +33,14 @@ static void printStatvfs(FFinstance* instance, FFstrbuf* key, struct statvfs* fs uint32_t files = (uint32_t) (fs->f_files - fs->f_ffree); - if(instance->config.diskFormat.length == 0) + if(instance->config.disk.outputFormat.length == 0) { ffPrintLogoAndKey(instance, key->chars, 0, NULL); printf("%uGiB / %uGiB (%u%%)\n", used, total, percentage); } else { - ffPrintFormatString(instance, key->chars, 0, NULL, &instance->config.diskFormat, NULL, FF_DISK_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormatString(instance, key->chars, 0, NULL, &instance->config.disk.outputFormat, FF_DISK_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &used}, {FF_FORMAT_ARG_TYPE_UINT, &total}, {FF_FORMAT_ARG_TYPE_UINT, &files}, @@ -64,9 +64,9 @@ static void printFolder(FFinstance* instance, const char* folderPath) struct statvfs fs; int ret = statvfs(folderPath, &fs); - if(ret != 0 && instance->config.diskFormat.length == 0) + if(ret != 0 && instance->config.disk.outputFormat.length == 0) { - ffPrintError(instance, key.chars, 0, NULL, &instance->config.diskFormat, FF_DISK_NUM_FORMAT_ARGS, "statvfs(\"%s\", &fs) != 0 (%i)", folderPath, ret); + ffPrintErrorString(instance, key.chars, 0, NULL, &instance->config.disk.errorFormat, "statvfs(\"%s\", &fs) != 0 (%i)", folderPath, ret); ffStrbufDestroy(&key); return; } @@ -89,7 +89,7 @@ void ffPrintDisk(FFinstance* instance) { FF_STRBUF_CREATE(key); getKey(instance, &key, "", false); - ffPrintError(instance, key.chars, 0, NULL, &instance->config.diskFormat, FF_DISK_NUM_FORMAT_ARGS, "statvfs failed for both / and " FASTFETCH_TARGET_DIR_HOME); + ffPrintErrorString(instance, key.chars, 0, NULL, &instance->config.disk.errorFormat, "statvfs failed for both / and " FASTFETCH_TARGET_DIR_HOME); ffStrbufDestroy(&key); return; } @@ -108,7 +108,7 @@ void ffPrintDisk(FFinstance* instance) { FF_STRBUF_CREATE(key); getKey(instance, &key, "", false); - ffPrintError(instance, key.chars, 0, NULL, &instance->config.diskFormat, FF_DISK_NUM_FORMAT_ARGS, "Custom disk folders string doesn't contain any folders"); + ffPrintErrorString(instance, key.chars, 0, NULL, &instance->config.disk.errorFormat, "Custom disk folders string doesn't contain any folders"); ffStrbufDestroy(&key); return; } diff --git a/src/modules/font.c b/src/modules/font.c index 28b54f8c3..173aa0569 100644 --- a/src/modules/font.c +++ b/src/modules/font.c @@ -6,7 +6,7 @@ void ffPrintFont(FFinstance* instance) { #ifdef __ANDROID__ - ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, FF_FONT_NUM_FORMAT_ARGS, "Font detection is not supported on Android"); + ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, "Font detection is not supported on Android"); return; #endif @@ -14,7 +14,7 @@ void ffPrintFont(FFinstance* instance) if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, "TTY") == 0) { - ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, FF_FONT_NUM_FORMAT_ARGS, "Font isn't supported in TTY"); + ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, "Font isn't supported in TTY"); return; } @@ -25,7 +25,7 @@ void ffPrintFont(FFinstance* instance) if(plasmaRaw->length == 0 && gtk2Raw->length == 0 && gtk3Raw->length == 0 && gtk4Raw->length == 0) { - ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, FF_FONT_NUM_FORMAT_ARGS, "No fonts found"); + ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, "No fonts found"); return; } @@ -45,9 +45,9 @@ void ffPrintFont(FFinstance* instance) ffStrbufInitA(>k, 64); ffParseGTK(>k, >k2.pretty, >k3.pretty, >k4.pretty); - if(instance->config.fontFormat.length == 0) + if(instance->config.font.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey); + ffPrintLogoAndKey(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font.key); if(plasma.pretty.length > 0) { ffStrbufWriteTo(&plasma.pretty, stdout); @@ -60,7 +60,7 @@ void ffPrintFont(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, NULL, FF_FONT_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, FF_FONT_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, plasmaRaw}, {FF_FORMAT_ARG_TYPE_STRBUF, &plasma.name}, {FF_FORMAT_ARG_TYPE_STRBUF, &plasma.size}, diff --git a/src/modules/gpu.c b/src/modules/gpu.c index 05506109b..9cc079426 100644 --- a/src/modules/gpu.c +++ b/src/modules/gpu.c @@ -33,7 +33,7 @@ static void printGPUResult(FFinstance* instance, uint8_t index, FFcache* cache, ffStrbufAppend(&gpu, &namePretty); - ffPrintAndAppendToCache(instance, FF_GPU_MODULE_NAME, index, &instance->config.gpuKey, cache, &gpu, &instance->config.gpuFormat, FF_GPU_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintAndAppendToCache(instance, FF_GPU_MODULE_NAME, index, &instance->config.gpu, cache, &gpu, FF_GPU_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->vendor}, {FF_FORMAT_ARG_TYPE_STRING, vendorPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->name}, @@ -129,7 +129,7 @@ static bool pciPrintGPUs(FFinstance* instance) ffStrbufRecalculateLength(&result->name); ffStrbufInit(&result->driver); - if(instance->config.gpuFormat.length > 0) //We only need it for the format string, so don't detect it if it isn't needed + if(instance->config.gpu.outputFormat.length > 0) //We only need it for the format string, so don't detect it if it isn't needed pciGetDriver(dev, &result->driver, ffpci_get_param); }; } @@ -163,7 +163,7 @@ static bool vulkanPrintGPUs(FFinstance* instance) void ffPrintGPU(FFinstance* instance) { - if(ffPrintFromCache(instance, FF_GPU_MODULE_NAME, &instance->config.gpuKey, &instance->config.gpuFormat, FF_GPU_NUM_FORMAT_ARGS)) + if(ffPrintFromCache(instance, FF_GPU_MODULE_NAME, &instance->config.gpu, FF_GPU_NUM_FORMAT_ARGS)) return; #ifdef FF_HAVE_LIBPCI @@ -174,5 +174,5 @@ void ffPrintGPU(FFinstance* instance) if(vulkanPrintGPUs(instance)) return; - ffPrintError(instance, FF_GPU_MODULE_NAME, 0, &instance->config.gpuKey, &instance->config.gpuFormat, FF_GPU_NUM_FORMAT_ARGS, "No GPUs found."); + ffPrintError(instance, FF_GPU_MODULE_NAME, 0, &instance->config.gpu, "No GPUs found."); } diff --git a/src/modules/host.c b/src/modules/host.c index e5d6f2ab1..092e51176 100644 --- a/src/modules/host.c +++ b/src/modules/host.c @@ -44,7 +44,7 @@ static void getHostValue(const char* devicesPath, const char* classPath, FFstrbu void ffPrintHost(FFinstance* instance) { - if(ffPrintFromCache(instance, FF_HOST_MODULE_NAME, &instance->config.hostKey, &instance->config.hostFormat, FF_HOST_NUM_FORMAT_ARGS)) + if(ffPrintFromCache(instance, FF_HOST_MODULE_NAME, &instance->config.host, FF_HOST_NUM_FORMAT_ARGS)) return; FFstrbuf product_family; @@ -96,7 +96,7 @@ void ffPrintHost(FFinstance* instance) { ffStrbufDestroy(&product_family); ffStrbufDestroy(&product_name); - ffPrintError(instance, FF_HOST_MODULE_NAME, 0, &instance->config.hostKey, &instance->config.hostFormat, FF_HOST_NUM_FORMAT_ARGS, "neither product_family nor product_name is set by O.E.M."); + ffPrintError(instance, FF_HOST_MODULE_NAME, 0, &instance->config.host, "neither product_family nor product_name is set by O.E.M."); return; } @@ -141,7 +141,7 @@ void ffPrintHost(FFinstance* instance) ffStrbufAppend(&host, &product_version); } - ffPrintAndWriteToCache(instance, FF_HOST_MODULE_NAME, &instance->config.hostKey, &host, &instance->config.hostFormat, FF_HOST_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintAndWriteToCache(instance, FF_HOST_MODULE_NAME, &instance->config.host, &host, FF_HOST_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &product_family}, {FF_FORMAT_ARG_TYPE_STRBUF, &product_name}, {FF_FORMAT_ARG_TYPE_STRBUF, &product_version}, diff --git a/src/modules/icons.c b/src/modules/icons.c index fd299f8a0..d1908a6c4 100644 --- a/src/modules/icons.c +++ b/src/modules/icons.c @@ -6,7 +6,7 @@ void ffPrintIcons(FFinstance* instance) { #ifdef __ANDROID__ - ffPrintError(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.iconsKey, &instance->config.iconsFormat, FF_ICONS_NUM_FORMAT_ARGS, "Icons detection is not supported on Android"); + ffPrintError(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.icons, "Icons detection is not supported on Android"); return; #endif @@ -14,7 +14,7 @@ void ffPrintIcons(FFinstance* instance) if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, "TTY") == 0) { - ffPrintError(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, FF_ICONS_NUM_FORMAT_ARGS, "Icons aren't supported in TTY"); + ffPrintError(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.icons, "Icons aren't supported in TTY"); return; } @@ -25,16 +25,16 @@ void ffPrintIcons(FFinstance* instance) if(plasma->length == 0 && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0) { - ffPrintError(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.iconsKey, &instance->config.iconsFormat, FF_ICONS_NUM_FORMAT_ARGS, "No icons could be found"); + ffPrintError(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.icons, "No icons could be found"); return; } FF_STRBUF_CREATE(gtkPretty); ffParseGTK(>kPretty, gtk2, gtk3, gtk4); - if(instance->config.iconsFormat.length == 0) + if(instance->config.icons.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.iconsKey); + ffPrintLogoAndKey(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.icons.key); if(plasma->length > 0) { @@ -49,7 +49,7 @@ void ffPrintIcons(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.iconsKey, &instance->config.iconsFormat, NULL, FF_ICONS_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_ICONS_MODULE_NAME, 0, &instance->config.icons, FF_ICONS_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, plasma}, {FF_FORMAT_ARG_TYPE_STRBUF, gtk2}, {FF_FORMAT_ARG_TYPE_STRBUF, gtk3}, diff --git a/src/modules/kernel.c b/src/modules/kernel.c index 867284690..9b66b665d 100644 --- a/src/modules/kernel.c +++ b/src/modules/kernel.c @@ -5,14 +5,14 @@ void ffPrintKernel(FFinstance* instance) { - if(instance->config.kernelFormat.length == 0) + if(instance->config.kernel.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_KERNEL_MODULE_NAME, 0, &instance->config.kernelKey); + ffPrintLogoAndKey(instance, FF_KERNEL_MODULE_NAME, 0, &instance->config.kernel.key); puts(instance->state.utsname.release); } else { - ffPrintFormatString(instance, FF_KERNEL_MODULE_NAME, 0, &instance->config.kernelKey, &instance->config.kernelFormat, NULL, FF_KERNEL_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_KERNEL_MODULE_NAME, 0, &instance->config.kernel, FF_KERNEL_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, instance->state.utsname.sysname}, {FF_FORMAT_ARG_TYPE_STRING, instance->state.utsname.release}, {FF_FORMAT_ARG_TYPE_STRING, instance->state.utsname.version} diff --git a/src/modules/locale.c b/src/modules/locale.c index 1c2fd6bf1..c226ddd31 100644 --- a/src/modules/locale.c +++ b/src/modules/locale.c @@ -22,7 +22,7 @@ static void getLocaleFromEnv(FFstrbuf* locale) void ffPrintLocale(FFinstance* instance) { - if(ffPrintFromCache(instance, FF_LOCALE_MODULE_NAME, &instance->config.localeKey, &instance->config.localeFormat, FF_LOCALE_NUM_FORMAT_ARGS)) + if(ffPrintFromCache(instance, FF_LOCALE_MODULE_NAME, &instance->config.locale, FF_LOCALE_NUM_FORMAT_ARGS)) return; FFstrbuf locale; @@ -45,11 +45,11 @@ void ffPrintLocale(FFinstance* instance) if(locale.length == 0) { - ffPrintError(instance, FF_LOCALE_MODULE_NAME, 0, &instance->config.localeKey, &instance->config.localeFormat, FF_LOCALE_NUM_FORMAT_ARGS, "No locale found"); + ffPrintError(instance, FF_LOCALE_MODULE_NAME, 0, &instance->config.locale, "No locale found"); return; } - ffPrintAndWriteToCache(instance, FF_LOCALE_MODULE_NAME, &instance->config.localeKey, &locale, &instance->config.localeFormat, FF_LOCALE_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintAndWriteToCache(instance, FF_LOCALE_MODULE_NAME, &instance->config.locale, &locale, FF_LOCALE_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &locale} }); diff --git a/src/modules/localip.c b/src/modules/localip.c index e32e61d09..f5590376d 100644 --- a/src/modules/localip.c +++ b/src/modules/localip.c @@ -11,21 +11,28 @@ static void printValue(FFinstance* instance, const char* ifaName, const char* addressBuffer) { - FF_STRBUF_CREATE(key); + FFstrbuf key; + ffStrbufInit(&key); - if (instance->config.localIpKey.length == 0) { + if (instance->config.localIP.key.length == 0) + { ffStrbufAppendF(&key, FF_LOCALIP_MODULE_NAME " (%s)", ifaName); - } else { - ffParseFormatString(&key, &instance->config.localIpKey, NULL, 1, (FFformatarg[]){ + } + else + { + ffParseFormatString(&key, &instance->config.localIP.key, 1, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, ifaName} }); } - if (instance->config.localIpFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_LOCALIP_MODULE_NAME, 0, &key); + if (instance->config.localIP.outputFormat.length == 0) + { + ffPrintLogoAndKey(instance, key.chars, 0, NULL); puts(addressBuffer); - } else { - ffPrintFormatString(instance, FF_LOCALIP_MODULE_NAME, 0, &key, &instance->config.localIpFormat, NULL, FF_LOCALIP_NUM_FORMAT_ARGS, (FFformatarg[]){ + } + else + { + ffPrintFormatString(instance, key.chars, 0, NULL, &instance->config.localIP.outputFormat, FF_LOCALIP_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, addressBuffer} }); } @@ -38,7 +45,7 @@ void ffPrintLocalIp(FFinstance* instance) struct ifaddrs* ifAddrStruct = NULL; int ret = getifaddrs(&ifAddrStruct); if (ret < 0) { - ffPrintError(instance, FF_LOCALIP_MODULE_NAME, 0, &instance->config.localIpKey, &instance->config.localIpFormat, FF_LOCALIP_NUM_FORMAT_ARGS, "getifaddrs(&ifAddrStruct) < 0 (%i)", ret); + ffPrintError(instance, FF_LOCALIP_MODULE_NAME, 0, &instance->config.localIP, "getifaddrs(&ifAddrStruct) < 0 (%i)", ret); return; } diff --git a/src/modules/memory.c b/src/modules/memory.c index 4e9ce6515..dd6ff0771 100644 --- a/src/modules/memory.c +++ b/src/modules/memory.c @@ -8,7 +8,7 @@ void ffPrintMemory(FFinstance* instance) { FILE* meminfo = fopen("/proc/meminfo", "r"); if(meminfo == NULL) { - ffPrintError(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memoryKey, &instance->config.memoryFormat, FF_MEMORY_NUM_FORMAT_ARGS, "fopen(\"""/proc/meminfo\", \"r\") == NULL"); + ffPrintError(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memory, "fopen(\"""/proc/meminfo\", \"r\") == NULL"); return; } @@ -42,18 +42,18 @@ void ffPrintMemory(FFinstance* instance) if(used_mem == 0 && total_mem == 0 && percentage == 0) { - ffPrintError(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memoryKey, &instance->config.memoryFormat, FF_MEMORY_NUM_FORMAT_ARGS, "/proc/meminfo could't be parsed"); + ffPrintError(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memory, "/proc/meminfo could't be parsed"); return; } - if(instance->config.memoryFormat.length == 0) + if(instance->config.memory.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memoryKey); + ffPrintLogoAndKey(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memory.key); printf("%uMiB / %uMiB (%u%%)\n", used_mem, total_mem, percentage); } else { - ffPrintFormatString(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memoryKey, &instance->config.memoryFormat, NULL, FF_MEMORY_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_MEMORY_MODULE_NAME, 0, &instance->config.memory, FF_MEMORY_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &used_mem}, {FF_FORMAT_ARG_TYPE_UINT, &total_mem}, {FF_FORMAT_ARG_TYPE_UINT8, &percentage} diff --git a/src/modules/opencl.c b/src/modules/opencl.c index 212b36771..a64964a17 100644 --- a/src/modules/opencl.c +++ b/src/modules/opencl.c @@ -44,14 +44,14 @@ static const char* openCLHandelData(FFinstance* instance, OpenCLData* data) char vendor[32]; data->ffclGetDeviceInfo(deviceID, CL_DEVICE_VENDOR, sizeof(vendor), vendor, NULL); - if(instance->config.openCLFormat.length == 0) + if(instance->config.openCL.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_OPENCL_MODULE_NAME, 0, &instance->config.openCLKey); + ffPrintLogoAndKey(instance, FF_OPENCL_MODULE_NAME, 0, &instance->config.openCL.key); puts(version); } else { - ffPrintFormatString(instance, FF_OPENCL_MODULE_NAME, 0, &instance->config.openCLKey, &instance->config.openCLFormat, NULL, FF_OPENCL_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintFormat(instance, FF_OPENCL_MODULE_NAME, 0, &instance->config.openCL, FF_OPENCL_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRING, version}, {FF_FORMAT_ARG_TYPE_STRING, device}, {FF_FORMAT_ARG_TYPE_STRING, vendor} @@ -87,5 +87,5 @@ void ffPrintOpenCL(FFinstance* instance) #endif if(error != NULL) - ffPrintError(instance, FF_OPENCL_MODULE_NAME, 0, &instance->config.openCLKey, &instance->config.openCLFormat, FF_OPENCL_NUM_FORMAT_ARGS, error); + ffPrintError(instance, FF_OPENCL_MODULE_NAME, 0, &instance->config.openCL, error); } diff --git a/src/modules/opengl.c b/src/modules/opengl.c index 873bab2e5..88e2768b2 100644 --- a/src/modules/opengl.c +++ b/src/modules/opengl.c @@ -27,14 +27,14 @@ static const char* glHandlePrint(FFinstance* instance, const GLData* data) const char* vendor = (const char*) data->ffglGetString(GL_VENDOR); const char* slv = (const char*) data->ffglGetString(GL_SHADING_LANGUAGE_VERSION); - if(instance->config.openGLFormat.length == 0) + if(instance->config.openGL.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_OPENGL_MODULE_NAME, 0, &instance->config.openGLKey); + ffPrintLogoAndKey(instance, FF_OPENGL_MODULE_NAME, 0, &instance->config.openGL.key); puts(version); } else { - ffPrintFormatString(instance, FF_OPENGL_MODULE_NAME, 0, &instance->config.openGLKey, &instance->config.openGLFormat, NULL, FF_OPENGL_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintFormat(instance, FF_OPENGL_MODULE_NAME, 0, &instance->config.openGL, FF_OPENGL_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRING, version}, {FF_FORMAT_ARG_TYPE_STRING, renderer}, {FF_FORMAT_ARG_TYPE_STRING, vendor}, @@ -388,5 +388,5 @@ void ffPrintOpenGL(FFinstance* instance) #endif if(error != NULL) - ffPrintError(instance, FF_OPENGL_MODULE_NAME, 0, &instance->config.openGLKey, &instance->config.openGLFormat, FF_OPENGL_NUM_FORMAT_ARGS, error); + ffPrintError(instance, FF_OPENGL_MODULE_NAME, 0, &instance->config.openGL, error); } diff --git a/src/modules/os.c b/src/modules/os.c index 2e721fd05..0cbe41c27 100644 --- a/src/modules/os.c +++ b/src/modules/os.c @@ -9,7 +9,7 @@ void ffPrintOS(FFinstance* instance) if(result->name.length == 0 && result->prettyName.length == 0) { - ffPrintError(instance, FF_OS_MODULE_NAME, 0, &instance->config.osKey, &instance->config.osFormat, FF_OS_NUM_FORMAT_ARGS, "Could not detect OS"); + ffPrintError(instance, FF_OS_MODULE_NAME, 0, &instance->config.os, "Could not detect OS"); return; } @@ -66,14 +66,14 @@ void ffPrintOS(FFinstance* instance) ffStrbufAppendC(&os, ']'); } - if(instance->config.osFormat.length == 0) + if(instance->config.os.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_OS_MODULE_NAME, 0, &instance->config.osKey); + ffPrintLogoAndKey(instance, FF_OS_MODULE_NAME, 0, &instance->config.os.key); ffStrbufPutTo(&os, stdout); } else { - ffPrintFormatString(instance, FF_OS_MODULE_NAME, 0, &instance->config.osKey, &instance->config.osFormat, NULL, FF_OS_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_OS_MODULE_NAME, 0, &instance->config.os, FF_OS_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->systemName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->prettyName}, diff --git a/src/modules/packages.c b/src/modules/packages.c index 5f7c96ce9..12c89f6fd 100644 --- a/src/modules/packages.c +++ b/src/modules/packages.c @@ -289,13 +289,13 @@ void ffPrintPackages(FFinstance* instance) uint32_t all = counts.dpkg + counts.emerge + counts.flatpak + counts.nixDefault + nixUser + counts.pacman + counts.rpm + counts.snap + counts.xbps; if(all == 0) { - ffPrintError(instance, FF_PACKAGES_MODULE_NAME, 0, &instance->config.packagesKey, &instance->config.packagesFormat, FF_PACKAGES_NUM_FORMAT_ARGS, "No packages from known package managers found"); + ffPrintError(instance, FF_PACKAGES_MODULE_NAME, 0, &instance->config.packages, "No packages from known package managers found"); return; } - if(instance->config.packagesFormat.length == 0) + if(instance->config.packages.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_PACKAGES_MODULE_NAME, 0, &instance->config.packagesKey); + ffPrintLogoAndKey(instance, FF_PACKAGES_MODULE_NAME, 0, &instance->config.packages.key); #define FF_PRINT_PACKAGE(name) \ if(counts.name > 0) \ @@ -344,7 +344,7 @@ void ffPrintPackages(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_PACKAGES_MODULE_NAME, 0, &instance->config.packagesKey, &instance->config.packagesFormat, NULL, FF_PACKAGES_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_PACKAGES_MODULE_NAME, 0, &instance->config.packages, FF_PACKAGES_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &all}, {FF_FORMAT_ARG_TYPE_UINT, &counts.pacman}, {FF_FORMAT_ARG_TYPE_STRBUF, &counts.pacmanBranch}, diff --git a/src/modules/player.c b/src/modules/player.c index 2da9f9d9b..a161f4b65 100644 --- a/src/modules/player.c +++ b/src/modules/player.c @@ -11,7 +11,7 @@ void ffPrintPlayer(FFinstance* instance) if(media->player.length == 0) { - ffPrintError(instance, FF_PLAYER_MODULE_NAME, 0, &instance->config.playerKey, &instance->config.playerFormat, FF_PLAYER_NUM_FORMAT_ARGS, "No media player found"); + ffPrintError(instance, FF_PLAYER_MODULE_NAME, 0, &instance->config.player, "No media player found"); return; } @@ -50,14 +50,14 @@ void ffPrintPlayer(FFinstance* instance) if(playerPrettyIsCustom) ffStrbufAppendC(&playerPretty, ')'); - if(instance->config.playerFormat.length == 0) + if(instance->config.player.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_PLAYER_MODULE_NAME, 0, &instance->config.playerKey); + ffPrintLogoAndKey(instance, FF_PLAYER_MODULE_NAME, 0, &instance->config.player.key); ffStrbufPutTo(&playerPretty, stdout); } else { - ffPrintFormatString(instance, FF_PLAYER_MODULE_NAME, 0, &instance->config.playerKey, &instance->config.playerFormat, NULL, FF_PLAYER_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_PLAYER_MODULE_NAME, 0, &instance->config.player, FF_PLAYER_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &playerPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->player}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->busNameShort} diff --git a/src/modules/processes.c b/src/modules/processes.c index ff697dfee..eb0467f51 100644 --- a/src/modules/processes.c +++ b/src/modules/processes.c @@ -5,15 +5,15 @@ void ffPrintProcesses(FFinstance* instance) { - if(instance->config.processesFormat.length == 0) + if(instance->config.processes.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_PROCESSES_MODULE_NAME, 0, &instance->config.processesKey); + ffPrintLogoAndKey(instance, FF_PROCESSES_MODULE_NAME, 0, &instance->config.processes.key); printf("%hu\n", instance->state.sysinfo.procs); } else { - ffPrintFormatString(instance, FF_PROCESSES_MODULE_NAME, 0, &instance->config.processesKey, &instance->config.processesFormat, NULL, FF_PROCESSES_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_PROCESSES_MODULE_NAME, 0, &instance->config.processes, FF_PROCESSES_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT16, &instance->state.sysinfo.procs} }); } diff --git a/src/modules/publicip.c b/src/modules/publicip.c index f48aa20d9..b93fde1e2 100644 --- a/src/modules/publicip.c +++ b/src/modules/publicip.c @@ -12,18 +12,18 @@ void ffPrintPublicIp(FFinstance* instance) if(result.length == 0) { - ffPrintError(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIpKey, &instance->config.publicIpFormat, FF_PUBLICIP_NUM_FORMAT_ARGS, "Failed to connect to an IP detection server"); + ffPrintError(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIP, "Failed to connect to an IP detection server"); return; } - if(instance->config.publicIpFormat.length == 0) + if(instance->config.publicIP.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIpKey); + ffPrintLogoAndKey(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIP.key); ffStrbufPutTo(&result, stdout); } else { - ffPrintFormatString(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIpKey, &instance->config.publicIpFormat, NULL, FF_PUBLICIP_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintFormat(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIP, FF_PUBLICIP_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result} }); } diff --git a/src/modules/resolution.c b/src/modules/resolution.c index bb9305e3c..83ff4103e 100644 --- a/src/modules/resolution.c +++ b/src/modules/resolution.c @@ -17,9 +17,9 @@ void ffPrintResolution(FFinstance* instance) FFResolutionResult* result = ffListGet(&dsResult->resolutions, i); uint8_t moduleIndex = dsResult->resolutions.length == 1 ? 0 : (uint8_t) (i + 1); - if(instance->config.resolutionFormat.length == 0) + if(instance->config.resolution.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_RESOLUTION_MODULE_NAME, moduleIndex, &instance->config.resolutionKey); + ffPrintLogoAndKey(instance, FF_RESOLUTION_MODULE_NAME, moduleIndex, &instance->config.resolution.key); printf("%ix%i", result->width, result->height); if(result->refreshRate > 0) @@ -29,7 +29,7 @@ void ffPrintResolution(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_RESOLUTION_MODULE_NAME, moduleIndex, &instance->config.resolutionKey, &instance->config.resolutionFormat, NULL, FF_RESOLUTION_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintFormat(instance, FF_RESOLUTION_MODULE_NAME, moduleIndex, &instance->config.resolution, FF_RESOLUTION_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_INT, &result->width}, {FF_FORMAT_ARG_TYPE_INT, &result->height}, {FF_FORMAT_ARG_TYPE_INT, &result->refreshRate} @@ -38,5 +38,5 @@ void ffPrintResolution(FFinstance* instance) } if(dsResult->resolutions.length == 0) - ffPrintError(instance, FF_RESOLUTION_MODULE_NAME, 0, &instance->config.resolutionKey, &instance->config.resolutionFormat, FF_RESOLUTION_NUM_FORMAT_ARGS, "Couldn't detect resolution"); + ffPrintError(instance, FF_RESOLUTION_MODULE_NAME, 0, &instance->config.resolution, "Couldn't detect resolution"); } diff --git a/src/modules/shell.c b/src/modules/shell.c index 7e340165d..4f7cfe5c4 100644 --- a/src/modules/shell.c +++ b/src/modules/shell.c @@ -12,13 +12,13 @@ void ffPrintShell(FFinstance* instance) if(result->shellProcessName.length == 0) { - ffPrintError(instance, FF_SHELL_MODULE_NAME, 0, &instance->config.shellKey, &instance->config.shellFormat, FF_SHELL_NUM_FORMAT_ARGS, "Couldn't detect shell"); + ffPrintError(instance, FF_SHELL_MODULE_NAME, 0, &instance->config.shell, "Couldn't detect shell"); return; } - if(instance->config.shellFormat.length == 0) + if(instance->config.shell.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_SHELL_MODULE_NAME, 0, &instance->config.shellKey); + ffPrintLogoAndKey(instance, FF_SHELL_MODULE_NAME, 0, &instance->config.shell.key); fputs(result->shellExeName, stdout); if(result->shellVersion.length > 0) @@ -31,7 +31,7 @@ void ffPrintShell(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_SHELL_MODULE_NAME, 0, &instance->config.shellKey, &instance->config.shellFormat, NULL, FF_SHELL_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintFormat(instance, FF_SHELL_MODULE_NAME, 0, &instance->config.shell, FF_SHELL_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &result->shellProcessName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->shellExe}, {FF_FORMAT_ARG_TYPE_STRING, result->shellExeName}, diff --git a/src/modules/song.c b/src/modules/song.c index ed38f57ac..6a38bbc56 100644 --- a/src/modules/song.c +++ b/src/modules/song.c @@ -46,7 +46,7 @@ void ffPrintSong(FFinstance* instance) if(media->song.length == 0) { - ffPrintError(instance, FF_SONG_MODULE_NAME, 0, &instance->config.songKey, &instance->config.songFormat, FF_SONG_NUM_FORMAT_ARGS, "No song detected"); + ffPrintError(instance, FF_SONG_MODULE_NAME, 0, &instance->config.song, "No song detected"); return; } @@ -67,7 +67,7 @@ void ffPrintSong(FFinstance* instance) if(songPretty.length == 0) ffStrbufAppend(&songPretty, &media->song); - if(instance->config.songFormat.length == 0) + if(instance->config.song.outputFormat.length == 0) { //We don't expose artistPretty to the format, as it might be empty (when the think that the artist is already in the song title) FFstrbuf artistPretty; @@ -79,7 +79,7 @@ void ffPrintSong(FFinstance* instance) if(artistInSongTitle(&songPretty, &artistPretty)) ffStrbufClear(&artistPretty); - ffPrintLogoAndKey(instance, FF_SONG_MODULE_NAME, 0, &instance->config.songKey); + ffPrintLogoAndKey(instance, FF_SONG_MODULE_NAME, 0, &instance->config.song.key); if(artistPretty.length > 0) { @@ -98,7 +98,7 @@ void ffPrintSong(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_SONG_MODULE_NAME, 0, &instance->config.songKey, &instance->config.songFormat, NULL, FF_SONG_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_SONG_MODULE_NAME, 0, &instance->config.song, FF_SONG_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &songPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->song}, {FF_FORMAT_ARG_TYPE_STRBUF, &media->artist}, diff --git a/src/modules/terminal.c b/src/modules/terminal.c index 4672485c5..ceddefe78 100644 --- a/src/modules/terminal.c +++ b/src/modules/terminal.c @@ -13,13 +13,13 @@ void ffPrintTerminal(FFinstance* instance) if(result->terminalProcessName.length == 0) { - ffPrintError(instance, FF_TERMINAL_MODULE_NAME, 0, &instance->config.terminalKey, &instance->config.terminalFormat, FF_TERMINAL_NUM_FORMAT_ARGS, "Couldn't detect terminal"); + ffPrintError(instance, FF_TERMINAL_MODULE_NAME, 0, &instance->config.terminal, "Couldn't detect terminal"); return; } - if(instance->config.terminalFormat.length == 0) + if(instance->config.terminal.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_TERMINAL_MODULE_NAME, 0, &instance->config.terminalKey); + ffPrintLogoAndKey(instance, FF_TERMINAL_MODULE_NAME, 0, &instance->config.terminal.key); if(strncmp(result->terminalExeName, result->terminalProcessName.chars, result->terminalProcessName.length) == 0) // if exeName starts with processName, print it. Otherwise print processName puts(result->terminalExeName); @@ -28,7 +28,7 @@ void ffPrintTerminal(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_TERMINAL_MODULE_NAME, 0, &instance->config.terminalKey, &instance->config.terminalFormat, NULL, FF_TERMINAL_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_TERMINAL_MODULE_NAME, 0, &instance->config.terminal, FF_TERMINAL_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->terminalProcessName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->terminalExe}, {FF_FORMAT_ARG_TYPE_STRING, result->terminalExeName} diff --git a/src/modules/terminalfont.c b/src/modules/terminalfont.c index a2fc1572e..bba8910a9 100644 --- a/src/modules/terminalfont.c +++ b/src/modules/terminalfont.c @@ -7,18 +7,18 @@ static void printTerminalFont(FFinstance* instance, const char* raw, FFfont* fon { if(font->pretty.length == 0) { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Terminal font is an empty value"); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Terminal font is an empty value"); return; } - if(instance->config.termFontFormat.length == 0) + if(instance->config.terminalFont.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey); + ffPrintLogoAndKey(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont.key); ffStrbufPutTo(&font->pretty, stdout); } else { - ffPrintFormatString(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, NULL, FF_TERMFONT_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, FF_TERMFONT_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, raw}, {FF_FORMAT_ARG_TYPE_STRBUF, &font->name}, {FF_FORMAT_ARG_TYPE_STRBUF, &font->size}, @@ -55,7 +55,7 @@ static void printTerminalFontFromConfigFile(FFinstance* instance, const char* co ffParsePropFileConfig(instance, configFile, start, &fontName); if(fontName.length == 0) - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find terminal font in \"$XDG_CONFIG_HOME/%s\"", configFile); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Couldn't find terminal font in \"$XDG_CONFIG_HOME/%s\"", configFile); else { FFfont font; @@ -72,7 +72,7 @@ static void printTerminalFontFromGSettings(FFinstance* instance, char* profilePa const char* defaultProfile = ffSettingsGetGSettings(instance, profileList, NULL, "default", FF_VARIANT_TYPE_STRING).strValue; if(defaultProfile == NULL) { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't get \"default\" profile from gsettings"); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Couldn't get \"default\" profile from gsettings"); return; } @@ -88,13 +88,13 @@ static void printTerminalFontFromGSettings(FFinstance* instance, char* profilePa { fontName = ffSettingsGetGSettings(instance, profile, path.chars, "font", FF_VARIANT_TYPE_STRING).strValue; if(fontName == NULL) - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't get terminal font from GSettings (%s::%s::font)", profile, path.chars); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Couldn't get terminal font from GSettings (%s::%s::font)", profile, path.chars); } else // system font { fontName = getSystemMonospaceFont(instance); if(fontName == NULL) - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Could't get system monospace font name from GSettings / DConf"); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Could't get system monospace font name from GSettings / DConf"); } ffStrbufDestroy(&path); @@ -116,7 +116,7 @@ static void printKonsole(FFinstance* instance) if(profile.length == 0) { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"DefaultProfile=%[^\\n]\" in \".config/konsolerc\""); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Couldn't find \"DefaultProfile=%[^\\n]\" in \".config/konsolerc\""); ffStrbufDestroy(&profile); return; } @@ -131,7 +131,7 @@ static void printKonsole(FFinstance* instance) ffParsePropFileHome(instance, profilePath.chars, "Font =", &fontName); if(fontName.length == 0) - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"Font=%%[^\\n]\" in \"%s\"", profilePath.chars); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Couldn't find \"Font=%%[^\\n]\" in \"%s\"", profilePath.chars); else { FFfont font; @@ -152,7 +152,7 @@ static void printXCFETerminal(FFinstance* instance) if(!ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem =", &useSysFont)) { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't open \"$XDG_CONFIG_HOME/xfce4/terminal/terminalrc\""); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Couldn't open \"$XDG_CONFIG_HOME/xfce4/terminal/terminalrc\""); ffStrbufDestroy(&useSysFont); return; } @@ -169,7 +169,7 @@ static void printXCFETerminal(FFinstance* instance) const char* fontName = ffSettingsGetXFConf(instance, "xsettings", "/Gtk/MonospaceFontName", FF_VARIANT_TYPE_STRING).strValue; if(fontName == NULL) - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"xsettings::/Gtk/MonospaceFontName\" in XFConf"); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Couldn't find \"xsettings::/Gtk/MonospaceFontName\" in XFConf"); else { FFfont font; @@ -211,7 +211,7 @@ void ffPrintTerminalFont(FFinstance* instance) if(result->terminalProcessName.length == 0) { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Terminal font needs successfull terminal detection"); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Terminal font needs successfull terminal detection"); return; } @@ -228,5 +228,5 @@ void ffPrintTerminalFont(FFinstance* instance) else if(ffStrbufStartsWithIgnCaseS(&result->terminalExe, "/dev/tty")) printTTY(instance); else - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Unknown terminal: %s", result->terminalProcessName.chars); + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "Unknown terminal: %s", result->terminalProcessName.chars); } diff --git a/src/modules/theme.c b/src/modules/theme.c index 3d59535c8..37fc7dd41 100644 --- a/src/modules/theme.c +++ b/src/modules/theme.c @@ -14,7 +14,7 @@ void ffPrintTheme(FFinstance* instance) if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, "TTY") == 0) { - ffPrintError(instance, FF_THEME_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, FF_THEME_NUM_FORMAT_ARGS, "Theme isn't supported in TTY"); + ffPrintError(instance, FF_THEME_MODULE_NAME, 0, &instance->config.theme, "Theme isn't supported in TTY"); return; } @@ -25,7 +25,7 @@ void ffPrintTheme(FFinstance* instance) if(plasma->widgetStyle.length == 0 && plasma->colorScheme.length == 0 && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0) { - ffPrintError(instance, FF_THEME_MODULE_NAME, 0, &instance->config.themeKey, &instance->config.themeFormat, FF_THEME_NUM_FORMAT_ARGS, "No themes found"); + ffPrintError(instance, FF_THEME_MODULE_NAME, 0, &instance->config.theme, "No themes found"); return; } @@ -40,9 +40,9 @@ void ffPrintTheme(FFinstance* instance) FF_STRBUF_CREATE(gtkPretty); ffParseGTK(>kPretty, gtk2, gtk3, gtk4); - if(instance->config.themeFormat.length == 0) + if(instance->config.theme.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_THEME_MODULE_NAME, 0, &instance->config.themeKey); + ffPrintLogoAndKey(instance, FF_THEME_MODULE_NAME, 0, &instance->config.theme.key); if(plasma->widgetStyle.length > 0) { @@ -80,7 +80,7 @@ void ffPrintTheme(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_THEME_MODULE_NAME, 0, &instance->config.themeKey, &instance->config.themeFormat, NULL, FF_THEME_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_THEME_MODULE_NAME, 0, &instance->config.theme, FF_THEME_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &plasma->widgetStyle}, {FF_FORMAT_ARG_TYPE_STRBUF, &plasma->colorScheme}, {FF_FORMAT_ARG_TYPE_STRBUF, &plasmaColorPretty}, diff --git a/src/modules/time.c b/src/modules/time.c index 693b0c85d..13670b90c 100644 --- a/src/modules/time.c +++ b/src/modules/time.c @@ -4,14 +4,14 @@ void ffPrintTime(FFinstance* instance) { - if(instance->config.timeFormat.length > 0) + if(instance->config.time.outputFormat.length > 0) { - ffPrintDateTimeFormat(instance, FF_TIME_MODULE_NAME, &instance->config.timeKey, &instance->config.timeFormat); + ffPrintDateTimeFormat(instance, FF_TIME_MODULE_NAME, &instance->config.time); return; } const FFDateTimeResult* datetime = ffDetectDateTime(instance); - ffPrintLogoAndKey(instance, FF_TIME_MODULE_NAME, 0, &instance->config.timeKey); + ffPrintLogoAndKey(instance, FF_TIME_MODULE_NAME, 0, &instance->config.time.key); //hh:mm:ss printf("%s:%s:%s\n", datetime->hourPretty.chars, datetime->minutePretty.chars, datetime->secondPretty.chars); diff --git a/src/modules/uptime.c b/src/modules/uptime.c index 3df32a4d6..14a804103 100644 --- a/src/modules/uptime.c +++ b/src/modules/uptime.c @@ -10,9 +10,9 @@ void ffPrintUptime(FFinstance* instance) uint32_t minutes = (uint32_t) (instance->state.sysinfo.uptime - (days * 86400) - (hours * 3600)) / 60; uint32_t seconds = (uint32_t) instance->state.sysinfo.uptime - (days * 86400) - (hours * 3600) - (minutes * 60); - if(instance->config.uptimeFormat.length == 0) + if(instance->config.uptime.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_UPTIME_MODULE_NAME, 0, &instance->config.uptimeKey); + ffPrintLogoAndKey(instance, FF_UPTIME_MODULE_NAME, 0, &instance->config.uptime.key); if(days == 0 && hours == 0 && minutes == 0) { @@ -57,7 +57,7 @@ void ffPrintUptime(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_UPTIME_MODULE_NAME, 0, &instance->config.uptimeKey, &instance->config.uptimeFormat, NULL, FF_UPTIME_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_UPTIME_MODULE_NAME, 0, &instance->config.uptime, FF_UPTIME_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT, &days}, {FF_FORMAT_ARG_TYPE_UINT, &hours}, {FF_FORMAT_ARG_TYPE_UINT, &minutes}, diff --git a/src/modules/vulkan.c b/src/modules/vulkan.c index 974c0007d..3a196c1b6 100644 --- a/src/modules/vulkan.c +++ b/src/modules/vulkan.c @@ -9,13 +9,13 @@ void ffPrintVulkan(FFinstance* instance) if(vulkan->apiVersion.length == 0 && vulkan->driver.length == 0) { - ffPrintError(instance, FF_VULKAN_MODULE_NAME, 0, &instance->config.vulkanKey, &instance->config.vulkanFormat, FF_VULKAN_NUM_FORMAT_ARGS, "Failed to detect vulkan"); + ffPrintError(instance, FF_VULKAN_MODULE_NAME, 0, &instance->config.vulkan, "Failed to detect vulkan"); return; } - if(instance->config.vulkanFormat.length == 0) + if(instance->config.vulkan.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_VULKAN_MODULE_NAME, 0, &instance->config.vulkanKey); + ffPrintLogoAndKey(instance, FF_VULKAN_MODULE_NAME, 0, &instance->config.vulkan.key); if(vulkan->driver.length > 0) { @@ -32,7 +32,7 @@ void ffPrintVulkan(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_VULKAN_MODULE_NAME, 0, &instance->config.vulkanKey, &instance->config.vulkanFormat, NULL, FF_VULKAN_NUM_FORMAT_ARGS, (FFformatarg[]) { + ffPrintFormat(instance, FF_VULKAN_MODULE_NAME, 0, &instance->config.vulkan, FF_VULKAN_NUM_FORMAT_ARGS, (FFformatarg[]) { {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->driver}, {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->apiVersion}, {FF_FORMAT_ARG_TYPE_STRBUF, &vulkan->conformanceVersion} diff --git a/src/modules/wm.c b/src/modules/wm.c index 925102e50..fe95a387e 100644 --- a/src/modules/wm.c +++ b/src/modules/wm.c @@ -14,13 +14,13 @@ void ffPrintWM(FFinstance* instance) if(result->wmPrettyName.length == 0) { - ffPrintError(instance, FF_WM_MODULE_NAME, 0, &instance->config.wmKey, &instance->config.wmFormat, FF_WM_NUM_FORMAT_ARGS, "No WM found"); + ffPrintError(instance, FF_WM_MODULE_NAME, 0, &instance->config.wm, "No WM found"); return; } - if(instance->config.wmFormat.length == 0) + if(instance->config.wm.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_WM_MODULE_NAME, 0, &instance->config.wmKey); + ffPrintLogoAndKey(instance, FF_WM_MODULE_NAME, 0, &instance->config.wm.key); ffStrbufWriteTo(&result->wmPrettyName, stdout); @@ -35,7 +35,7 @@ void ffPrintWM(FFinstance* instance) } else { - ffPrintFormatString(instance, FF_WM_MODULE_NAME, 0, &instance->config.wmKey, &instance->config.wmFormat, NULL, FF_WM_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_WM_MODULE_NAME, 0, &instance->config.wm, FF_WM_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, &result->wmProcessName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->wmPrettyName}, {FF_FORMAT_ARG_TYPE_STRBUF, &result->wmProtocolName} diff --git a/src/modules/wmtheme.c b/src/modules/wmtheme.c index 443653e1a..18a5dd5b0 100644 --- a/src/modules/wmtheme.c +++ b/src/modules/wmtheme.c @@ -6,14 +6,14 @@ static void printWMTheme(FFinstance* instance, const char* theme) { - if(instance->config.wmThemeFormat.length == 0) + if(instance->config.wmTheme.outputFormat.length == 0) { - ffPrintLogoAndKey(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey); + ffPrintLogoAndKey(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme.key); puts(theme); } else { - ffPrintFormatString(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, NULL, FF_WMTHEME_NUM_FORMAT_ARGS, (FFformatarg[]){ + ffPrintFormat(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, FF_WMTHEME_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRING, theme} }); } @@ -26,7 +26,7 @@ static void printWMThemeFromConfigFile(FFinstance* instance, const char* configF if(!ffParsePropFileConfig(instance, configFile, themeRegex, &theme)) { - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Config file %s doesn't exist", configFile); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Config file %s doesn't exist", configFile); ffStrbufDestroy(&theme); return; } @@ -37,7 +37,7 @@ static void printWMThemeFromConfigFile(FFinstance* instance, const char* configF if(defaultValue == NULL) { - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Couldn't find WM theme in %s", configFile); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Couldn't find WM theme in %s", configFile); return; } @@ -66,7 +66,7 @@ static void printWMThemeFromSettings(FFinstance* instance, const char* dconfKey, if(!ffStrSet(theme)) { - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Couldn't find WM theme in DConf or GSettings"); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Couldn't find WM theme in DConf or GSettings"); return; } @@ -99,7 +99,7 @@ static void printGTKThemeAsWMTheme(FFinstance* instance) return; } - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Couldn't detect GTK4/3/2 theme"); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Couldn't detect GTK4/3/2 theme"); } static void printMutter(FFinstance* instance) @@ -121,7 +121,7 @@ static void printMuffin(FFinstance* instance) if(name == NULL && theme == NULL) { - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Couldn't find muffin theme in GSettings / DConf"); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Couldn't find muffin theme in GSettings / DConf"); return; } @@ -150,7 +150,7 @@ static void printXFWM4(FFinstance* instance) if(theme == NULL) { - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Couldn't find xfwm4::/general/theme in XFConf"); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Couldn't find xfwm4::/general/theme in XFConf"); return; } @@ -177,7 +177,7 @@ static void printOpenbox(FFinstance* instance, const FFstrbuf* dePrettyName) FILE* file = fopen(absolutePath.chars, "r"); if(file == NULL) { - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Couldn't open \"%s\"", absolutePath.chars); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Couldn't open \"%s\"", absolutePath.chars); ffStrbufDestroy(&absolutePath); return; @@ -213,7 +213,7 @@ static void printOpenbox(FFinstance* instance, const FFstrbuf* dePrettyName) fclose(file); if(theme.length == 0) - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Couldn't find theme name in \"%s\"", absolutePath.chars); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Couldn't find theme name in \"%s\"", absolutePath.chars); else printWMTheme(instance, theme.chars); @@ -224,7 +224,7 @@ static void printOpenbox(FFinstance* instance, const FFstrbuf* dePrettyName) void ffPrintWMTheme(FFinstance* instance) { #ifdef __ANDROID__ - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "WM theme detection is not supported on Android"); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "WM theme detection is not supported on Android"); return; #endif @@ -232,7 +232,7 @@ void ffPrintWMTheme(FFinstance* instance) if(result->wmPrettyName.length == 0) { - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "WM Theme needs sucessfull WM detection"); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "WM Theme needs sucessfull WM detection"); return; } @@ -254,5 +254,5 @@ void ffPrintWMTheme(FFinstance* instance) else if(ffStrbufIgnCaseCompS(&result->wmPrettyName, "Openbox") == 0) printOpenbox(instance, &result->dePrettyName); else - ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmThemeKey, &instance->config.wmThemeFormat, FF_WMTHEME_NUM_FORMAT_ARGS, "Unknown WM: %s", result->wmPrettyName.chars); + ffPrintError(instance, FF_WMTHEME_MODULE_NAME, 0, &instance->config.wmTheme, "Unknown WM: %s", result->wmPrettyName.chars); }