TerminalFont: support deepin-terminal

This commit is contained in:
李通洲
2022-12-01 17:45:17 +08:00
parent b3e635a923
commit 7991abab0b
2 changed files with 52 additions and 1 deletions
+1 -1
View File
@@ -104,7 +104,7 @@ KDE Plasma, Gnome, Cinnamon, Mate, XFCE4, LXQt
##### Terminal fonts
```
Konsole, Gnome Terminal, Tilix, XFCE4 Terminal, Alacritty, LXTerminal, iTerm2, Apple Terminal, Warp, TTY, Windows Terminal, Termux, mintty, ConEmu
Konsole, Gnome Terminal, Tilix, XFCE4 Terminal, Alacritty, LXTerminal, Deepin Terminal, iTerm2, Apple Terminal, Warp, TTY, Windows Terminal, Termux, mintty, ConEmu
```
## Building
@@ -140,6 +140,55 @@ static void detectXFCETerminal(const FFinstance* instance, FFTerminalFontResult*
ffStrbufDestroy(&useSysFont);
}
static void detectDeepinTerminal(const FFinstance* instance, FFTerminalFontResult* terminalFont)
{
FFstrbuf fontName;
ffStrbufInit(&fontName);
FFstrbuf fontSize;
ffStrbufInit(&fontSize);
FFstrbuf profile;
ffStrbufInitF(&profile, "%s/.config/deepin/deepin-terminal/config.conf", instance->state.passwd->pw_dir);
FILE* file = fopen(profile.chars, "r");
if(file)
{
char* line = NULL;
size_t len = 0;
for(int count = 0; getline(&line, &len, file) != -1 && count < 2;)
{
if(strcmp(line, "[basic.interface.font]\n") == 0)
{
if(getline(&line, &len, file) != -1)
ffParsePropLine(line, "value=", &fontName);
++count;
}
else if(strcmp(line, "[basic.interface.font_size]\n") == 0)
{
if(getline(&line, &len, file) != -1)
ffParsePropLine(line, "value=", &fontSize);
++count;
}
}
fclose(file);
}
ffStrbufDestroy(&profile);
if(fontName.length == 0)
ffStrbufAppendS(&fontName, "Noto Sans Mono");
if(fontSize.length == 0)
ffStrbufAppendS(&fontSize, "11");
ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars);
ffStrbufDestroy(&fontName);
ffStrbufDestroy(&fontSize);
}
void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
{
if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "konsole") == 0)
@@ -152,4 +201,6 @@ void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalSh
detectFromGSettings(instance, "/com/gexperts/Tilix/profiles/", "com.gexperts.Tilix.ProfilesList", "com.gexperts.Tilix.Profile", terminalFont);
else if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "gnome-terminal-") == 0)
detectFromGSettings(instance, "/org/gnome/terminal/legacy/profiles:/:", "org.gnome.Terminal.ProfilesList", "org.gnome.Terminal.Legacy.Profile", terminalFont);
else if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "deepin-terminal") == 0)
detectDeepinTerminal(instance, terminalFont);
}