From 37fe446a585229e04016078c9d65289b9c3617b6 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Thu, 1 Jan 2026 22:52:03 +0800 Subject: [PATCH] TerminalFont (Linux): supports cosmic-term --- .../terminalfont/terminalfont_linux.c | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/detection/terminalfont/terminalfont_linux.c b/src/detection/terminalfont/terminalfont_linux.c index 3dca397ca..7eb8c2cef 100644 --- a/src/detection/terminalfont/terminalfont_linux.c +++ b/src/detection/terminalfont/terminalfont_linux.c @@ -454,6 +454,32 @@ static void detectUrxvt(FFTerminalFontResult* terminalFont) } } +static bool detectCosmicTerm(FFTerminalFontResult* terminalFont) +{ + FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate(); + FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate(); + + FF_STRBUF_AUTO_DESTROY path = ffStrbufCreateCopy(&instance.state.platform.homeDir); + ffStrbufAppendS(&path, ".config/cosmic/com.system76.CosmicTerm/v1/"); + uint32_t baseLen = path.length; + + ffStrbufAppendS(&path, "font_name"); + ffReadFileBuffer(path.chars, &fontName); + ffStrbufTrim(&path, '"'); + ffStrbufSubstrBefore(&path, baseLen); + if (fontName.length == 0) ffStrbufSetStatic(&fontName, "Noto Sans Mono"); + + ffStrbufAppendS(&path, "font_size"); + if (ffReadFileBuffer(path.chars, &fontSize)) + ffStrbufAppendS(&fontSize, "px"); + ffStrbufSubstrBefore(&path, baseLen); + if (fontSize.length == 0) ffStrbufSetStatic(&fontSize, "14px"); + + ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars); + + return true; +} + #ifdef __HAIKU__ static void detectHaikuTerminal(FFTerminalFontResult* terminalFont) { @@ -513,6 +539,8 @@ ffDetectTerminalFontPlatform detectTerminator(terminalFont); else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "sakura")) detectFromConfigFile("sakura/sakura.conf", "font=", terminalFont); + else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "cosmic-term")) + detectCosmicTerm(terminalFont); #ifdef __HAIKU__ else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "Terminal")) detectHaikuTerminal(terminalFont);