master ohmu/fastfetch-openbsd / src / detection / font / font_linux.c
ohmu  ·  2026-10-15
 1#include "common/font.h"
 2#include "common/parsing.h"
 3#include "detection/displayserver/displayserver.h"
 4#include "detection/gtk_qt/gtk_qt.h"
 5#include "font.h"
 6
 7static void generateString(FFFontResult* font) {
 8    if (font->fonts[0].length > 0) {
 9        ffStrbufAppend(&font->display, &font->fonts[0]);
10        ffStrbufAppendS(&font->display, " [Qt]");
11
12        for (uint8_t i = 1; i < ARRAY_SIZE(font->fonts); i++) {
13            if (font->fonts[i].length > 0) {
14                ffStrbufAppendS(&font->display, ", ");
15                break;
16            }
17        }
18    }
19
20    ffParseGTK(&font->display, &font->fonts[1], &font->fonts[2], &font->fonts[3]);
21}
22
23const char* ffDetectFontImpl(FFFontResult* result) {
24    const FFDisplayServerResult* wmde = ffConnectDisplayServer();
25
26    if (ffStrbufIgnCaseEqualS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY)) {
27        return "Font isn't supported in TTY";
28    }
29
30    FFfont qt;
31    ffFontInitQt(&qt, ffDetectQt()->font.chars);
32    ffStrbufAppend(&result->fonts[0], &qt.pretty);
33    ffFontDestroy(&qt);
34
35    FFfont gtk2;
36    ffFontInitPango(&gtk2, ffDetectGTK2()->font.chars);
37    ffStrbufAppend(&result->fonts[1], &gtk2.pretty);
38    ffFontDestroy(&gtk2);
39
40    FFfont gtk3;
41    ffFontInitPango(&gtk3, ffDetectGTK3()->font.chars);
42    ffStrbufAppend(&result->fonts[2], &gtk3.pretty);
43    ffFontDestroy(&gtk3);
44
45    FFfont gtk4;
46    ffFontInitPango(&gtk4, ffDetectGTK4()->font.chars);
47    ffStrbufAppend(&result->fonts[3], &gtk4.pretty);
48    ffFontDestroy(&gtk4);
49
50    generateString(result);
51
52    return nullptr;
53}