diff --git a/doc/json_schema.json b/doc/json_schema.json index 64efcfe05..a74b594da 100644 --- a/doc/json_schema.json +++ b/doc/json_schema.json @@ -22,6 +22,10 @@ "minimum": 0, "default": 0 }, + "keyIcon": { + "description": "Set the icon to be displayed by `display.keyType: \"icon\"`", + "type": "string" + }, "format": { "description": "Output format of the module. See `-h -format` for detail. I.e: fastfetch -h disk-format", "type": "string" @@ -972,12 +976,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1009,12 +1016,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1043,12 +1053,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1079,12 +1092,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1105,12 +1121,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1139,12 +1158,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1173,12 +1195,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1239,6 +1264,9 @@ }, "key": { "$ref": "#/$defs/key" + }, + "keyIcon": { + "$ref": "#/$defs/keyIcon" } } }, @@ -1265,12 +1293,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1292,12 +1323,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "description": "Text to print", "type": "string" @@ -1344,12 +1378,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1407,12 +1444,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1442,12 +1482,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1473,12 +1516,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1508,12 +1554,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1537,12 +1586,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1592,12 +1644,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1662,12 +1717,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1691,12 +1749,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1732,12 +1793,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1772,12 +1836,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1808,12 +1875,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1869,12 +1939,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1902,12 +1975,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -1945,12 +2021,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -2010,12 +2089,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -2039,12 +2121,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -2089,12 +2174,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -2125,12 +2213,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -2166,12 +2257,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } @@ -2197,12 +2291,15 @@ "keyColor": { "$ref": "#/$defs/keyColor" }, - "outputColor": { - "$ref": "#/$defs/outputColor" + "keyIcon": { + "$ref": "#/$defs/keyIcon" }, "keyWidth": { "$ref": "#/$defs/keyWidth" }, + "outputColor": { + "$ref": "#/$defs/outputColor" + }, "format": { "$ref": "#/$defs/format" } diff --git a/src/common/option.c b/src/common/option.c index 50a336e69..a7453cd51 100644 --- a/src/common/option.c +++ b/src/common/option.c @@ -50,20 +50,29 @@ bool ffOptionParseModuleArgs(const char* argumentKey, const char* subKey, const ffOptionParseColor(value, &result->outputColor); return true; } - else if(ffStrEqualsIgnCase(subKey, "key-color")) + else if(ffStrStartsWithIgnCase(subKey, "key-")) { - if(value == NULL) + const char* subKey2 = subKey + strlen("key-"); + if(ffStrEqualsIgnCase(subKey2, "color")) { - fprintf(stderr, "Error: usage: %s \n", argumentKey); - exit(477); + if(value == NULL) + { + fprintf(stderr, "Error: usage: %s \n", argumentKey); + exit(477); + } + ffOptionParseColor(value, &result->keyColor); + return true; + } + else if(ffStrEqualsIgnCase(subKey2, "width")) + { + result->keyWidth = ffOptionParseUInt32(argumentKey, value); + return true; + } + else if(ffStrEqualsIgnCase(subKey2, "icon")) + { + ffOptionParseString(argumentKey, value, &result->keyIcon); + return true; } - ffOptionParseColor(value, &result->keyColor); - return true; - } - else if(ffStrEqualsIgnCase(subKey, "key-width")) - { - result->keyWidth = ffOptionParseUInt32(argumentKey, value); - return true; } return false; } diff --git a/src/common/option.h b/src/common/option.h index 043990192..218ef6a21 100644 --- a/src/common/option.h +++ b/src/common/option.h @@ -57,9 +57,9 @@ typedef struct FFModuleArgs { FFstrbuf key; FFstrbuf keyColor; + FFstrbuf keyIcon; FFstrbuf outputFormat; FFstrbuf outputColor; - FFstrbuf icon; uint32_t keyWidth; } FFModuleArgs; @@ -87,9 +87,9 @@ static inline void ffOptionInitModuleArg(FFModuleArgs* args, const char* icon) { ffStrbufInit(&args->key); ffStrbufInit(&args->keyColor); + ffStrbufInitStatic(&args->keyIcon, icon); ffStrbufInit(&args->outputFormat); ffStrbufInit(&args->outputColor); - ffStrbufInitStatic(&args->icon, icon); args->keyWidth = 0; } @@ -99,5 +99,5 @@ static inline void ffOptionDestroyModuleArg(FFModuleArgs* args) ffStrbufDestroy(&args->keyColor); ffStrbufDestroy(&args->outputFormat); ffStrbufDestroy(&args->outputColor); - ffStrbufDestroy(&args->icon); + ffStrbufDestroy(&args->keyIcon); } diff --git a/src/common/printing.c b/src/common/printing.c index c597439f6..9bde8e414 100644 --- a/src/common/printing.c +++ b/src/common/printing.c @@ -26,9 +26,9 @@ void ffPrintLogoAndKey(const char* moduleName, uint8_t moduleIndex, const FFModu } bool hasIcon = false; - if (instance.config.display.keyType & FF_MODULE_KEY_TYPE_ICON && moduleArgs && moduleArgs->icon.length > 0) + if (instance.config.display.keyType & FF_MODULE_KEY_TYPE_ICON && moduleArgs && moduleArgs->keyIcon.length > 0) { - ffStrbufWriteTo(&moduleArgs->icon, stdout); + ffStrbufWriteTo(&moduleArgs->keyIcon, stdout); hasIcon = true; } @@ -50,7 +50,7 @@ void ffPrintLogoAndKey(const char* moduleName, uint8_t moduleIndex, const FFModu FF_STRBUF_AUTO_DESTROY key = ffStrbufCreate(); FF_PARSE_FORMAT_STRING_CHECKED(&key, &moduleArgs->key, 2, ((FFformatarg[]){ {FF_FORMAT_ARG_TYPE_UINT8, &moduleIndex, "index"}, - {FF_FORMAT_ARG_TYPE_STRBUF, &moduleArgs->icon, "icon"}, + {FF_FORMAT_ARG_TYPE_STRBUF, &moduleArgs->keyIcon, "icon"}, })); ffStrbufWriteTo(&key, stdout); } diff --git a/src/data/help.json b/src/data/help.json index 42452b867..99a55a6b7 100644 --- a/src/data/help.json +++ b/src/data/help.json @@ -1651,6 +1651,14 @@ }, "pseudo": true }, + { + "long": "-key-icon", + "desc": "Set the icon to be displayed by \"--key-type icon\"", + "arg": { + "type": "string" + }, + "pseudo": true + }, { "long": "-output-color", "desc": "Override the global \"--color-output\" option for each specific module",