diff options
Diffstat (limited to 'modules/computer')
| -rw-r--r-- | modules/computer/os.c | 18 | 
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");              }  	}      } | 
