Skip to content

Commit e404dd6

Browse files
Check for ubuntu flavours
1 parent 21b315d commit e404dd6

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

src/detection/os.c

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
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

3194
const 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

Comments
 (0)