Skip to content

Commit c549c7c

Browse files
authored
Rewrote function with XFConf
1 parent cac0c27 commit c549c7c

File tree

1 file changed

+26
-65
lines changed

1 file changed

+26
-65
lines changed

src/modules/terminalfont.c

Lines changed: 26 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "fastfetch.h"
2+
#include <string.h>
23

34
#define FF_TERMFONT_MODULE_NAME "Terminal Font"
45
#define FF_TERMFONT_NUM_FORMAT_ARGS 4
@@ -43,71 +44,6 @@ static void printTerminalFontFromConfigFile(FFinstance* instance, const char* co
4344
printTerminalFont(instance, font);
4445
}
4546

46-
static void printXCFETerminal(FFinstance* instance)
47-
{
48-
FFstrbuf fontName;
49-
ffStrbufInitA(&fontName, 256);
50-
51-
ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem=%[^\n]", fontName.chars);
52-
53-
if((fontName.chars[0] == '\0') || !ffStrbufCompS(&fontName, "FALSE"))
54-
{
55-
printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]");
56-
ffStrbufDestroy(&fontName);
57-
return;
58-
}
59-
60-
FFstrbuf absolutePath;
61-
ffStrbufInitA(&absolutePath, 64);
62-
ffStrbufAppendS(&absolutePath, instance->state.passwd->pw_dir);
63-
ffStrbufAppendC(&absolutePath, '/');
64-
ffStrbufAppendS(&absolutePath, ".config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml");
65-
66-
FILE* file = fopen(absolutePath.chars, "r");
67-
if(file == NULL)
68-
{
69-
ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.termFontKey, &instance->config.termFontFormat, FF_TERMFONT_NUM_FORMAT_ARGS, "Couldn't open \"%s\"", absolutePath.chars);
70-
ffStrbufDestroy(&absolutePath);
71-
ffStrbufDestroy(&fontName);
72-
73-
return;
74-
}
75-
76-
FFstrbuf matchText;
77-
ffStrbufInitAS(&matchText, 64, "<property name=\"MonospaceFontName\" type=\"string\" value=\"");
78-
79-
char* line = NULL;
80-
size_t len = 0;
81-
82-
while(getline(&line, &len, file) != -1)
83-
{
84-
ffStrbufAppendS(&fontName, line);
85-
ffStrbufTrimLeft(&fontName, ' ');
86-
87-
if(ffStrbufStartsWithS(&fontName, matchText.chars))
88-
{
89-
ffStrbufSubstrAfter(&fontName, matchText.length -1);
90-
ffStrbufSubstrBefore(&fontName, fontName.length - 4); // ["/>\n]
91-
break;
92-
}
93-
ffStrbufClear(&fontName);
94-
}
95-
ffStrbufDestroy(&matchText);
96-
ffStrbufDestroy(&absolutePath);
97-
98-
if(line != NULL)
99-
free(line);
100-
101-
fclose(file);
102-
103-
if(fontName.chars[0] != '\0')
104-
printTerminalFont(instance, fontName.chars);
105-
else
106-
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\"");
107-
108-
ffStrbufDestroy(&fontName);
109-
}
110-
11147
static void printKonsole(FFinstance* instance)
11248
{
11349
char profile[128];
@@ -172,6 +108,31 @@ static void printTilixTerminal(FFinstance* instance)
172108
ffStrbufDestroy(&key);
173109
}
174110

111+
static void printXCFETerminal(FFinstance* instance)
112+
{
113+
char useSysFont[6];
114+
const char* fontName;
115+
116+
if(!ffParsePropFileConfig(instance, "xfce4/terminal/terminalrc", "FontUseSystem=%[^\n]", useSysFont))
117+
{
118+
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\"");
119+
return;
120+
}
121+
122+
if((useSysFont[0] == '\0') || strcasecmp(useSysFont, "FALSE") == 0)
123+
{
124+
printTerminalFontFromConfigFile(instance, "xfce4/terminal/terminalrc", "FontName=%[^\n]");
125+
return;
126+
}
127+
else
128+
fontName = ffSettingsGetXFConf(instance, "xsettings", "/Gtk/MonospaceFontName", FF_VARIANT_TYPE_STRING).strValue;
129+
130+
if(fontName == NULL)
131+
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");
132+
else
133+
printTerminalFont(instance, fontName);
134+
}
135+
175136
static void printTTY(FFinstance* instance)
176137
{
177138
FFstrbuf font;

0 commit comments

Comments
 (0)