From e404dd62c0e70b3db7dca267a9c59f4c3db29aa6 Mon Sep 17 00:00:00 2001 From: Linus Dierheimer Date: Tue, 26 Apr 2022 19:21:19 +0200 Subject: [PATCH] Check for ubuntu flavours --- src/detection/os.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/src/detection/os.c b/src/detection/os.c index b9723f020..11cead713 100644 --- a/src/detection/os.c +++ b/src/detection/os.c @@ -1,5 +1,7 @@ #include "fastfetch.h" +#include +#include #include #if !defined(__ANDROID__) @@ -26,6 +28,67 @@ static void parseFile(const char* fileName, FFOSResult* result) }); } +static void getUbuntuFlavour(FFOSResult* result) +{ + const char* xdgConfigDirs = getenv("XDG_CONFIG_DIRS"); + if(!ffStrSet(xdgConfigDirs)) + return; + + if(strstr(xdgConfigDirs, "kde") != NULL || strstr(xdgConfigDirs, "plasma") != NULL) + { + ffStrbufSetS(&result->name, "Kubuntu"); + ffStrbufSetS(&result->prettyName, "Kubuntu"); + ffStrbufSetS(&result->id, "kubuntu"); + ffStrbufSetS(&result->idLike, "ubuntu"); + return; + } + + if(strstr(xdgConfigDirs, "xfce") != NULL || strstr(xdgConfigDirs, "xubuntu") != NULL) + { + ffStrbufSetS(&result->name, "Xubuntu"); + ffStrbufSetS(&result->prettyName, "Xubuntu"); + ffStrbufSetS(&result->id, "xubuntu"); + ffStrbufSetS(&result->idLike, "ubuntu"); + return; + } + + if(strstr(xdgConfigDirs, "lxde") != NULL || strstr(xdgConfigDirs, "lubuntu") != NULL) + { + ffStrbufSetS(&result->name, "Lubuntu"); + ffStrbufSetS(&result->prettyName, "Lubuntu"); + ffStrbufSetS(&result->id, "lubuntu"); + ffStrbufSetS(&result->idLike, "ubuntu"); + return; + } + + if(strstr(xdgConfigDirs, "budgie") != NULL) + { + ffStrbufSetS(&result->name, "Ubuntu Budgie"); + ffStrbufSetS(&result->prettyName, "Ubuntu Budgie"); + ffStrbufSetS(&result->id, "ubuntu-budgie"); + ffStrbufSetS(&result->idLike, "ubuntu"); + return; + } + + if(strstr(xdgConfigDirs, "mate") != NULL) + { + ffStrbufSetS(&result->name, "Ubuntu MATE"); + ffStrbufSetS(&result->prettyName, "Ubuntu MATE"); + ffStrbufSetS(&result->id, "ubuntu-mate"); + ffStrbufSetS(&result->idLike, "ubuntu"); + return; + } + + if(strstr(xdgConfigDirs, "studio") != NULL) + { + ffStrbufSetS(&result->name, "Ubuntu Studio"); + ffStrbufSetS(&result->prettyName, "Ubuntu Studio"); + ffStrbufSetS(&result->id, "ubuntu-studio"); + ffStrbufSetS(&result->idLike, "ubuntu"); + return; + } +} + #endif const FFOSResult* ffDetectOS(const FFinstance* instance) @@ -68,6 +131,10 @@ const FFOSResult* ffDetectOS(const FFinstance* instance) parseFile(FASTFETCH_TARGET_DIR_USR"/lib/os-release", &result); parseFile(FASTFETCH_TARGET_DIR_ROOT"/etc/lsb-release", &result); } + + if(ffStrbufIgnCaseCompS(&result.id, "ubuntu") == 0) + getUbuntuFlavour(&result); + #else ffStrbufSetS(&result.name, "Android"); ffStrbufSetS(&result.id, "android");