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);