diff options
Diffstat (limited to 'src/detection/font/font_linux.c')
| -rw-r--r-- | src/detection/font/font_linux.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/detection/font/font_linux.c b/src/detection/font/font_linux.c new file mode 100644 index 0000000..5e82b68 --- /dev/null +++ b/src/detection/font/font_linux.c @@ -0,0 +1,53 @@ +#include "common/font.h" +#include "common/parsing.h" +#include "detection/displayserver/displayserver.h" +#include "detection/gtk_qt/gtk_qt.h" +#include "font.h" + +static void generateString(FFFontResult* font) { + if (font->fonts[0].length > 0) { + ffStrbufAppend(&font->display, &font->fonts[0]); + ffStrbufAppendS(&font->display, " [Qt]"); + + for (uint8_t i = 1; i < ARRAY_SIZE(font->fonts); i++) { + if (font->fonts[i].length > 0) { + ffStrbufAppendS(&font->display, ", "); + break; + } + } + } + + ffParseGTK(&font->display, &font->fonts[1], &font->fonts[2], &font->fonts[3]); +} + +const char* ffDetectFontImpl(FFFontResult* result) { + const FFDisplayServerResult* wmde = ffConnectDisplayServer(); + + if (ffStrbufIgnCaseEqualS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY)) { + return "Font isn't supported in TTY"; + } + + FFfont qt; + ffFontInitQt(&qt, ffDetectQt()->font.chars); + ffStrbufAppend(&result->fonts[0], &qt.pretty); + ffFontDestroy(&qt); + + FFfont gtk2; + ffFontInitPango(>k2, ffDetectGTK2()->font.chars); + ffStrbufAppend(&result->fonts[1], >k2.pretty); + ffFontDestroy(>k2); + + FFfont gtk3; + ffFontInitPango(>k3, ffDetectGTK3()->font.chars); + ffStrbufAppend(&result->fonts[2], >k3.pretty); + ffFontDestroy(>k3); + + FFfont gtk4; + ffFontInitPango(>k4, ffDetectGTK4()->font.chars); + ffStrbufAppend(&result->fonts[3], >k4.pretty); + ffFontDestroy(>k4); + + generateString(result); + + return NULL; +} |