mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:42:09 +02:00
95 lines
3.2 KiB
C
95 lines
3.2 KiB
C
#include "fastfetch.h"
|
|
#include "common/printing.h"
|
|
|
|
#define FF_FONT_MODULE_NAME "Font"
|
|
#define FF_FONT_NUM_FORMAT_ARGS 21
|
|
|
|
void ffPrintFont(FFinstance* instance)
|
|
{
|
|
#ifdef __ANDROID__
|
|
ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, "Font detection is not supported on Android");
|
|
return;
|
|
#endif
|
|
|
|
const FFDisplayServerResult* wmde = ffConnectDisplayServer(instance);
|
|
|
|
if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, "TTY") == 0)
|
|
{
|
|
ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, "Font isn't supported in TTY");
|
|
return;
|
|
}
|
|
|
|
const FFstrbuf* plasmaRaw = &ffDetectQt(instance)->font;
|
|
const FFstrbuf* gtk2Raw = &ffDetectGTK2(instance)->font;
|
|
const FFstrbuf* gtk3Raw = &ffDetectGTK3(instance)->font;
|
|
const FFstrbuf* gtk4Raw = &ffDetectGTK4(instance)->font;
|
|
|
|
if(plasmaRaw->length == 0 && gtk2Raw->length == 0 && gtk3Raw->length == 0 && gtk4Raw->length == 0)
|
|
{
|
|
ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, "No fonts found");
|
|
return;
|
|
}
|
|
|
|
FFfont plasma;
|
|
ffFontInitQt(&plasma, plasmaRaw->chars);
|
|
|
|
FFfont gtk2;
|
|
ffFontInitPango(>k2, gtk2Raw->chars);
|
|
|
|
FFfont gtk3;
|
|
ffFontInitPango(>k3, gtk3Raw->chars);
|
|
|
|
FFfont gtk4;
|
|
ffFontInitPango(>k4, gtk4Raw->chars);
|
|
|
|
FFstrbuf gtk;
|
|
ffStrbufInitA(>k, 64);
|
|
ffParseGTK(>k, >k2.pretty, >k3.pretty, >k4.pretty);
|
|
|
|
if(instance->config.font.outputFormat.length == 0)
|
|
{
|
|
ffPrintLogoAndKey(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font.key);
|
|
if(plasma.pretty.length > 0)
|
|
{
|
|
ffStrbufWriteTo(&plasma.pretty, stdout);
|
|
fputs(" [QT]", stdout);
|
|
|
|
if(gtk.length > 0)
|
|
fputs(", ", stdout);
|
|
}
|
|
ffStrbufPutTo(>k, stdout);
|
|
}
|
|
else
|
|
{
|
|
ffPrintFormat(instance, FF_FONT_MODULE_NAME, 0, &instance->config.font, FF_FONT_NUM_FORMAT_ARGS, (FFformatarg[]){
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, plasmaRaw},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, &plasma.name},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, &plasma.size},
|
|
{FF_FORMAT_ARG_TYPE_LIST, &plasma.styles},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, &plasma.pretty},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, gtk2Raw},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k2.name},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k2.size},
|
|
{FF_FORMAT_ARG_TYPE_LIST, >k2.styles},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k2.pretty},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, gtk3Raw},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k3.name},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k3.size},
|
|
{FF_FORMAT_ARG_TYPE_LIST, >k3.styles},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k3.pretty},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, gtk4Raw},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k4.name},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k4.size},
|
|
{FF_FORMAT_ARG_TYPE_LIST, >k4.styles},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k4.pretty},
|
|
{FF_FORMAT_ARG_TYPE_STRBUF, >k}
|
|
});
|
|
}
|
|
|
|
ffFontDestroy(&plasma);
|
|
ffFontDestroy(>k2);
|
|
ffFontDestroy(>k3);
|
|
ffFontDestroy(>k4);
|
|
ffStrbufDestroy(>k);
|
|
}
|