2010-01-10 8 views

उत्तर

6

उबंटू 9.10 में परीक्षण किया गया:

>>> import os 
>>> os.environ.get('DESKTOP_SESSION') 
'gnome' 

संपादित करें: के रूप में नीचे टिप्पणी में उल्लेख किया है, इस दृष्टिकोण अधिक कुछ OSes के लिए काम नहीं करेगा। अन्य दो उत्तर वर्कअराउंड प्रदान करते हैं।

+0

सिर्फ एक जवाब है कि प्रक्रियाओं की गणना शामिल लेखन के बीच में था, लेकिन यह ज्यादा बेहतर है। – mdm

+0

मैक ओएस एक्स 10.6.2 'os.en वातावरण.get (' DESKTOP_SESSION ') पर' '"कोई नहीं" ' –

+2

मुझे लगता है क्योंकि मैक में केवल एक ही है! – aliva

4

आप इस कोशिश कर सकते हैं:

def detect_desktop_environment(): 
    desktop_environment = 'generic' 
    if os.environ.get('KDE_FULL_SESSION') == 'true': 
     desktop_environment = 'kde' 
    elif os.environ.get('GNOME_DESKTOP_SESSION_ID'): 
     desktop_environment = 'gnome' 
    else: 
     try: 
      info = getoutput('xprop -root _DT_SAVE_MODE') 
      if ' = "xfce4"' in info: 
       desktop_environment = 'xfce' 
     except (OSError, RuntimeError): 
      pass 
    return desktop_environment 

और यहाँ चर्चा पढ़ें: http://ubuntuforums.org/showthread.php?t=1139057

+0

यह मेरे डेस्कटॉप के लिए केडीई का पता लगाने के लिए काम करता है (DESKTOP_SESSION के विपरीत, जो कोई भी नहीं देता है) – JAL

+0

इस पर एक अद्यतन। 'Xprop -root | का प्रयोग करें grep -io 'xfce'' और फिर कम से कम' xfce 'और' lxde 'के बीच वैकल्पिक। यह रास्पियन और उबंटू स्टूडियो पर काम करता है। एक बयान के तहत बेहतर समझ या चयन के लिए आउटपुट को कम केस में बदलें। – DarkXDroid

4

कभी कभी लोगों को डेस्कटॉप वातावरण का मिश्रण चलाते हैं। xdg-utils का उपयोग करके अपना ऐप डेस्कटॉप-अज्ञेयवादी बनाएं; इसका मतलब है कि का उपयोग फ़ाइल या यूआरएल खोलने के लिए, xdg-user-dir DOCUMENTS का उपयोग करके दस्तावेज़ फ़ोल्डर, xdg-email ई-मेल भेजने के लिए, और इसी तरह के लिए।

10

मैं अपनी परियोजनाओं में से एक में इस का उपयोग करें:

def get_desktop_environment(self): 
     #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 self.is_running("xfce-mcs-manage"): 
       return "xfce4" 
      elif self.is_running("ksmserver"): 
       return "kde" 
     return "unknown" 

    def is_running(self, 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 
+0

धन्यवाद! यह पूर्ण है! – nachopro

+2

आपको इसका पाइथन मॉड्यूल बनाना चाहिए और इसे पीपीपीआई पर रखना चाहिए। – Jabba

+2

मुझे उबंटू स्टूडियो पर 'os.en वातावरण.get ("DESKTOP_SESSION")' थ्रो 'ubuntustudio' जोड़ना चाहिए। सही डेस्कटॉप वातावरण प्राप्त करने के लिए मैं 'os.environ [' XDG_CURRENT_DESKTOP '] का उपयोग करता हूं।' Xfce 'पाने के लिए निम्न() '। यह इस भयानक कोड का विस्तार करने के लिए एक कामकाज है। इसे अपलोड करें – DarkXDroid

संबंधित मुद्दे