mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-11-04 04:04:17 +01:00
terminal font
This commit is contained in:
+4
-18
@@ -1,19 +1,5 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
static void parseFont(char* font, char* buffer)
|
||||
{
|
||||
char name[64];
|
||||
char size[32];
|
||||
int scanned = sscanf(font, "%[^,], %[^,]", name, size);
|
||||
|
||||
if(scanned == 0)
|
||||
strcpy(buffer, font);
|
||||
else if(scanned == 1)
|
||||
strcpy(buffer, name);
|
||||
else
|
||||
sprintf(buffer, "%s (%spt)", name, size);
|
||||
}
|
||||
|
||||
void ffPrintFont(FFinstance* instance)
|
||||
{
|
||||
char plasma[256];
|
||||
@@ -26,7 +12,7 @@ void ffPrintFont(FFinstance* instance)
|
||||
if(gtk2[0] == '\0')
|
||||
gtk2Pretty[0] = '\0';
|
||||
else
|
||||
parseFont(gtk2, gtk2Pretty);
|
||||
ffParseFont(gtk2, gtk2Pretty);
|
||||
|
||||
char gtk3[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-3.0/settings.ini", "gtk-font-name=%[^\n]", gtk3);
|
||||
@@ -35,7 +21,7 @@ void ffPrintFont(FFinstance* instance)
|
||||
if(gtk3[0] == '\0')
|
||||
gtk3Pretty[0] = '\0';
|
||||
else
|
||||
parseFont(gtk3, gtk3Pretty);
|
||||
ffParseFont(gtk3, gtk3Pretty);
|
||||
|
||||
char gtk4[256];
|
||||
ffParsePropFileHome(instance, ".config/gtk-4.0/settings.ini", "gtk-font-name=%[^\n]", gtk4);
|
||||
@@ -44,7 +30,7 @@ void ffPrintFont(FFinstance* instance)
|
||||
if(gtk4Pretty[0] == '\0')
|
||||
gtk4Pretty[0] = '\0';
|
||||
else
|
||||
parseFont(gtk4, gtk4Pretty);
|
||||
ffParseFont(gtk4, gtk4Pretty);
|
||||
|
||||
ffPrintLogoAndKey(instance, "Font");
|
||||
|
||||
@@ -55,7 +41,7 @@ void ffPrintFont(FFinstance* instance)
|
||||
else
|
||||
{
|
||||
char plasmaPretty[256];
|
||||
parseFont(plasma, plasmaPretty);
|
||||
ffParseFont(plasma, plasmaPretty);
|
||||
printf("%s [Plasma], ", plasmaPretty);
|
||||
}
|
||||
|
||||
|
||||
+44
-12
@@ -1,6 +1,6 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
static void printTerminalName(FFinstance* instance, const char* pid)
|
||||
static void getTerminalName(FFinstance* instance, const char* pid, char* terminal, char* error)
|
||||
{
|
||||
char file[256];
|
||||
sprintf(file, "/proc/%s/stat", pid);
|
||||
@@ -8,9 +8,7 @@ static void printTerminalName(FFinstance* instance, const char* pid)
|
||||
FILE* stat = fopen(file, "r");
|
||||
if(stat == NULL)
|
||||
{
|
||||
char error[300];
|
||||
sprintf(error, "fopen(\"%s\", \"r\") == NULL", file);
|
||||
ffPrintError(instance, "Terminal", error);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -18,7 +16,7 @@ static void printTerminalName(FFinstance* instance, const char* pid)
|
||||
char ppid[256];
|
||||
if(fscanf(stat, "%*s (%[^)])%*s%s", name, ppid) != 2)
|
||||
{
|
||||
ffPrintError(instance, "Terminal", "fscanf(stat, \"%*s (%[^)])%*s%s\", name, ppid) != 2");
|
||||
strcpy(error, "fscanf(stat, \"%*s (%[^)])%*s%s\", name, ppid) != 2");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -35,28 +33,62 @@ static void printTerminalName(FFinstance* instance, const char* pid)
|
||||
strcasecmp(name, "doas") == 0 ||
|
||||
strcasecmp(name, "strace") == 0 )
|
||||
{
|
||||
printTerminalName(instance, ppid);
|
||||
getTerminalName(instance, ppid, terminal, error);
|
||||
return;
|
||||
}
|
||||
|
||||
ffPrintLogoAndKey(instance, "Terminal");
|
||||
|
||||
if(
|
||||
strcasecmp(name, "systemd") == 0 ||
|
||||
strcasecmp(name, "init") == 0 ||
|
||||
strcasecmp(name, "login") == 0 ||
|
||||
strcasecmp(name, "0") == 0 ||
|
||||
strcasecmp(ppid, "0") == 0 )
|
||||
{
|
||||
puts("TTY");
|
||||
strcpy(terminal, "TTY");
|
||||
}
|
||||
else
|
||||
{
|
||||
puts(name);
|
||||
strcpy(terminal, name);
|
||||
}
|
||||
}
|
||||
|
||||
void ffPopulateTerminal(FFinstance* instance)
|
||||
{
|
||||
if(instance->state.terminal.value != NULL || instance->state.terminal.error != NULL)
|
||||
return;
|
||||
|
||||
static char terminal[256];
|
||||
static char error[256];
|
||||
|
||||
terminal[0] = '\0';
|
||||
error[0] = '\0';
|
||||
|
||||
char ppid[256];
|
||||
sprintf(ppid, "%i", getppid());
|
||||
getTerminalName(instance, ppid, terminal, error);
|
||||
|
||||
if(terminal[0] != '\0')
|
||||
instance->state.terminal.value = terminal;
|
||||
|
||||
if(error[0] != '\0')
|
||||
instance->state.terminal.error = error;
|
||||
}
|
||||
|
||||
void ffPrintTerminal(FFinstance* instance)
|
||||
{
|
||||
char ppid[256];
|
||||
sprintf(ppid, "%i", getppid());
|
||||
printTerminalName(instance, ppid);
|
||||
ffPopulateTerminal(instance);
|
||||
|
||||
if(instance->state.terminal.value != NULL)
|
||||
{
|
||||
ffPrintLogoAndKey(instance, "Terminal");
|
||||
puts(instance->state.terminal.value);
|
||||
}
|
||||
else if(instance->state.terminal.error != NULL)
|
||||
{
|
||||
ffPrintError(instance, "Terminal", instance->state.terminal.error);
|
||||
}
|
||||
else
|
||||
{
|
||||
ffPrintError(instance, "Terminal", "ffPopulateTerminal failed");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
static void printKonsole(FFinstance* instance)
|
||||
{
|
||||
char profile[128];
|
||||
ffParsePropFileHome(instance, ".config/konsolerc", "DefaultProfile=%[^\n]", profile);
|
||||
if(profile[0] == '\0')
|
||||
{
|
||||
ffPrintError(instance, "Terminal Font", "Couldn't find \"DefaultProfile=%[^\n]\" in \".config/konsolerc\"");
|
||||
return;
|
||||
}
|
||||
|
||||
char profilePath[256];
|
||||
sprintf(profilePath, ".local/share/konsole/%s", profile);
|
||||
|
||||
char font[128];
|
||||
ffParsePropFileHome(instance, profilePath, "Font=%[^\n]", font);
|
||||
if(font[0] == '\0')
|
||||
{
|
||||
char error[256];
|
||||
sprintf(error, "Terminal Font", "Couldn't find \"Font=%[^\n]\" in \"%s\"", profilePath);
|
||||
ffPrintError(instance, "Terminal Font", error);
|
||||
}
|
||||
|
||||
char fontPretty[128];
|
||||
ffParseFont(font, fontPretty);
|
||||
|
||||
ffPrintLogoAndKey(instance, "Terminal Font");
|
||||
puts(fontPretty);
|
||||
}
|
||||
|
||||
static void printTTY(FFinstance* instance)
|
||||
{
|
||||
char font[128];
|
||||
ffParsePropFile("/etc/vconsole.conf", "Font=%[^\n]", font);
|
||||
if(font[0] == '\0')
|
||||
strcpy(font, "hardware-supplied VGA font");
|
||||
|
||||
ffPrintLogoAndKey(instance, "Terminal Font");
|
||||
puts(font);
|
||||
}
|
||||
|
||||
void ffPrintTerminalFont(FFinstance* instance)
|
||||
{
|
||||
ffPopulateTerminal(instance);
|
||||
|
||||
if(instance->state.terminal.error != NULL)
|
||||
{
|
||||
ffPrintError(instance, "Terminal Font", "Terminal Font needs successfull terminal detection");
|
||||
}
|
||||
else if(instance->state.terminal.value == NULL)
|
||||
{
|
||||
ffPrintError(instance, "Terminal Font", "ffPopulateTerminal failed");
|
||||
}
|
||||
|
||||
if(strcasecmp(instance->state.terminal.value, "konsole") == 0)
|
||||
printKonsole(instance);
|
||||
else if(strcasecmp(instance->state.terminal.value, "TTY") == 0)
|
||||
printTTY(instance);
|
||||
else
|
||||
{
|
||||
char error[256];
|
||||
sprintf(error, "Unknown terminal: %s", instance->state.terminal.value);
|
||||
ffPrintError(instance, "Terminal Font", error);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user