mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:42:09 +02:00
small refactoring
This commit is contained in:
+3
-1
@@ -48,7 +48,9 @@ set(SRCS
|
||||
src/common.c
|
||||
src/logo.c
|
||||
src/util/FFstrbuf.c
|
||||
src/helpers/gtk.c
|
||||
src/helpers/calculateGtk.c
|
||||
src/helpers/calculateTerminal.c
|
||||
src/helpers/calculateWM.c
|
||||
src/modules/break.c
|
||||
src/modules/custom.c
|
||||
src/modules/title.c
|
||||
|
||||
+87
-3
@@ -399,6 +399,86 @@ void ffPrintFormatString(FFinstance* instance, FFstrbuf* customKey, const char*
|
||||
ffStrbufDestroy(&buffer);
|
||||
}
|
||||
|
||||
void ffFormatGtkPretty(FFstrbuf* buffer, FFstrbuf* gtk2, FFstrbuf* gtk3, FFstrbuf* gtk4)
|
||||
{
|
||||
if(gtk2->length > 0 && gtk3->length > 0 && gtk4->length > 0)
|
||||
{
|
||||
if((ffStrbufIgnCaseComp(gtk2, gtk3) == 0) && (ffStrbufIgnCaseComp(gtk2, gtk4) == 0))
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK2/3/4]");
|
||||
}
|
||||
else if(ffStrbufIgnCaseComp(gtk2, gtk3) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK2/3], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
else if(ffStrbufIgnCaseComp(gtk3, gtk4) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK3/4]");
|
||||
}
|
||||
else
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2], ");
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
}
|
||||
else if(gtk2->length > 0 && gtk3->length > 0)
|
||||
{
|
||||
if(ffStrbufIgnCaseComp(gtk2, gtk3) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK2/3]");
|
||||
}
|
||||
else
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2], ");
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3]");
|
||||
}
|
||||
}
|
||||
else if(gtk3->length > 0 && gtk4->length > 0)
|
||||
{
|
||||
if(ffStrbufIgnCaseComp(gtk3, gtk4) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK3/4]");
|
||||
}
|
||||
else
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
}
|
||||
else if(gtk2->length > 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2]");
|
||||
}
|
||||
else if(gtk3->length > 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3]");
|
||||
}
|
||||
else if(gtk4->length > 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
}
|
||||
|
||||
void ffParseFont(const char* font, FFstrbuf* name, double* size)
|
||||
{
|
||||
ffStrbufEnsureCapacity(name, 32);
|
||||
@@ -417,7 +497,11 @@ void ffParseFont(const char* font, FFstrbuf* name, double* size)
|
||||
void ffFontPretty(FFstrbuf* buffer, const FFstrbuf* name, double size)
|
||||
{
|
||||
ffStrbufAppend(buffer, name);
|
||||
ffStrbufAppendS(buffer, " (");
|
||||
ffStrbufAppendF(buffer, "%g", size);
|
||||
ffStrbufAppendS(buffer, "pt)");
|
||||
|
||||
if(size > 0)
|
||||
{
|
||||
ffStrbufAppendS(buffer, " (");
|
||||
ffStrbufAppendF(buffer, "%g", size);
|
||||
ffStrbufAppendS(buffer, "pt)");
|
||||
}
|
||||
}
|
||||
|
||||
+3
-5
@@ -143,6 +143,7 @@ void ffParsePropFileHome(FFinstance* instance, const char* relativeFile, const c
|
||||
void ffParseFormatStringV(FFstrbuf* buffer, FFstrbuf* formatstr, uint32_t numArgs, va_list argp);
|
||||
void ffParseFormatString(FFstrbuf* buffer, FFstrbuf* formatstr, uint32_t numArgs, ...);
|
||||
void ffPrintFormatString(FFinstance* instance, FFstrbuf* customKey, const char* defKey, FFstrbuf* formatstr, uint32_t numArgs, ...);
|
||||
void ffFormatGtkPretty(FFstrbuf* buffer, FFstrbuf* gtk2, FFstrbuf* gtk3, FFstrbuf* gtk4);
|
||||
void ffParseFont(const char* font, FFstrbuf* name, double* size);
|
||||
void ffFontPretty(FFstrbuf* buffer, const FFstrbuf* name, double size);
|
||||
void ffFinish(FFinstance* instance);
|
||||
@@ -163,14 +164,11 @@ void ffPrintLogos(bool color);
|
||||
void ffCalculateGTK2(FFinstance* instance, FFstrbuf** themeNamePtr, FFstrbuf** iconsNamePtr, FFstrbuf** fontNamePtr);
|
||||
void ffCalculateGTK4(FFinstance* instance, FFstrbuf** themeNamePtr, FFstrbuf** iconsNamePtr, FFstrbuf** fontNamePtr);
|
||||
void ffCalculateGTK3(FFinstance* instance, FFstrbuf** themeNamePtr, FFstrbuf** iconsNamePtr, FFstrbuf** fontNamePtr);
|
||||
|
||||
void ffFormatGtkPretty(FFstrbuf* buffer, FFstrbuf* gtk2, FFstrbuf* gtk3, FFstrbuf* gtk4);
|
||||
void ffCalculateWM(FFinstance* instance, FFstrbuf** prettyNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr);
|
||||
void ffCalculateTerminal(FFinstance* instance, FFstrbuf** exeNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr);
|
||||
|
||||
//Module functions
|
||||
|
||||
void ffCalculateTerminal(FFinstance* instance, FFstrbuf** exeNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr);
|
||||
void ffCalculateWM(FFinstance* instance, FFstrbuf** prettyNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr);
|
||||
|
||||
void ffPrintCustom(FFinstance* instance, const char* key, const char* value);
|
||||
void ffPrintBreak(FFinstance* instance);
|
||||
void ffPrintTitle(FFinstance* instance);
|
||||
|
||||
@@ -279,83 +279,3 @@ void ffCalculateGTK4(FFinstance* instance, FFstrbuf** themeNamePtr, FFstrbuf** i
|
||||
}
|
||||
|
||||
#undef FF_CALCULATE_GTK_IMPL
|
||||
|
||||
void ffFormatGtkPretty(FFstrbuf* buffer, FFstrbuf* gtk2, FFstrbuf* gtk3, FFstrbuf* gtk4)
|
||||
{
|
||||
if(gtk2->length > 0 && gtk3->length > 0 && gtk4->length > 0)
|
||||
{
|
||||
if((ffStrbufIgnCaseComp(gtk2, gtk3) == 0) && (ffStrbufIgnCaseComp(gtk2, gtk4) == 0))
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK2/3/4]");
|
||||
}
|
||||
else if(ffStrbufIgnCaseComp(gtk2, gtk3) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK2/3], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
else if(ffStrbufIgnCaseComp(gtk3, gtk4) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK3/4]");
|
||||
}
|
||||
else
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2], ");
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
}
|
||||
else if(gtk2->length > 0 && gtk3->length > 0)
|
||||
{
|
||||
if(ffStrbufIgnCaseComp(gtk2, gtk3) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK2/3]");
|
||||
}
|
||||
else
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2], ");
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3]");
|
||||
}
|
||||
}
|
||||
else if(gtk3->length > 0 && gtk4->length > 0)
|
||||
{
|
||||
if(ffStrbufIgnCaseComp(gtk3, gtk4) == 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK3/4]");
|
||||
}
|
||||
else
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3], ");
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
}
|
||||
else if(gtk2->length > 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk2);
|
||||
ffStrbufAppendS(buffer, " [GTK2]");
|
||||
}
|
||||
else if(gtk3->length > 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk3);
|
||||
ffStrbufAppendS(buffer, " [GTK3]");
|
||||
}
|
||||
else if(gtk4->length > 0)
|
||||
{
|
||||
ffStrbufAppend(buffer, gtk4);
|
||||
ffStrbufAppendS(buffer, " [GTK4]");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
static void getTerminalName(FFinstance* instance, const char* pid, FFstrbuf* exeName, FFstrbuf* processName, FFstrbuf* error)
|
||||
{
|
||||
char statFile[234];
|
||||
sprintf(statFile, "/proc/%s/stat", pid);
|
||||
|
||||
FILE* stat = fopen(statFile, "r");
|
||||
if(stat == NULL)
|
||||
{
|
||||
ffStrbufSetF(error, "fopen(\"%s\", \"r\") == NULL", statFile);
|
||||
return;
|
||||
}
|
||||
|
||||
char name[256];
|
||||
char ppid[256];
|
||||
if(fscanf(stat, "%*s (%[^)])%*s%s", name, ppid) != 2)
|
||||
{
|
||||
ffStrbufSetS(error, "fscanf(stat, \"%*s (%[^)])%*s%s\", name, ppid) != 2");
|
||||
return;
|
||||
}
|
||||
|
||||
fclose(stat);
|
||||
|
||||
if (
|
||||
strcasecmp(name, "bash") == 0 ||
|
||||
strcasecmp(name, "sh") == 0 ||
|
||||
strcasecmp(name, "zsh") == 0 ||
|
||||
strcasecmp(name, "ksh") == 0 ||
|
||||
strcasecmp(name, "fish") == 0 ||
|
||||
strcasecmp(name, "sudo") == 0 ||
|
||||
strcasecmp(name, "su") == 0 ||
|
||||
strcasecmp(name, "doas") == 0 ||
|
||||
strcasecmp(name, "strace") == 0 )
|
||||
{
|
||||
getTerminalName(instance, ppid, exeName, processName, error);
|
||||
return;
|
||||
}
|
||||
|
||||
char cmdlineFile[234];
|
||||
sprintf(cmdlineFile, "/proc/%s/cmdline", pid);
|
||||
|
||||
ffGetFileContent(cmdlineFile, exeName);
|
||||
ffStrbufSubstrBeforeFirstC(exeName, '\0');
|
||||
ffStrbufSubstrAfterLastC(exeName, '/');
|
||||
|
||||
ffStrbufSetS(processName, name);
|
||||
}
|
||||
|
||||
void ffCalculateTerminal(FFinstance* instance, FFstrbuf** exeNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr)
|
||||
{
|
||||
static FFstrbuf exeName;
|
||||
static FFstrbuf processName;
|
||||
static FFstrbuf error;
|
||||
static bool init = false;
|
||||
|
||||
if(exeNamePtr != NULL)
|
||||
*exeNamePtr = &exeName;
|
||||
|
||||
if(processNamePtr != NULL)
|
||||
*processNamePtr = &processName;
|
||||
|
||||
if(errorPtr != NULL)
|
||||
*errorPtr = &error;
|
||||
|
||||
if(init)
|
||||
return;
|
||||
init = true;
|
||||
|
||||
ffStrbufInit(&exeName);
|
||||
ffStrbufInit(&processName);
|
||||
ffStrbufInit(&error);
|
||||
|
||||
char ppid[256];
|
||||
sprintf(ppid, "%i", getppid());
|
||||
|
||||
getTerminalName(instance, ppid, &exeName, &processName, &error);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
void ffCalculateWM(FFinstance* instance, FFstrbuf** prettyNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr)
|
||||
{
|
||||
static FFstrbuf prettyName;
|
||||
static FFstrbuf processName;
|
||||
static FFstrbuf error;
|
||||
static bool init = false;
|
||||
|
||||
if(prettyNamePtr != NULL)
|
||||
*prettyNamePtr = &prettyName;
|
||||
|
||||
if(processNamePtr != NULL)
|
||||
*processNamePtr = &processName;
|
||||
|
||||
if(errorPtr != NULL)
|
||||
*errorPtr = &error;
|
||||
|
||||
if(init)
|
||||
return;
|
||||
init = true;
|
||||
|
||||
ffStrbufInit(&prettyName);
|
||||
ffStrbufInit(&processName);
|
||||
ffStrbufInit(&error);
|
||||
|
||||
DIR* proc = opendir("/proc/");
|
||||
if(proc == NULL)
|
||||
{
|
||||
ffStrbufSetS(&error, "opendir(\"/proc/\") == NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
struct dirent* dirent;
|
||||
|
||||
while((dirent = readdir(proc)) != NULL)
|
||||
{
|
||||
if(dirent->d_type != DT_DIR)
|
||||
continue;
|
||||
|
||||
char path[20];
|
||||
sprintf(path, "/proc/%.8s/comm", dirent->d_name);
|
||||
|
||||
ffGetFileContent(path, &processName);
|
||||
|
||||
if(ffStrbufIgnCaseCompS(&processName, "kwin_wayland") == 0 || ffStrbufIgnCaseCompS(&processName, "kwin_x11") == 0)
|
||||
ffStrbufSetS(&prettyName, "KWin");
|
||||
|
||||
if(prettyName.length > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
closedir(proc);
|
||||
|
||||
if(prettyName.length == 0)
|
||||
{
|
||||
ffStrbufSetS(&error, "No process name matches the name of known display managers");
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1,83 +1,5 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
static void getTerminalName(FFinstance* instance, const char* pid, FFstrbuf* exeName, FFstrbuf* processName, FFstrbuf* error)
|
||||
{
|
||||
char statFile[234];
|
||||
sprintf(statFile, "/proc/%s/stat", pid);
|
||||
|
||||
FILE* stat = fopen(statFile, "r");
|
||||
if(stat == NULL)
|
||||
{
|
||||
ffStrbufSetF(error, "fopen(\"%s\", \"r\") == NULL", statFile);
|
||||
return;
|
||||
}
|
||||
|
||||
char name[256];
|
||||
char ppid[256];
|
||||
if(fscanf(stat, "%*s (%[^)])%*s%s", name, ppid) != 2)
|
||||
{
|
||||
ffStrbufSetS(error, "fscanf(stat, \"%*s (%[^)])%*s%s\", name, ppid) != 2");
|
||||
return;
|
||||
}
|
||||
|
||||
fclose(stat);
|
||||
|
||||
if (
|
||||
strcasecmp(name, "bash") == 0 ||
|
||||
strcasecmp(name, "sh") == 0 ||
|
||||
strcasecmp(name, "zsh") == 0 ||
|
||||
strcasecmp(name, "ksh") == 0 ||
|
||||
strcasecmp(name, "fish") == 0 ||
|
||||
strcasecmp(name, "sudo") == 0 ||
|
||||
strcasecmp(name, "su") == 0 ||
|
||||
strcasecmp(name, "doas") == 0 ||
|
||||
strcasecmp(name, "strace") == 0 )
|
||||
{
|
||||
getTerminalName(instance, ppid, exeName, processName, error);
|
||||
return;
|
||||
}
|
||||
|
||||
char cmdlineFile[234];
|
||||
sprintf(cmdlineFile, "/proc/%s/cmdline", pid);
|
||||
|
||||
ffGetFileContent(cmdlineFile, exeName);
|
||||
ffStrbufSubstrBeforeFirstC(exeName, '\0');
|
||||
ffStrbufSubstrAfterLastC(exeName, '/');
|
||||
|
||||
ffStrbufSetS(processName, name);
|
||||
}
|
||||
|
||||
void ffCalculateTerminal(FFinstance* instance, FFstrbuf** exeNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr)
|
||||
{
|
||||
static FFstrbuf exeName;
|
||||
static FFstrbuf processName;
|
||||
static FFstrbuf error;
|
||||
static bool init = false;
|
||||
|
||||
if(exeNamePtr != NULL)
|
||||
*exeNamePtr = &exeName;
|
||||
|
||||
if(processNamePtr != NULL)
|
||||
*processNamePtr = &processName;
|
||||
|
||||
if(errorPtr != NULL)
|
||||
*errorPtr = &error;
|
||||
|
||||
if(init)
|
||||
return;
|
||||
init = true;
|
||||
|
||||
ffStrbufInit(&exeName);
|
||||
ffStrbufInit(&processName);
|
||||
ffStrbufInit(&error);
|
||||
|
||||
char ppid[256];
|
||||
sprintf(ppid, "%i", getppid());
|
||||
|
||||
getTerminalName(instance, ppid, &exeName, &processName, &error);
|
||||
|
||||
}
|
||||
|
||||
void ffPrintTerminal(FFinstance* instance)
|
||||
{
|
||||
FFstrbuf* exeName;
|
||||
|
||||
@@ -1,66 +1,5 @@
|
||||
#include "fastfetch.h"
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
void ffCalculateWM(FFinstance* instance, FFstrbuf** prettyNamePtr, FFstrbuf** processNamePtr, FFstrbuf** errorPtr)
|
||||
{
|
||||
static FFstrbuf prettyName;
|
||||
static FFstrbuf processName;
|
||||
static FFstrbuf error;
|
||||
static bool init = false;
|
||||
|
||||
if(prettyNamePtr != NULL)
|
||||
*prettyNamePtr = &prettyName;
|
||||
|
||||
if(processNamePtr != NULL)
|
||||
*processNamePtr = &processName;
|
||||
|
||||
if(errorPtr != NULL)
|
||||
*errorPtr = &error;
|
||||
|
||||
if(init)
|
||||
return;
|
||||
init = true;
|
||||
|
||||
ffStrbufInit(&prettyName);
|
||||
ffStrbufInit(&processName);
|
||||
ffStrbufInit(&error);
|
||||
|
||||
DIR* proc = opendir("/proc/");
|
||||
if(proc == NULL)
|
||||
{
|
||||
ffStrbufSetS(&error, "opendir(\"/proc/\") == NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
struct dirent* dirent;
|
||||
|
||||
while((dirent = readdir(proc)) != NULL)
|
||||
{
|
||||
if(dirent->d_type != DT_DIR)
|
||||
continue;
|
||||
|
||||
char path[20];
|
||||
sprintf(path, "/proc/%.8s/comm", dirent->d_name);
|
||||
|
||||
ffGetFileContent(path, &processName);
|
||||
|
||||
if(ffStrbufIgnCaseCompS(&processName, "kwin_wayland") == 0 || ffStrbufIgnCaseCompS(&processName, "kwin_x11") == 0)
|
||||
ffStrbufSetS(&prettyName, "KWin");
|
||||
|
||||
if(prettyName.length > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
closedir(proc);
|
||||
|
||||
if(prettyName.length == 0)
|
||||
{
|
||||
ffStrbufSetS(&error, "No process name matches the name of known display managers");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void ffPrintWM(FFinstance* instance)
|
||||
{
|
||||
FFstrbuf* prettyName;
|
||||
|
||||
Reference in New Issue
Block a user