From aa0d1d94b2f7f40c741c6c92ed19df4737a1a07f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 11 Jun 2023 12:31:50 +0800 Subject: [PATCH] TerminalFont (Linux): support QTerminal --- CHANGELOG.md | 1 + README.md | 2 +- .../terminalfont/terminalfont_linux.c | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 387e2bf18..ff48ddd1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Changes: Features: * Support KDE wallpaper detection (Wallpaper, Linux) +* Support QTerminal version & terminal font detection # 1.11.3 diff --git a/README.md b/README.md index a6cb9d2aa..bd38a2239 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ Budgie, Cinnamon, Gnome, KDE Plasma, LXQt, Mate, XFCE4 ##### Terminal fonts ``` -Alacritty, Apple Terminal, ConEmu, Deepin Terminal, foot, Gnome Terminal, iTerm2, Kitty, Konsole, LXTerminal, mintty, Tabby, Terminator, Termux, Tilix, TTY, Warp, WezTerm, Windows Terminal, XFCE4 Terminal +Alacritty, Apple Terminal, ConEmu, Deepin Terminal, foot, Gnome Terminal, iTerm2, Kitty, Konsole, LXTerminal, mintty, QTerminal, Tabby, Terminator, Termux, Tilix, TTY, Warp, WezTerm, Windows Terminal, XFCE4 Terminal ``` ## Building diff --git a/src/detection/terminalfont/terminalfont_linux.c b/src/detection/terminalfont/terminalfont_linux.c index 68f096523..bb2afea2d 100644 --- a/src/detection/terminalfont/terminalfont_linux.c +++ b/src/detection/terminalfont/terminalfont_linux.c @@ -190,6 +190,23 @@ static void detectFootTerminal(const FFinstance* instance, FFTerminalFontResult* ffFontInitValues(&terminalFont->font, font.chars, &font.chars[equal + strlen("size=")]); } +static void detectQTerminal(const FFinstance* instance, FFTerminalFontResult* terminalFont) +{ + FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate(); + FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate(); + + ffParsePropFileConfigValues(instance, "qterminal.org/qterminal.ini", 2, (FFpropquery[]) { + {"fontFamily=", &fontName}, + {"fontSize=", &fontSize}, + }); + + if (fontName.length == 0) + ffStrbufAppendS(&fontName, "monospace"); + if (fontSize.length == 0) + ffStrbufAppendS(&fontSize, "12"); + ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars); +} + void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont) { if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "konsole") == 0) @@ -206,4 +223,6 @@ void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalSh detectDeepinTerminal(instance, terminalFont); else if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "foot") == 0) detectFootTerminal(instance, terminalFont); + else if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "qterminal") == 0) + detectQTerminal(instance, terminalFont); }