summaryrefslogtreecommitdiffstats
path: root/base/nix
diff options
context:
space:
mode:
Diffstat (limited to 'base/nix')
-rw-r--r--base/nix/xdg_util.cc13
-rw-r--r--base/nix/xdg_util.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/base/nix/xdg_util.cc b/base/nix/xdg_util.cc
index 08d4eee..10cbcaa 100644
--- a/base/nix/xdg_util.cc
+++ b/base/nix/xdg_util.cc
@@ -48,6 +48,17 @@ FilePath GetXDGUserDirectory(const char* dir_name, const char* fallback_dir) {
}
DesktopEnvironment GetDesktopEnvironment(Environment* env) {
+ // XDG_CURRENT_DESKTOP is the newest standard circa 2012.
+ std::string xdg_current_desktop;
+ if (env->GetVar("XDG_CURRENT_DESKTOP", &xdg_current_desktop)) {
+ // Not all desktop environments set this env var as of this writing.
+ if (xdg_current_desktop == "Unity")
+ return DESKTOP_ENVIRONMENT_UNITY;
+ else if (xdg_current_desktop == "GNOME")
+ return DESKTOP_ENVIRONMENT_GNOME;
+ }
+
+ // DESKTOP_SESSION was what everyone used in 2010.
std::string desktop_session;
if (env->GetVar("DESKTOP_SESSION", &desktop_session)) {
if (desktop_session == "gnome") {
@@ -88,6 +99,8 @@ const char* GetDesktopEnvironmentName(DesktopEnvironment env) {
return "KDE3";
case DESKTOP_ENVIRONMENT_KDE4:
return "KDE4";
+ case DESKTOP_ENVIRONMENT_UNITY:
+ return "UNITY";
case DESKTOP_ENVIRONMENT_XFCE:
return "XFCE";
}
diff --git a/base/nix/xdg_util.h b/base/nix/xdg_util.h
index b068d84..fc72663 100644
--- a/base/nix/xdg_util.h
+++ b/base/nix/xdg_util.h
@@ -53,6 +53,7 @@ enum DesktopEnvironment {
// them as two different desktop environments here.
DESKTOP_ENVIRONMENT_KDE3,
DESKTOP_ENVIRONMENT_KDE4,
+ DESKTOP_ENVIRONMENT_UNITY,
DESKTOP_ENVIRONMENT_XFCE,
};