11#include "fastfetch.h"
22
3+ #include <string.h>
4+ #include <ctype.h>
35#include <pthread.h>
46
57#if !defined(__ANDROID__ )
@@ -26,6 +28,67 @@ static void parseFile(const char* fileName, FFOSResult* result)
2628 });
2729}
2830
31+ static void getUbuntuFlavour (FFOSResult * result )
32+ {
33+ const char * xdgConfigDirs = getenv ("XDG_CONFIG_DIRS" );
34+ if (!ffStrSet (xdgConfigDirs ))
35+ return ;
36+
37+ if (strstr (xdgConfigDirs , "kde" ) != NULL || strstr (xdgConfigDirs , "plasma" ) != NULL )
38+ {
39+ ffStrbufSetS (& result -> name , "Kubuntu" );
40+ ffStrbufSetS (& result -> prettyName , "Kubuntu" );
41+ ffStrbufSetS (& result -> id , "kubuntu" );
42+ ffStrbufSetS (& result -> idLike , "ubuntu" );
43+ return ;
44+ }
45+
46+ if (strstr (xdgConfigDirs , "xfce" ) != NULL || strstr (xdgConfigDirs , "xubuntu" ) != NULL )
47+ {
48+ ffStrbufSetS (& result -> name , "Xubuntu" );
49+ ffStrbufSetS (& result -> prettyName , "Xubuntu" );
50+ ffStrbufSetS (& result -> id , "xubuntu" );
51+ ffStrbufSetS (& result -> idLike , "ubuntu" );
52+ return ;
53+ }
54+
55+ if (strstr (xdgConfigDirs , "lxde" ) != NULL || strstr (xdgConfigDirs , "lubuntu" ) != NULL )
56+ {
57+ ffStrbufSetS (& result -> name , "Lubuntu" );
58+ ffStrbufSetS (& result -> prettyName , "Lubuntu" );
59+ ffStrbufSetS (& result -> id , "lubuntu" );
60+ ffStrbufSetS (& result -> idLike , "ubuntu" );
61+ return ;
62+ }
63+
64+ if (strstr (xdgConfigDirs , "budgie" ) != NULL )
65+ {
66+ ffStrbufSetS (& result -> name , "Ubuntu Budgie" );
67+ ffStrbufSetS (& result -> prettyName , "Ubuntu Budgie" );
68+ ffStrbufSetS (& result -> id , "ubuntu-budgie" );
69+ ffStrbufSetS (& result -> idLike , "ubuntu" );
70+ return ;
71+ }
72+
73+ if (strstr (xdgConfigDirs , "mate" ) != NULL )
74+ {
75+ ffStrbufSetS (& result -> name , "Ubuntu MATE" );
76+ ffStrbufSetS (& result -> prettyName , "Ubuntu MATE" );
77+ ffStrbufSetS (& result -> id , "ubuntu-mate" );
78+ ffStrbufSetS (& result -> idLike , "ubuntu" );
79+ return ;
80+ }
81+
82+ if (strstr (xdgConfigDirs , "studio" ) != NULL )
83+ {
84+ ffStrbufSetS (& result -> name , "Ubuntu Studio" );
85+ ffStrbufSetS (& result -> prettyName , "Ubuntu Studio" );
86+ ffStrbufSetS (& result -> id , "ubuntu-studio" );
87+ ffStrbufSetS (& result -> idLike , "ubuntu" );
88+ return ;
89+ }
90+ }
91+
2992#endif
3093
3194const FFOSResult * ffDetectOS (const FFinstance * instance )
@@ -68,6 +131,10 @@ const FFOSResult* ffDetectOS(const FFinstance* instance)
68131 parseFile (FASTFETCH_TARGET_DIR_USR "/lib/os-release" , & result );
69132 parseFile (FASTFETCH_TARGET_DIR_ROOT "/etc/lsb-release" , & result );
70133 }
134+
135+ if (ffStrbufIgnCaseCompS (& result .id , "ubuntu" ) == 0 )
136+ getUbuntuFlavour (& result );
137+
71138#else
72139 ffStrbufSetS (& result .name , "Android" );
73140 ffStrbufSetS (& result .id , "android" );
0 commit comments