Files
fastfetch/src/modules/font.c
T

124 lines
4.1 KiB
C
Raw Normal View History

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, &gtk2);
2021-03-27 18:14:19 +01:00
2021-04-05 19:25:34 +02:00
FFstrbuf* gtk3;
ffCalculateGTK3(instance, NULL, NULL, &gtk3);
2021-02-18 22:25:36 +01:00
2021-04-05 19:25:34 +02:00
FFstrbuf* gtk4;
ffCalculateGTK4(instance, NULL, NULL, &gtk4);
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, &gtk2Name, &gtk2Size);
FF_STRBUF_CREATE(gtk2Pretty);
ffFontPretty(&gtk2Pretty, &gtk2Name, gtk2Size);
FF_STRBUF_CREATE(gtk3Name);
double gtk3Size;
ffParseFont(gtk3->chars, &gtk3Name, &gtk3Size);
FF_STRBUF_CREATE(gtk3Pretty);
ffFontPretty(&gtk3Pretty, &gtk3Name, gtk3Size);
FF_STRBUF_CREATE(gtk4Name);
double gtk4Size;
ffParseFont(gtk4->chars, &gtk4Name, &gtk4Size);
FF_STRBUF_CREATE(gtk4Pretty);
ffFontPretty(&gtk4Pretty, &gtk4Name, gtk4Size);
2021-03-27 18:14:19 +01:00
FF_STRBUF_CREATE(gtkPretty);
2021-04-05 19:25:34 +02:00
ffFormatGtkPretty(&gtkPretty, &gtk2Pretty, &gtk3Pretty, &gtk4Pretty);
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(&gtkPretty, 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, &gtk2Name},
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, &gtk2Size},
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &gtk2Pretty},
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, gtk3},
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &gtk3Name},
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, &gtk3Size},
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &gtk3Pretty},
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, gtk4},
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &gtk4Name},
(FFformatarg){FF_FORMAT_ARG_TYPE_DOUBLE, &gtk4Size},
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &gtk4Pretty},
2021-03-19 20:57:07 +01:00
(FFformatarg){FF_FORMAT_ARG_TYPE_STRBUF, &gtkPretty}
);
2021-02-18 22:25:36 +01:00
}
2021-04-05 19:25:34 +02:00
ffStrbufDestroy(&plasmaName);
ffStrbufDestroy(&plasmaPretty);
ffStrbufDestroy(&gtk2Name);
ffStrbufDestroy(&gtk2Pretty);
ffStrbufDestroy(&gtk3Name);
ffStrbufDestroy(&gtk3Pretty);
ffStrbufDestroy(&gtk3Name);
ffStrbufDestroy(&gtk3Pretty);
2021-03-27 18:14:19 +01:00
}