|
1 | 1 | #include "fastfetch.h" |
| 2 | +#include <string.h> |
2 | 3 |
|
3 | 4 | #define FF_TERMFONT_MODULE_NAME "Terminal Font" |
4 | 5 | #define FF_TERMFONT_NUM_FORMAT_ARGS 4 |
@@ -43,71 +44,6 @@ static void printTerminalFontFromConfigFile(FFinstance* instance, const char* co |
43 | 44 | printTerminalFont(instance, font); |
44 | 45 | } |
45 | 46 |
|
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 | | - |
111 | 47 | static void printKonsole(FFinstance* instance) |
112 | 48 | { |
113 | 49 | char profile[128]; |
@@ -172,6 +108,31 @@ static void printTilixTerminal(FFinstance* instance) |
172 | 108 | ffStrbufDestroy(&key); |
173 | 109 | } |
174 | 110 |
|
| 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 | + |
175 | 136 | static void printTTY(FFinstance* instance) |
176 | 137 | { |
177 | 138 | FFstrbuf font; |
|
0 commit comments