2021-02-18 22:25:36 +01:00
|
|
|
#include "fastfetch.h"
|
|
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
#include <unistd.h>
|
|
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
void ffPrintFont(FFinstance* instance)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
2021-04-05 19:25:34 +02:00
|
|
|
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;
|
|
|
|
|
|
2021-02-18 22:25:36 +01:00
|
|
|
char plasma[256];
|
2021-04-05 19:25:34 +02:00
|
|
|
plasma[0] = '\0';
|
|
|
|
|
if(plasmaFileExists)
|
|
|
|
|
ffParsePropFile(plasmaFile.chars, "font=%[^\n]", plasma);
|
2021-03-27 18:14:19 +01:00
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
ffStrbufDestroy(&plasmaFile);
|
2021-02-19 16:23:41 +01:00
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
FFstrbuf* gtk2;
|
|
|
|
|
ffCalculateGTK2(instance, NULL, NULL, >k2);
|
2021-03-27 18:14:19 +01:00
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
FFstrbuf* gtk3;
|
|
|
|
|
ffCalculateGTK3(instance, NULL, NULL, >k3);
|
2021-02-18 22:25:36 +01:00
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
FFstrbuf* gtk4;
|
|
|
|
|
ffCalculateGTK4(instance, NULL, NULL, >k4);
|
2021-03-27 18:14:19 +01:00
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
if(plasma[0] == '\0' && !plasmaFileExists && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0)
|
|
|
|
|
{
|
|
|
|
|
ffPrintError(instance, &instance->config.fontKey, "Font", "No fonts found");
|
|
|
|
|
return;
|
|
|
|
|
}
|
2021-02-18 22:25:36 +01:00
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
FF_STRBUF_CREATE(plasmaName);
|
|
|
|
|
FF_STRBUF_CREATE(plasmaPretty);
|
|
|
|
|
double plasmaSize;
|
2021-02-19 16:23:41 +01:00
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
if(plasma[0] == '\0' && plasmaFileExists)
|
|
|
|
|
{
|
|
|
|
|
strcpy(plasma, "Noto Sans, 10");
|
|
|
|
|
ffStrbufSetS(&plasmaName, "Noto Sans");
|
|
|
|
|
plasmaSize = 10;
|
|
|
|
|
ffStrbufSetS(&plasmaPretty, "Noto Sans (10pt)");
|
|
|
|
|
}
|
2021-02-19 16:23:41 +01:00
|
|
|
else
|
2021-04-05 19:25:34 +02:00
|
|
|
{
|
|
|
|
|
ffParseFont(plasma, &plasmaName, &plasmaSize);
|
|
|
|
|
ffFontPretty(&plasmaPretty, &plasmaName, plasmaSize);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FF_STRBUF_CREATE(gtk2Name);
|
|
|
|
|
double gtk2Size;
|
|
|
|
|
ffParseFont(gtk2->chars, >k2Name, >k2Size);
|
|
|
|
|
FF_STRBUF_CREATE(gtk2Pretty);
|
|
|
|
|
ffFontPretty(>k2Pretty, >k2Name, gtk2Size);
|
|
|
|
|
|
|
|
|
|
FF_STRBUF_CREATE(gtk3Name);
|
|
|
|
|
double gtk3Size;
|
|
|
|
|
ffParseFont(gtk3->chars, >k3Name, >k3Size);
|
|
|
|
|
FF_STRBUF_CREATE(gtk3Pretty);
|
|
|
|
|
ffFontPretty(>k3Pretty, >k3Name, gtk3Size);
|
|
|
|
|
|
|
|
|
|
FF_STRBUF_CREATE(gtk4Name);
|
|
|
|
|
double gtk4Size;
|
|
|
|
|
ffParseFont(gtk4->chars, >k4Name, >k4Size);
|
|
|
|
|
FF_STRBUF_CREATE(gtk4Pretty);
|
|
|
|
|
ffFontPretty(>k4Pretty, >k4Name, gtk4Size);
|
2021-03-27 18:14:19 +01:00
|
|
|
|
2021-03-21 16:52:17 +01:00
|
|
|
FF_STRBUF_CREATE(gtkPretty);
|
2021-04-05 19:25:34 +02:00
|
|
|
ffFormatGtkPretty(>kPretty, >k2Pretty, >k3Pretty, >k4Pretty);
|
2021-03-19 20:57:07 +01:00
|
|
|
|
2021-03-23 19:48:52 +01:00
|
|
|
if(instance->config.fontFormat.length == 0)
|
2021-02-18 22:25:36 +01:00
|
|
|
{
|
2021-04-03 11:39:59 +02:00
|
|
|
ffPrintLogoAndKey(instance, &instance->config.fontKey, "Font");
|
2021-04-05 19:25:34 +02:00
|
|
|
|
|
|
|
|
if(plasma[0] != '\0')
|
|
|
|
|
{
|
|
|
|
|
ffStrbufWriteTo(&plasmaPretty, stdout);
|
|
|
|
|
fputs(" [Plasma]", stdout);
|
|
|
|
|
|
|
|
|
|
if(gtkPretty.length > 0)
|
|
|
|
|
fputs(", ", stdout);
|
|
|
|
|
}
|
2021-03-22 20:02:32 +01:00
|
|
|
ffStrbufPutTo(>kPretty, stdout);
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2021-04-05 19:25:34 +02:00
|
|
|
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},
|
2021-03-19 20:57:07 +01:00
|
|
|
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, >kPretty}
|
|
|
|
|
);
|
2021-02-18 22:25:36 +01:00
|
|
|
}
|
|
|
|
|
|
2021-04-05 19:25:34 +02:00
|
|
|
ffStrbufDestroy(&plasmaName);
|
|
|
|
|
ffStrbufDestroy(&plasmaPretty);
|
|
|
|
|
|
|
|
|
|
ffStrbufDestroy(>k2Name);
|
|
|
|
|
ffStrbufDestroy(>k2Pretty);
|
|
|
|
|
|
|
|
|
|
ffStrbufDestroy(>k3Name);
|
|
|
|
|
ffStrbufDestroy(>k3Pretty);
|
|
|
|
|
|
|
|
|
|
ffStrbufDestroy(>k3Name);
|
|
|
|
|
ffStrbufDestroy(>k3Pretty);
|
2021-03-27 18:14:19 +01:00
|
|
|
}
|