From dc216362d518ea76e788761012b62dcccc7247fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 24 Jul 2024 09:03:42 +0800 Subject: [PATCH] TerminalFont (Linux): detect system mono font --- src/detection/terminalfont/terminalfont.c | 30 ------------------- .../terminalfont/terminalfont_linux.c | 26 ++++++++++++++++ 2 files changed, 26 insertions(+), 30 deletions(-) diff --git a/src/detection/terminalfont/terminalfont.c b/src/detection/terminalfont/terminalfont.c index 12fd4a7c8..088411925 100644 --- a/src/detection/terminalfont/terminalfont.c +++ b/src/detection/terminalfont/terminalfont.c @@ -322,34 +322,6 @@ FF_MAYBE_UNUSED static bool detectKitty(const FFstrbuf* exe, FFTerminalFontResul return true; } -static void detectTerminator(FFTerminalFontResult* result) -{ - FF_STRBUF_AUTO_DESTROY useSystemFont = ffStrbufCreate(); - FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate(); - - FFpropquery fontQuery[] = { - {"use_system_font =", &useSystemFont}, - {"font =", &fontName}, - }; - - if(!ffParsePropFileConfigValues("terminator/config", 2, fontQuery)) - { - ffStrbufAppendS(&result->error, "Couldn't read Terminator config file"); - return; - } - - if(ffStrbufIgnCaseEqualS(&useSystemFont, "True")) - { - ffFontInitCopy(&result->font, "System"); - return; - } - - if(fontName.length == 0) - ffFontInitValues(&result->font, "mono", "8"); - else - ffFontInitPango(&result->font, fontName.chars); -} - static bool detectWezterm(const FFstrbuf* exe, FFTerminalFontResult* result) { FF_STRBUF_AUTO_DESTROY cli = ffStrbufCreateCopy(exe); @@ -442,8 +414,6 @@ static bool detectTerminalFontCommon(const FFTerminalResult* terminal, FFTermina { if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "alacritty")) detectAlacritty(terminalFont); - else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "terminator")) - detectTerminator(terminalFont); else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "wezterm-gui")) detectWezterm(&terminal->exe, terminalFont); else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "tabby")) diff --git a/src/detection/terminalfont/terminalfont_linux.c b/src/detection/terminalfont/terminalfont_linux.c index e2bfd5327..634160bcf 100644 --- a/src/detection/terminalfont/terminalfont_linux.c +++ b/src/detection/terminalfont/terminalfont_linux.c @@ -379,6 +379,30 @@ static void detectWarp(FFTerminalFontResult* terminalFont) } } +static void detectTerminator(FFTerminalFontResult* result) +{ + FF_STRBUF_AUTO_DESTROY useSystemFont = ffStrbufCreate(); + FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate(); + + if(!ffParsePropFileConfigValues("terminator/config", 2, (FFpropquery[]) { + {"use_system_font =", &useSystemFont}, + {"font =", &fontName}, + }) || ffStrbufIgnCaseEqualS(&useSystemFont, "True")) + { + FF_AUTO_FREE const char* fontName = getSystemMonospaceFont(); + if(ffStrSet(fontName)) + ffFontInitPango(&result->font, fontName); + else + ffStrbufAppendS(&result->error, "Couldn't get system monospace font name from GSettings / DConf"); + return; + } + + if(fontName.length == 0) + ffFontInitValues(&result->font, "Mono", "10"); + else + ffFontInitPango(&result->font, fontName.chars); +} + static void detectWestonTerminal(FFTerminalFontResult* terminalFont) { FF_STRBUF_AUTO_DESTROY font = ffStrbufCreate(); @@ -426,4 +450,6 @@ void ffDetectTerminalFontPlatform(const FFTerminalResult* terminal, FFTerminalFo detectWarp(terminalFont); else if(ffStrbufIgnCaseEqualS(&terminal->processName, "weston-terminal")) detectWestonTerminal(terminalFont); + else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "terminator")) + detectTerminator(terminalFont); }