]> Frank Brehm's Git Trees - my-stuff/python.git/commitdiff
Added DE-env.py
authorFrank Brehm <frank@brehm-online.com>
Sun, 11 May 2014 21:20:22 +0000 (23:20 +0200)
committerFrank Brehm <frank@brehm-online.com>
Sun, 11 May 2014 21:20:22 +0000 (23:20 +0200)
DE-env.py [new file with mode: 0755]

diff --git a/DE-env.py b/DE-env.py
new file mode 100755 (executable)
index 0000000..eea1cef
--- /dev/null
+++ b/DE-env.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@author: Frank Brehm
+@contact: frank.brehm@profitbricks.com
+@copyright: © 2010 - 2014, Frank Brehm, Berlin
+@license: GPL3
+@summary: bla blub
+"""
+
+# Standard modules
+import sys
+import os
+import subprocess
+import re
+
+def get_desktop_environment():
+    #From http://stackoverflow.com/questions/2035657/what-is-my-current-desktop-environment
+    # and http://ubuntuforums.org/showthread.php?t=652320
+    # and http://ubuntuforums.org/showthread.php?t=652320
+    # and http://ubuntuforums.org/showthread.php?t=1139057
+    if sys.platform in ["win32", "cygwin"]:
+        return "windows"
+    elif sys.platform == "darwin":
+        return "mac"
+    else: #Most likely either a POSIX system or something not much common
+        desktop_session = os.environ.get("DESKTOP_SESSION")
+        if desktop_session is not None: #easier to match if we doesn't have  to deal with caracter cases
+            desktop_session = desktop_session.lower()
+            if desktop_session in ["gnome","unity", "cinnamon", "mate", "xfce4", "lxde", "fluxbox", 
+                                   "blackbox", "openbox", "icewm", "jwm", "afterstep","trinity", "kde"]:
+                return desktop_session
+            ## Special cases ##
+            # Canonical sets $DESKTOP_SESSION to Lubuntu rather than LXDE if using LXDE.
+            # There is no guarantee that they will not do the same with the other desktop environments.
+            elif "xfce" in desktop_session or desktop_session.startswith("xubuntu"):
+                return "xfce4"
+            elif desktop_session.startswith("ubuntu"):
+                return "unity"       
+            elif desktop_session.startswith("lubuntu"):
+                return "lxde" 
+            elif desktop_session.startswith("kubuntu"): 
+                return "kde" 
+            elif desktop_session.startswith("razor"): # e.g. razorkwin
+                return "razor-qt"
+            elif desktop_session.startswith("wmaker"): # e.g. wmaker-common
+                return "windowmaker"
+        if os.environ.get('KDE_FULL_SESSION') == 'true':
+            return "kde"
+        elif os.environ.get('GNOME_DESKTOP_SESSION_ID'):
+            if not "deprecated" in os.environ.get('GNOME_DESKTOP_SESSION_ID'):
+                return "gnome2"
+        #From http://ubuntuforums.org/showthread.php?t=652320
+        elif is_running("xfce-mcs-manage"):
+            return "xfce4"
+        elif is_running("ksmserver"):
+            return "kde"
+    return "unknown"
+
+def is_running(process):
+    #From http://www.bloggerpolis.com/2011/05/how-to-check-if-a-process-is-running-using-python/
+    # and http://richarddingwall.name/2009/06/18/windows-equivalents-of-ps-and-kill-commands/
+    try: #Linux/Unix
+        s = subprocess.Popen(["ps", "axw"],stdout=subprocess.PIPE)
+    except: #Windows
+        s = subprocess.Popen(["tasklist", "/v"],stdout=subprocess.PIPE)
+    for x in s.stdout:
+        if re.search(process, x):
+            return True
+    return False
+
+print get_desktop_environment()
+
+
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4