diff --git a/CHANGELOG.md b/CHANGELOG.md index f924471e1..da2ee2e85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Features: * Support xonsh detection (TerminalShell) +* Support Tabby version / terminal font detection Bugfixes: * Fix flatpak package count (#441) diff --git a/README.md b/README.md index 72bcc5e31..ad5b33583 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,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, Terminator, Termux, Tilix, TTY, Warp, WezTerm, Windows Terminal, XFCE4 Terminal +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 ``` ## Building diff --git a/src/common/properties.c b/src/common/properties.c index 2e3246517..48b797599 100644 --- a/src/common/properties.c +++ b/src/common/properties.c @@ -166,10 +166,10 @@ bool ffParsePropFileListValues(const FFlist* list, const char* relativeFile, uin FFstrbuf baseDir; ffStrbufInitA(&baseDir, 64); - for(uint32_t i = 0; i < list->length; i++) + FF_LIST_FOR_EACH(FFstrbuf, dirPrefix, *list) { //We need to copy the dir each time, because it used by multiple threads, so we can't directly write to it. - ffStrbufSet(&baseDir, ffListGet(list, i)); + ffStrbufSet(&baseDir, dirPrefix); ffStrbufAppendS(&baseDir, relativeFile); if(ffParsePropFileValues(baseDir.chars, numQueries, queries)) diff --git a/src/detection/terminalfont/terminalfont.c b/src/detection/terminalfont/terminalfont.c index 38d5dd5e1..f3c74a7fc 100644 --- a/src/detection/terminalfont/terminalfont.c +++ b/src/detection/terminalfont/terminalfont.c @@ -287,10 +287,10 @@ static void detectFromWindowsTeriminal(const FFinstance* instance, const FFstrbu FF_MAYBE_UNUSED static bool detectKitty(const FFinstance* instance, FFTerminalFontResult* result) { - FFstrbuf fontName; + FF_STRBUF_AUTO_DESTROY fontName; ffStrbufInit(&fontName); - FFstrbuf fontSize; + FF_STRBUF_AUTO_DESTROY fontSize; ffStrbufInit(&fontSize); FFpropquery fontQuery[] = { @@ -308,9 +308,6 @@ FF_MAYBE_UNUSED static bool detectKitty(const FFinstance* instance, FFTerminalFo ffFontInitValues(&result->font, fontName.chars, fontSize.chars); - ffStrbufDestroy(&fontName); - ffStrbufDestroy(&fontSize); - return true; } @@ -373,6 +370,32 @@ static bool detectWezterm(FF_MAYBE_UNUSED const FFinstance* instance, FFTerminal return true; } +static bool detectTabby(FF_MAYBE_UNUSED const FFinstance* instance, FFTerminalFontResult* result) +{ + FF_STRBUF_AUTO_DESTROY fontName; + ffStrbufInit(&fontName); + + FF_STRBUF_AUTO_DESTROY fontSize; + ffStrbufInit(&fontSize); + + FFpropquery fontQuery[] = { + {"font: ", &fontName}, + {"fontSize: ", &fontSize}, + }; + + if(!ffParsePropFileConfigValues(instance, "tabby/config.yaml", 2, fontQuery)) + return false; + + if(fontName.length == 0) + ffStrbufSetS(&fontName, "monospace"); + if(fontSize.length == 0) + ffStrbufSetS(&fontSize, "14"); + + ffFontInitValues(&result->font, fontName.chars, fontSize.chars); + + return true; +} + void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont); static bool detectTerminalFontCommon(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont) @@ -383,6 +406,8 @@ static bool detectTerminalFontCommon(const FFinstance* instance, const FFTermina detectTerminator(instance, terminalFont); else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "wezterm-gui")) detectWezterm(instance, terminalFont); + else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "tabby")) + detectTabby(instance, terminalFont); #ifndef _WIN32 else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "kitty")) diff --git a/src/util/platform/FFPlatform_unix.c b/src/util/platform/FFPlatform_unix.c index a971d75c5..251edef54 100644 --- a/src/util/platform/FFPlatform_unix.c +++ b/src/util/platform/FFPlatform_unix.c @@ -35,6 +35,7 @@ static void getConfigDirs(FFPlatform* platform) #if defined(__APPLE__) ffPlatformPathAddHome(&platform->configDirs, platform, "Library/Preferences/"); + ffPlatformPathAddHome(&platform->configDirs, platform, "Library/Application Support/"); #endif ffPlatformPathAddHome(&platform->configDirs, platform, "");