From d94fc32f458da6e4334ae3ca3db70306bf4a7012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Fri, 22 Sep 2023 15:04:54 +0800 Subject: [PATCH] Colors: support `--colors-key` --- CHANGELOG.md | 1 + src/modules/colors/colors.c | 10 +++++++++- src/modules/colors/option.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d6743c72..13acef153 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Features: * Support full GPU detection in WSL (Linux, GPU) * Add `--module-key " "` as a special case for hiding keys * Support `--title-format`. See `fastfetch --help title-format` for detail +* Support `--colors-key` Bugfixes: * Fix fastfetch hanging in specific environment (#561) diff --git a/src/modules/colors/colors.c b/src/modules/colors/colors.c index 2e2075582..4bcf9bafd 100644 --- a/src/modules/colors/colors.c +++ b/src/modules/colors/colors.c @@ -9,7 +9,7 @@ void ffPrintColors(FFColorsOptions* options) if(instance.config.pipe) return; - ffLogoPrintLine(); + ffPrintLogoAndKey(FF_COLORS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT); if(options->paddingLeft > 0) ffPrintCharTimes(' ', options->paddingLeft); @@ -58,6 +58,8 @@ void ffPrintColors(FFColorsOptions* options) void ffInitColorsOptions(FFColorsOptions* options) { ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_COLORS_MODULE_NAME, ffParseColorsCommandOptions, ffParseColorsJsonObject, ffPrintColors, NULL); + ffOptionInitModuleArg(&options->moduleArgs); + ffStrbufSetStatic(&options->moduleArgs.key, " "); options->symbol = FF_COLORS_SYMBOL_BLOCK; options->paddingLeft = 0; } @@ -66,6 +68,8 @@ bool ffParseColorsCommandOptions(FFColorsOptions* options, const char* key, cons { const char* subKey = ffOptionTestPrefix(key, FF_COLORS_MODULE_NAME); if (!subKey) return false; + if (ffOptionParseModuleArgs(key, subKey, value, &options->moduleArgs)) + return true; if (ffStrEqualsIgnCase(subKey, "symbol")) { @@ -92,6 +96,7 @@ bool ffParseColorsCommandOptions(FFColorsOptions* options, const char* key, cons void ffDestroyColorsOptions(FF_MAYBE_UNUSED FFColorsOptions* options) { + ffOptionDestroyModuleArg(&options->moduleArgs); } void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) @@ -104,6 +109,9 @@ void ffParseColorsJsonObject(FFColorsOptions* options, yyjson_val* module) if(ffStrEqualsIgnCase(key, "type")) continue; + if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs)) + continue; + if (ffStrEqualsIgnCase(key, "symbol")) { int value; diff --git a/src/modules/colors/option.h b/src/modules/colors/option.h index a17029bd8..e51cea6f1 100644 --- a/src/modules/colors/option.h +++ b/src/modules/colors/option.h @@ -17,6 +17,8 @@ typedef enum FFColorsSymbol typedef struct FFColorsOptions { FFModuleBaseInfo moduleInfo; + FFModuleArgs moduleArgs; + FFColorsSymbol symbol; uint32_t paddingLeft; } FFColorsOptions;