我怎樣才能知道我的桌面環境使用Python?我喜歡的結果是gnome或KDE或其他。我目前的桌面環境是什麼?
回答
測試在Ubuntu 9.10:
>>> import os
>>> os.environ.get('DESKTOP_SESSION')
'gnome'
編輯:正如在下面的評論中提到,這種方法不適用於多一些操作系統的工作。另外兩個答案提供瞭解決方法。
你可以試試這個:
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
這適用於我的桌面檢測KDE(不像DESKTOP_SESSION,它返回無) – JAL 2010-01-10 09:28:43
這是一個更新。使用'xprop -root | grep -io'xfce''然後至少在'xfce'和'lxde'之間交替。這適用於Raspbian和Ubuntu Studio。將輸出更改爲小寫字母,以便在聲明下更好地理解或選擇。 – DarkXDroid 2015-07-06 13:49:48
人有時候運行桌面環境的混合。使用xdg-utils使您的應用程序與桌面無關;這意味着使用xdg-open
打開文件或網址,使用xdg-user-dir DOCUMENTS
查找文檔文件夾,xdg-email
發送電子郵件等。
我在項目中的一個使用此:
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
謝謝!太棒了! – nachopro 2014-06-26 16:46:09
你應該製作一個Python模塊並將其放在PyPI上。 – Jabba 2014-12-08 23:48:04
我應該在Ubuntu Studio上添加'os.environ.get(「DESKTOP_SESSION」)'拋出'ubuntustudio'。爲了獲得正確的桌面環境,我使用'os.environ ['XDG_CURRENT_DESKTOP']。lower()'來獲得'xfce'。這是一個解決方法來擴展這個真棒代碼。上傳它 – DarkXDroid 2015-07-06 13:19:33
- 1. Ruby中的桌面環境
- 2. 我的環境變量是什麼?
- 3. 什麼是COB環境?
- 4. 什麼是NULL環境?
- 5. 什麼是軟件環境?
- 6. 沒有桌面環境的java gui
- 7. 這個線程環境結構是做什麼的?它的目的是什麼?
- 8. 安裝Linux桌面/ GUI環境
- 9. 遠程登錄桌面環境
- 10. 爲Linux開發桌面環境
- 11. 在桌面上顯示當前目錄的常用Linux命令是什麼?
- 12. Rake中的「環境」任務是什麼?
- 13. 什麼是您的Hadoop QA環境?
- 14. 運行環境的作用是什麼?
- 15. 口譯員的環境是什麼?
- 16. JBoss 5的開發環境是什麼?
- 17. 什麼是Laravel的生產環境?
- 18. Autoloads環境的作用是什麼?
- 19. 什麼是nodeunit的生產環境?
- 20. 什麼是OpenCL環境下的變形?
- 21. 什麼是環境變量的含義:: = :: \
- 22. virtualenvwrapper中的環境和項目之間的關係是什麼?
- 23. 環境變量的目的是什麼PYTHONPATH
- 24. 爲什麼語言環境不適用於我的項目?
- 25. LaTeX長桌上的環境
- 26. 分面項目Eclipse環境
- 27. 我如何知道正在使用哪個桌面環境?
- 28. 檢查哪個桌面環境是用戶在Qt
- 29. WindowsAzure:遠程桌面,我能做什麼?
- 30. 什麼是C/C++開發環境
只是在寫,涉及枚舉進程答案的中間,但這要好得多。 – mdm 2010-01-10 01:12:37
在Mac OS X 10.6.2'os.environ.get('DESKTOP_SESSION')'返回 ''無「' – 2010-01-10 01:16:44
我想因爲mac只有一個! – aliva 2010-01-10 01:20:39