summaryrefslogtreecommitdiff
path: root/modules/computer/os.c
diff options
context:
space:
mode:
authorLeandro Pereira <leandro@hardinfo.org>2012-01-08 11:32:55 -0200
committerLeandro Pereira <leandro@hardinfo.org>2012-01-08 11:32:55 -0200
commit7ce496ba68d67905a5715104aa6122ae85dab1c3 (patch)
tree1eb0bef5cf5f848da329a6ac0810e119bef4c223 /modules/computer/os.c
parentd4d6084bb6e52a7c5716bfc665bd3a9633faedfe (diff)
Detect LXDE and Lubuntu from $XDG_CURRENT_DESKTOP and $DESKTOP_SESSION.
Based on patch by Jonathan Marsden <jmarsden@fastmail.fm>
Diffstat (limited to 'modules/computer/os.c')
-rw-r--r--modules/computer/os.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/modules/computer/os.c b/modules/computer/os.c
index c26bb7f9..b5db28ec 100644
--- a/modules/computer/os.c
+++ b/modules/computer/os.c
@@ -100,6 +100,8 @@ detect_desktop_environment(OperatingSystem * os)
os->desktop = g_strdup_printf("KDE %s", vers);
} else {
unknown:
+ os->desktop = NULL;
+
if (!g_getenv("DISPLAY")) {
os->desktop = g_strdup("Terminal");
} else {
@@ -109,17 +111,23 @@ detect_desktop_environment(OperatingSystem * os)
const gchar *windowman;
windowman = gdk_x11_screen_get_window_manager_name(screen);
-
if (g_str_equal(windowman, "Xfwm4")) {
- /* FIXME: check if xprop -root | grep XFCE_DESKTOP_WINDOW
- is defined */
+ /* FIXME: check if xprop -root | grep XFCE_DESKTOP_WINDOW is defined */
os->desktop = g_strdup("XFCE 4");
- } else {
+ } else if ((tmp = g_getenv("XDG_CURRENT_DESKTOP"))) {
+ os->desktop = g_strdup(tmp);
+ if ((tmp = g_getenv("DESKTOP_SESSION")) && !g_str_equal(os->desktop, tmp)) {
+ g_free(os->desktop);
+ os->desktop = g_strdup(tmp);
+ }
+ }
+
+ if (!os->desktop) {
os->desktop = g_strdup_printf("Unknown (Window Manager: %s)",
windowman);
}
} else {
- os->desktop = g_strdup("Unknown");
+ os->desktop = g_strdup("Unknown");
}
}
}