From 719a5c999daa6cf31ea3b654bdd6aea1367137f3 Mon Sep 17 00:00:00 2001 From: DarN Date: Sun, 9 May 2021 13:40:17 +0200 Subject: [PATCH 1/5] Added system font recognition for xfce-terminal --- src/modules/terminalfont.c | 67 +++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/src/modules/terminalfont.c b/src/modules/terminalfont.c index 33f28bb114..91d377521a 100644 --- a/src/modules/terminalfont.c +++ b/src/modules/terminalfont.c @@ -43,6 +43,71 @@ static void printTerminalFontFromConfigFile(FFinstance* instance, const char* co printTerminalFont(instance, font); } +static void printXCFETerminal(FFinstance* instance) +{ + FFstrbuf fontName; + ffStrbufInitA(&fontName, 256); + + ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem=%[^\n]", fontName.chars); + + if(fontName.chars[0] == '\0') + { + printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]"); + ffStrbufDestroy(&fontName); + return; + } + + FFstrbuf absolutePath; + ffStrbufInitA(&absolutePath, 64); + ffStrbufAppendS(&absolutePath, instance->state.passwd->pw_dir); + ffStrbufAppendC(&absolutePath, '/'); + ffStrbufAppendS(&absolutePath, ".config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml"); + + char* line = NULL; + size_t len = 0; + + FILE* file = fopen(absolutePath.chars, "r"); + if(file == NULL) + { + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't open \"%s\"", absolutePath.chars); + ffStrbufDestroy(&absolutePath); + ffStrbufDestroy(&fontName); + + return; + } + + FFstrbuf matchText; + ffStrbufInitAS(&matchText, 64, "\n] + break; + } + ffStrbufSetC(&fontName, '\0'); + } + + if(line != NULL) + free(line); + + fclose(file); + + if(fontName.chars[0] != '\0') + printTerminalFont(instance, fontName.chars); + else + ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"MonospaceFontName=%%[^\\n]\" in \"xsettings.xml\""); + + ffStrbufDestroy(&matchText); + ffStrbufDestroy(&absolutePath); + ffStrbufDestroy(&fontName); +} + static void printKonsole(FFinstance* instance) { char profile[128]; @@ -142,7 +207,7 @@ void ffPrintTerminalFont(FFinstance* instance) if(ffStrbufIgnCaseCompS(&result->exeName, "konsole") == 0) printKonsole(instance); else if(ffStrbufIgnCaseCompS(&result->exeName, "xfce4-terminal") == 0) - printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]"); + printXCFETerminal(instance); else if(ffStrbufIgnCaseCompS(&result->exeName, "lxterminal") == 0) printTerminalFontFromConfigFile(instance, "lxterminal/lxterminal.conf", "fontname=%[^\n]"); else if(ffStrbufIgnCaseCompS(&result->exeName, "tilix") == 0) From cf4b3c54cf9dc2a9fc47ad3ab389eed99854703f Mon Sep 17 00:00:00 2001 From: DarN Date: Sun, 9 May 2021 14:05:57 +0200 Subject: [PATCH 2/5] Added check for manual edits --- src/modules/terminalfont.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/terminalfont.c b/src/modules/terminalfont.c index 91d377521a..472b4ce8f0 100644 --- a/src/modules/terminalfont.c +++ b/src/modules/terminalfont.c @@ -1,4 +1,5 @@ #include "fastfetch.h" +#include "util/FFstrbuf.h" #define FF_TERMFONT_MODULE_NAME "Terminal Font" #define FF_TERMFONT_NUM_FORMAT_ARGS 4 @@ -50,7 +51,7 @@ static void printXCFETerminal(FFinstance* instance) ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem=%[^\n]", fontName.chars); - if(fontName.chars[0] == '\0') + if((fontName.chars[0] == '\0') || ffStrbufCompS(&fontName, "TRUE")) { printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]"); ffStrbufDestroy(&fontName); From 89187e9758412575dbb55e41ee450a44079a4071 Mon Sep 17 00:00:00 2001 From: DarN <82701459+DarNCelsius@users.noreply.github.com> Date: Sun, 9 May 2021 14:07:20 +0200 Subject: [PATCH 3/5] Removed auto include --- src/modules/terminalfont.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/terminalfont.c b/src/modules/terminalfont.c index 472b4ce8f0..8227bfa255 100644 --- a/src/modules/terminalfont.c +++ b/src/modules/terminalfont.c @@ -1,5 +1,4 @@ #include "fastfetch.h" -#include "util/FFstrbuf.h" #define FF_TERMFONT_MODULE_NAME "Terminal Font" #define FF_TERMFONT_NUM_FORMAT_ARGS 4 From ef3f4d9fa835df354226e60b71bb3498d11ad968 Mon Sep 17 00:00:00 2001 From: DarN <82701459+DarNCelsius@users.noreply.github.com> Date: Sun, 9 May 2021 20:39:00 +0200 Subject: [PATCH 4/5] Tweaks Hopefully an improvement --- src/modules/terminalfont.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/modules/terminalfont.c b/src/modules/terminalfont.c index 8227bfa255..3f64cd3b28 100644 --- a/src/modules/terminalfont.c +++ b/src/modules/terminalfont.c @@ -50,7 +50,7 @@ static void printXCFETerminal(FFinstance* instance) ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem=%[^\n]", fontName.chars); - if((fontName.chars[0] == '\0') || ffStrbufCompS(&fontName, "TRUE")) + if((fontName.chars[0] == '\0') || !ffStrbufCompS(&fontName, "FALSE")) { printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]"); ffStrbufDestroy(&fontName); @@ -63,9 +63,6 @@ static void printXCFETerminal(FFinstance* instance) ffStrbufAppendC(&absolutePath, '/'); ffStrbufAppendS(&absolutePath, ".config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml"); - char* line = NULL; - size_t len = 0; - FILE* file = fopen(absolutePath.chars, "r"); if(file == NULL) { @@ -79,9 +76,12 @@ static void printXCFETerminal(FFinstance* instance) FFstrbuf matchText; ffStrbufInitAS(&matchText, 64, "\n] break; } - ffStrbufSetC(&fontName, '\0'); + ffStrbufClear(&fontName); } + ffStrbufDestroy(&matchText); + ffStrbufDestroy(&absolutePath); if(line != NULL) free(line); @@ -103,8 +105,6 @@ static void printXCFETerminal(FFinstance* instance) else ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"MonospaceFontName=%%[^\\n]\" in \"xsettings.xml\""); - ffStrbufDestroy(&matchText); - ffStrbufDestroy(&absolutePath); ffStrbufDestroy(&fontName); } From c549c7c86855a9aa734d61eb51a3a82e02b33f92 Mon Sep 17 00:00:00 2001 From: DarN <82701459+DarNCelsius@users.noreply.github.com> Date: Tue, 11 May 2021 22:28:10 +0200 Subject: [PATCH 5/5] Rewrote function with XFConf --- src/modules/terminalfont.c | 91 +++++++++++--------------------------- 1 file changed, 26 insertions(+), 65 deletions(-) diff --git a/src/modules/terminalfont.c b/src/modules/terminalfont.c index 3f64cd3b28..277ae45bcb 100644 --- a/src/modules/terminalfont.c +++ b/src/modules/terminalfont.c @@ -1,4 +1,5 @@ #include "fastfetch.h" +#include #define FF_TERMFONT_MODULE_NAME "Terminal Font" #define FF_TERMFONT_NUM_FORMAT_ARGS 4 @@ -43,71 +44,6 @@ static void printTerminalFontFromConfigFile(FFinstance* instance, const char* co printTerminalFont(instance, font); } -static void printXCFETerminal(FFinstance* instance) -{ - FFstrbuf fontName; - ffStrbufInitA(&fontName, 256); - - ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem=%[^\n]", fontName.chars); - - if((fontName.chars[0] == '\0') || !ffStrbufCompS(&fontName, "FALSE")) - { - printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]"); - ffStrbufDestroy(&fontName); - return; - } - - FFstrbuf absolutePath; - ffStrbufInitA(&absolutePath, 64); - ffStrbufAppendS(&absolutePath, instance->state.passwd->pw_dir); - ffStrbufAppendC(&absolutePath, '/'); - ffStrbufAppendS(&absolutePath, ".config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml"); - - FILE* file = fopen(absolutePath.chars, "r"); - if(file == NULL) - { - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't open \"%s\"", absolutePath.chars); - ffStrbufDestroy(&absolutePath); - ffStrbufDestroy(&fontName); - - return; - } - - FFstrbuf matchText; - ffStrbufInitAS(&matchText, 64, "\n] - break; - } - ffStrbufClear(&fontName); - } - ffStrbufDestroy(&matchText); - ffStrbufDestroy(&absolutePath); - - if(line != NULL) - free(line); - - fclose(file); - - if(fontName.chars[0] != '\0') - printTerminalFont(instance, fontName.chars); - else - ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't find \"MonospaceFontName=%%[^\\n]\" in \"xsettings.xml\""); - - ffStrbufDestroy(&fontName); -} - static void printKonsole(FFinstance* instance) { char profile[128]; @@ -172,6 +108,31 @@ static void printTilixTerminal(FFinstance* instance) ffStrbufDestroy(&key); } +static void printXCFETerminal(FFinstance* instance) +{ + char useSysFont[6]; + const char* fontName; + + if(!ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem=%[^\n]", 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\""); + return; + } + + if((useSysFont[0] == '\0') || strcasecmp(useSysFont, "FALSE") == 0) + { + printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]"); + return; + } + else + 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"); + else + printTerminalFont(instance, fontName); +} + static void printTTY(FFinstance* instance) { FFstrbuf font;