mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-29 08:13:44 +01:00
better gtk detection
This commit is contained in:
+98
-37
@@ -1,62 +1,123 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
void ffPrintFont(FFinstance* instance)
|
||||
{
|
||||
FF_STRBUF_CREATE(plasmaFile);
|
||||
ffStrbufAppendS(&plasmaFile, instance->state.passwd->pw_dir);
|
||||
ffStrbufAppendS(&plasmaFile, "/.config/kdeglobals");
|
||||
|
||||
//When using Noto Sans 10, the default font in KDE Plasma, the font entry is deleted from the config file instead of set.
|
||||
//So the pure existence of the file sets this font value if not set other in the file itself.
|
||||
bool plasmaFileExists = access(plasmaFile.chars, F_OK) == 0;
|
||||
|
||||
char plasma[256];
|
||||
ffParsePropFileHome(instance, ".config/kdeglobals", "font=%[^\n]", plasma);
|
||||
plasma[0] = '\0';
|
||||
if(plasmaFileExists)
|
||||
ffParsePropFile(plasmaFile.chars, "font=%[^\n]", plasma);
|
||||
|
||||
char plasmaPretty[256];
|
||||
if(plasma[0] == '\0')
|
||||
strcpy(plasmaPretty, "Noto Sans (10pt)");
|
||||
ffStrbufDestroy(&plasmaFile);
|
||||
|
||||
FFstrbuf* gtk2;
|
||||
ffCalculateGTK2(instance, NULL, NULL, >k2);
|
||||
|
||||
FFstrbuf* gtk3;
|
||||
ffCalculateGTK3(instance, NULL, NULL, >k3);
|
||||
|
||||
FFstrbuf* gtk4;
|
||||
ffCalculateGTK4(instance, NULL, NULL, >k4);
|
||||
|
||||
if(plasma[0] == '\0' && !plasmaFileExists && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0)
|
||||
{
|
||||
ffPrintError(instance, &instance->config.fontKey, "Font", "No fonts found");
|
||||
return;
|
||||
}
|
||||
|
||||
FF_STRBUF_CREATE(plasmaName);
|
||||
FF_STRBUF_CREATE(plasmaPretty);
|
||||
double plasmaSize;
|
||||
|
||||
if(plasma[0] == '\0' && plasmaFileExists)
|
||||
{
|
||||
strcpy(plasma, "Noto Sans, 10");
|
||||
ffStrbufSetS(&plasmaName, "Noto Sans");
|
||||
plasmaSize = 10;
|
||||
ffStrbufSetS(&plasmaPretty, "Noto Sans (10pt)");
|
||||
}
|
||||
else
|
||||
ffParseFont(plasma, plasmaPretty);
|
||||
{
|
||||
ffParseFont(plasma, &plasmaName, &plasmaSize);
|
||||
ffFontPretty(&plasmaPretty, &plasmaName, plasmaSize);
|
||||
}
|
||||
|
||||
char gtk2[256];
|
||||
ffParsePropFileHome(instance, ".gtkrc-2.0", "gtk-font-name=\"%[^\"]+", gtk2);
|
||||
FF_STRBUF_CREATE(gtk2Name);
|
||||
double gtk2Size;
|
||||
ffParseFont(gtk2->chars, >k2Name, >k2Size);
|
||||
FF_STRBUF_CREATE(gtk2Pretty);
|
||||
ffFontPretty(>k2Pretty, >k2Name, gtk2Size);
|
||||
|
||||
char gtk2Pretty[256];
|
||||
if(gtk2[0] == '\0')
|
||||
gtk2Pretty[0] = '\0';
|
||||
else
|
||||
ffParseFont(gtk2, gtk2Pretty);
|
||||
FF_STRBUF_CREATE(gtk3Name);
|
||||
double gtk3Size;
|
||||
ffParseFont(gtk3->chars, >k3Name, >k3Size);
|
||||
FF_STRBUF_CREATE(gtk3Pretty);
|
||||
ffFontPretty(>k3Pretty, >k3Name, gtk3Size);
|
||||
|
||||
char gtk3[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-3.0/settings.ini", "gtk-font-name=%[^\n]", gtk3);
|
||||
|
||||
char gtk3Pretty[256];
|
||||
if(gtk3[0] == '\0')
|
||||
gtk3Pretty[0] = '\0';
|
||||
else
|
||||
ffParseFont(gtk3, gtk3Pretty);
|
||||
|
||||
char gtk4[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-4.0/settings.ini", "gtk-font-name=%[^\n]", gtk4);
|
||||
|
||||
char gtk4Pretty[256];
|
||||
if(gtk4Pretty[0] == '\0')
|
||||
gtk4Pretty[0] = '\0';
|
||||
else
|
||||
ffParseFont(gtk4, gtk4Pretty);
|
||||
FF_STRBUF_CREATE(gtk4Name);
|
||||
double gtk4Size;
|
||||
ffParseFont(gtk4->chars, >k4Name, >k4Size);
|
||||
FF_STRBUF_CREATE(gtk4Pretty);
|
||||
ffFontPretty(>k4Pretty, >k4Name, gtk4Size);
|
||||
|
||||
FF_STRBUF_CREATE(gtkPretty);
|
||||
ffFormatGtkPretty(>kPretty, gtk2Pretty, gtk3Pretty, gtk4Pretty);
|
||||
ffFormatGtkPretty(>kPretty, >k2Pretty, >k3Pretty, >k4Pretty);
|
||||
|
||||
if(instance->config.fontFormat.length == 0)
|
||||
{
|
||||
ffPrintLogoAndKey(instance, &instance->config.fontKey, "Font");
|
||||
printf("%s [Plasma], ", plasmaPretty);
|
||||
|
||||
if(plasma[0] != '\0')
|
||||
{
|
||||
ffStrbufWriteTo(&plasmaPretty, stdout);
|
||||
fputs(" [Plasma]", stdout);
|
||||
|
||||
if(gtkPretty.length > 0)
|
||||
fputs(", ", stdout);
|
||||
}
|
||||
ffStrbufPutTo(>kPretty, stdout);
|
||||
}
|
||||
else
|
||||
{
|
||||
ffPrintFormatString(instance, &instance->config.fontKey, "Font", &instance->config.fontFormat, 5,
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, plasmaPretty},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, gtk2Pretty},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, gtk3Pretty},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, gtk4Pretty},
|
||||
ffPrintFormatString(instance, &instance->config.fontKey, "Font", &instance->config.fontFormat, 17,
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, plasma},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &plasmaName},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, &plasmaSize},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &plasmaPretty},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, gtk2},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >k2Name},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, >k2Size},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >k2Pretty},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, gtk3},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >k3Name},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, >k3Size},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >k3Pretty},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, gtk4},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >k4Name},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, >k4Size},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >k4Pretty},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >kPretty}
|
||||
);
|
||||
}
|
||||
|
||||
ffStrbufDestroy(>kPretty);
|
||||
ffStrbufDestroy(&plasmaName);
|
||||
ffStrbufDestroy(&plasmaPretty);
|
||||
|
||||
ffStrbufDestroy(>k2Name);
|
||||
ffStrbufDestroy(>k2Pretty);
|
||||
|
||||
ffStrbufDestroy(>k3Name);
|
||||
ffStrbufDestroy(>k3Pretty);
|
||||
|
||||
ffStrbufDestroy(>k3Name);
|
||||
ffStrbufDestroy(>k3Pretty);
|
||||
}
|
||||
|
||||
+12
-12
@@ -5,20 +5,20 @@ void ffPrintIcons(FFinstance* instance)
|
||||
char plasma[256];
|
||||
ffParsePropFileHome(instance, ".config/kdeglobals", "Theme=%[^\n]", plasma);
|
||||
|
||||
char gtk2[256];
|
||||
ffParsePropFileHome(instance, ".gtkrc-2.0", "gtk-icon-theme-name=\"%[^\"]+", gtk2);
|
||||
if(gtk2[0] == '\0')
|
||||
strcpy(gtk2, "Adwaita");
|
||||
FFstrbuf* gtk2;
|
||||
ffCalculateGTK2(instance, NULL, >k2, NULL);
|
||||
|
||||
char gtk3[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-3.0/settings.ini", "gtk-icon-theme-name=%[^\n]", gtk3);
|
||||
if(gtk3[0] == '\0')
|
||||
strcpy(gtk3, "Adwaita");
|
||||
FFstrbuf* gtk3;
|
||||
ffCalculateGTK3(instance, NULL, >k3, NULL);
|
||||
|
||||
char gtk4[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-4.0/settings.ini", "gtk-icon-theme-name=%[^\n]", gtk4);
|
||||
if(gtk4[0] == '\0')
|
||||
strcpy(gtk4, "Adwaita");
|
||||
FFstrbuf* gtk4;
|
||||
ffCalculateGTK4(instance, NULL, >k4, NULL);
|
||||
|
||||
if(plasma[0] == '\0' && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0)
|
||||
{
|
||||
ffPrintError(instance, &instance->config.iconsKey, "Icons", "No icons found");
|
||||
return;
|
||||
}
|
||||
|
||||
FF_STRBUF_CREATE(gtkPretty);
|
||||
ffFormatGtkPretty(>kPretty, gtk2, gtk3, gtk4);
|
||||
|
||||
@@ -1,18 +1,30 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
static void printTerminalFont(FFinstance* instance, char* font)
|
||||
static void printTerminalFont(FFinstance* instance, const char* font)
|
||||
{
|
||||
FF_STRBUF_CREATE(name);
|
||||
double size;
|
||||
ffParseFont(font, &name, &size);
|
||||
FF_STRBUF_CREATE(pretty);
|
||||
ffFontPretty(&pretty, &name, size);
|
||||
|
||||
if(instance->config.termFontFormat.length == 0)
|
||||
{
|
||||
ffPrintLogoAndKey(instance, &instance->config.termFontKey, "Terminal font");
|
||||
puts(font);
|
||||
ffStrbufPutTo(&pretty, stdout);
|
||||
}
|
||||
else
|
||||
{
|
||||
ffPrintFormatString(instance, &instance->config.termFontKey, "Terminal font", &instance->config.termFontFormat, 1,
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, font}
|
||||
ffPrintFormatString(instance, &instance->config.termFontKey, "Terminal font", &instance->config.termFontFormat, 4,
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, font},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &name},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, &size},
|
||||
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &pretty}
|
||||
);
|
||||
}
|
||||
|
||||
ffStrbufDestroy(&name);
|
||||
ffStrbufDestroy(&pretty);
|
||||
}
|
||||
|
||||
static void printKonsole(FFinstance* instance)
|
||||
@@ -36,10 +48,7 @@ static void printKonsole(FFinstance* instance)
|
||||
return;
|
||||
}
|
||||
|
||||
char fontPretty[128];
|
||||
ffParseFont(font, fontPretty);
|
||||
|
||||
printTerminalFont(instance, fontPretty);
|
||||
printTerminalFont(instance, font);
|
||||
}
|
||||
|
||||
static void printTTY(FFinstance* instance)
|
||||
|
||||
+12
-12
@@ -5,20 +5,20 @@ void ffPrintTheme(FFinstance* instance)
|
||||
char plasma[256];
|
||||
ffParsePropFileHome(instance, ".config/kdeglobals", "Name=%[^\n]", plasma);
|
||||
|
||||
char gtk2[256];
|
||||
ffParsePropFileHome(instance, ".gtkrc-2.0", "gtk-theme-name=\"%[^\"]+", gtk2);
|
||||
if(gtk2[0] == '\0')
|
||||
strcpy(gtk2, "Raleigh");
|
||||
FFstrbuf* gtk2;
|
||||
ffCalculateGTK2(instance, >k2, NULL, NULL);
|
||||
|
||||
char gtk3[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-3.0/settings.ini", "gtk-theme-name=%[^\n]", gtk3);
|
||||
if(gtk3[0] == '\0')
|
||||
strcpy(gtk3, "Adwaita");
|
||||
FFstrbuf* gtk3;
|
||||
ffCalculateGTK3(instance, >k3, NULL, NULL);
|
||||
|
||||
char gtk4[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-4.0/settings.ini", "gtk-theme-name=%[^\n]", gtk4);
|
||||
if(gtk4[0] == '\0')
|
||||
strcpy(gtk4, "Adwaita");
|
||||
FFstrbuf* gtk4;
|
||||
ffCalculateGTK4(instance, >k4, NULL, NULL);
|
||||
|
||||
if(plasma[0] == '\0' && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0)
|
||||
{
|
||||
ffPrintError(instance, &instance->config.themeKey, "Theme", "No themes found");
|
||||
return;
|
||||
}
|
||||
|
||||
FF_STRBUF_CREATE(gtkPretty);
|
||||
ffFormatGtkPretty(>kPretty, gtk2, gtk3, gtk4);
|
||||
|
||||
Reference in New Issue
Block a user