TerminalFont (Linux): supports cosmic-term

This commit is contained in:
Carter Li
2026-01-01 22:52:03 +08:00
parent f03a0bc202
commit 37fe446a58
@@ -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);