From b2da8bac416c6bcc9ef3fbe30c7b12ccd45885e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 26 Sep 2022 11:29:39 +0800 Subject: [PATCH] Font: add option to display fonts inline ( enabled by default ) --- completions/bash | 1 + src/common/init.c | 2 ++ src/data/help.txt | 1 + src/fastfetch.c | 2 ++ src/fastfetch.h | 2 ++ src/modules/font.c | 46 +++++++++++++++++++++++++++++----------------- 6 files changed, 37 insertions(+), 17 deletions(-) diff --git a/completions/bash b/completions/bash index aa4182ec1..bdcd67f83 100644 --- a/completions/bash +++ b/completions/bash @@ -180,6 +180,7 @@ __fastfetch_completion() "--cpu-temp" "--gpu-temp" "--battery-temp" + "--font-inline" "--localip-show-ipv4" "--localip-show-ipv6" "--localip-show-loop" diff --git a/src/common/init.c b/src/common/init.c index d269257c5..2f8a4146c 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -233,6 +233,8 @@ static void defaultConfig(FFinstance* instance) ffStrbufInitA(&instance->config.separatorString, 0); + instance->config.fontInline = true; + instance->config.localIpShowIpV4 = true; instance->config.localIpShowIpV6 = false; instance->config.localIpShowLoop = false; diff --git a/src/data/help.txt b/src/data/help.txt index a5588f15f..cd5d8d99a 100644 --- a/src/data/help.txt +++ b/src/data/help.txt @@ -97,6 +97,7 @@ Module specific options: --cpu-temp : Detect and display CPU temperature if supported. Default is false --gpu-temp : Detect and display GPU temperature if supported. Default is false --battery-temp : Detect and display Battery temperature if supported. Default is false + --font-inline : Display fonts of different DE in one line --localip-show-ipv4 : Show ipv4 addresses in local ip module. Default is true --localip-show-ipv6 : Show ipv6 addresses in local ip module. Default is false --localip-show-loop : Show loop back addresses (127.0.0.1) in local ip module. Default is false diff --git a/src/fastfetch.c b/src/fastfetch.c index 0a0f93ba0..976235278 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -1269,6 +1269,8 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con optionParseString(key, value, &instance->config.batteryDir); else if(strcasecmp(key, "--separator-string") == 0) optionParseString(key, value, &instance->config.separatorString); + else if(strcasecmp(key, "--font-inline") == 0) + instance->config.fontInline = optionParseBoolean(value); else if(strcasecmp(key, "--localip-show-ipv4") == 0) instance->config.localIpShowIpV4 = optionParseBoolean(value); else if(strcasecmp(key, "--localip-show-ipv6") == 0) diff --git a/src/fastfetch.h b/src/fastfetch.h index 6eaf48f90..058bd324e 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -165,6 +165,8 @@ typedef struct FFconfig FFstrbuf separatorString; + bool fontInline; + bool localIpShowLoop; bool localIpShowIpV4; bool localIpShowIpV6; diff --git a/src/modules/font.c b/src/modules/font.c index a8ae8ac9a..fff39939d 100644 --- a/src/modules/font.c +++ b/src/modules/font.c @@ -25,26 +25,38 @@ void ffPrintFont(FFinstance* instance) return; } - for(uint32_t i = 0; i < list.length; ++i) + if (instance->config.font.outputFormat.length == 0 && instance->config.fontInline) { - FFFontResult* font = (FFFontResult*)ffListGet(&list, i); - if(instance->config.font.outputFormat.length == 0) + ffPrintLogoAndKey(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font.key); + for(uint32_t i = 0; i < list.length; ++i) { - FFstrbuf key; - ffStrbufInitF(&key, "%s (%s)", FF_FONT_MODULE_NAME, font->type); - ffPrintLogoAndKey(instance, key.chars, 0, &instance->config.font.key); - puts(font->fontPretty.chars); - ffStrbufDestroy(&key); + FFFontResult* font = (FFFontResult*)ffListGet(&list, i); + printf("[%s] %*s%s", font->type, font->fontPretty.length, font->fontPretty.chars, i < list.length - 1 ? ", " : ""); + ffStrbufDestroy(&font->fontPretty); + } + putchar('\n'); + } + else + { + for(uint32_t i = 0; i < list.length; ++i) + { + FFFontResult* font = (FFFontResult*)ffListGet(&list, i); + if(instance->config.font.outputFormat.length == 0) + { + char keyChars[32]; + snprintf(keyChars, sizeof(keyChars), "%s (%s)", FF_FONT_MODULE_NAME, font->type); + ffPrintLogoAndKey(instance, keyChars, 0, &instance->config.font.key); + puts(font->fontPretty.chars); + } + else + { + ffPrintFormat(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, FF_FONT_NUM_FORMAT_ARGS, (FFformatarg[]){ + {FF_FORMAT_ARG_TYPE_STRING, font->type}, + {FF_FORMAT_ARG_TYPE_STRBUF, &font->fontPretty} + }); + } + ffStrbufDestroy(&font->fontPretty); } - else - { - ffPrintFormat(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, FF_FONT_NUM_FORMAT_ARGS, (FFformatarg[]){ - {FF_FORMAT_ARG_TYPE_STRING, font->type}, - {FF_FORMAT_ARG_TYPE_STRBUF, &font->fontPretty} - }); - } - ffStrbufDestroy(&font->fontPretty); } - ffListDestroy(&list); }