From ddf509946184e9864d6284b842e8220762e9d445 Mon Sep 17 00:00:00 2001 From: Derek Passen Date: Sat, 7 Jun 2025 12:00:03 -0400 Subject: [PATCH] TerminalFont: support rio terminal emulator (#1789) * Enable terminal font detection for rio terminal emulator https://rioterm.com https://rioterm.com/docs/config https://rioterm.com/docs/config#fonts * Update src/detection/terminalfont/terminalfont.c Fix default rio font name Co-authored-by: Carter Li --------- Co-authored-by: Carter Li --- src/detection/terminalfont/terminalfont.c | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/detection/terminalfont/terminalfont.c b/src/detection/terminalfont/terminalfont.c index 156cfb3c7..fe1f8e52c 100644 --- a/src/detection/terminalfont/terminalfont.c +++ b/src/detection/terminalfont/terminalfont.c @@ -243,6 +243,29 @@ static bool detectContour(const FFstrbuf* exe, FFTerminalFontResult* result) return true; } +static bool detectRio(FFTerminalFontResult* terminalFont) +{ + FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate(); + FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate(); + + FFpropquery fontQueryToml[] = { + {"family =", &fontName}, + {"size =", &fontSize}, + }; + + ffParsePropFileConfigValues("rio/config.toml", 2, fontQueryToml); + + if(fontName.length == 0) + ffStrbufAppendS(&fontName, "Cascadia Code"); + + if(fontSize.length == 0) + ffStrbufAppendS(&fontSize, "18"); + + ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars); + + return true; +} + void ffDetectTerminalFontPlatform(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont); static bool detectTerminalFontCommon(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont) @@ -257,6 +280,8 @@ static bool detectTerminalFontCommon(const FFTerminalResult* terminal, FFTermina detectContour(&terminal->exe, terminalFont); else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "ghostty")) detectGhostty(terminalFont); + else if(ffStrbufStartsWithIgnCaseS(&terminal->processName, "rio")) + detectRio(terminalFont); #ifndef _WIN32 else if(ffStrbufStartsWithIgnCaseS(&terminal->exe, "/dev/pts/"))