Jak mogę się dowiedzieć, jakie środowisko pulpitu używa Pythona? Podoba mi się wynik: gnome lub KDE lub.Jakie jest moje bieżące środowisko pulpitu?
Odpowiedz
Testowany w Ubuntu 9.10:
>>> import os
>>> os.environ.get('DESKTOP_SESSION')
'gnome'
Edit: Jak wspomniano w komentarzach poniżej, takie podejście nie będzie pracować dłużej niektórych systemów operacyjnych. Pozostałe dwie odpowiedzi zapewniają obejścia.
Można spróbować to:
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
i przeczytać dyskusję tutaj: http://ubuntuforums.org/showthread.php?t=1139057
To działa na moim pulpicie, aby wykryć KDE (w przeciwieństwie do DESKTOP_SESSION, który zwraca Brak) – JAL
Aktualizacja na ten temat. Użyj 'xprop -root | grep -io 'xfce'', a następnie przynajmniej na przemian z' xfce 'i' lxde '. Działa to w Raspbian i Ubuntu Studio. Zmień wyjście na małe litery, aby lepiej zrozumieć lub wybrać w ramach oświadczenia. – DarkXDroid
Czasami ludzie uciekają mieszankę środowisk graficznych. Ustaw agnostykę na pulpicie aplikacji, używając xdg-utils; Oznacza to, że przy użyciu xdg-open
można otworzyć plik lub adres URL, korzystając z xdg-user-dir DOCUMENTS
, aby znaleźć folder dokumentów, xdg-email
, aby wysłać wiadomość e-mail, i tak dalej.
Używam tego w jednym z moich projektów:
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
Dzięki! To jest doskonałe! – nachopro
Powinieneś utworzyć moduł Pythona i umieścić go na PyPI. – Jabba
Powinienem dodać, że w Ubuntu Studio 'os.environ.get (" DESKTOP_SESSION ")' wyrzuca 'ubuntustudio'. Aby uzyskać poprawne środowisko pulpitu, używam 'os.environ ['XDG_CURRENT_DESKTOP']. Lower()', aby uzyskać 'xfce'. To jest obejście tego niesamowitego kodu. Prześlij go – DarkXDroid
- 1. Zmień bieżące środowisko procesu LD_LIBRARY_PATH
- 2. Jakie jest najlepsze środowisko programistyczne gier .NET?
- 3. Jakie jest Twoje pełne środowisko programistyczne ASP.net?
- 4. Dlaczego moje środowisko wymaga uruchomienia pakietu exec?
- 5. Jakiekolwiek dobre środowisko pulpitu nawigacyjnego open-source po stronie klienta?
- 6. Jakie jest preferowane środowisko testowania jednostkowego dla Perla?
- 7. Jak przekazać moje bieżące zmiany do innego oddziału w git
- 8. Jakie środowisko pracy: CodeIgniter, Symfony lub CakePHP?
- 9. Czy moje środowisko wirtualne (python) powoduje przerwanie mojej ścieżki PYTHONPATH?
- 10. Dlaczego środowisko ASP.NET MVC ignoruje moje końcowe ukośniki?
- 11. Co, jeśli moje środowisko JRE nie obsługuje kodowania znaków?
- 12. Czy środowisko wykonawcze Java jest preinstalowane w systemie MAC OSX?
- 13. APS-środowisko jest zawsze rozwój
- 14. Moje kodowanie jest niejednoznaczne.
- 15. Jak ustawić mechanizm przechowywania spinacza w oparciu o bieżące środowisko Rails?
- 16. Jakie jest właściwe podejście do nowoczesnego interfejsu użytkownika dla aplikacji pulpitu Windows?
- 17. Środowisko programistyczne SharePoint/środowisko produkcyjne
- 18. Jakie interoperacyjne środowisko szablonów dla JavaScript i Grails/Java?
- 19. Java: jak wykryć bieżące środowisko uruchomieniowe java to JRE lub JDK?
- 20. Aplikacje pulpitu Python
- 21. Pobierz bieżące informacje JNLP
- 22. Otrzymuj bieżące powiadomienia Android
- 23. Jakie są moje opcje pracy z przeceną w ColdFusion?
- 24. jakie jest najlepsze środowisko open source do programowego tworzenia plików wideo .mov lub .flv?
- 25. Jakie są moje przestarzałe połączenia z interfejsem API Facebooka?
- 26. Projekty wdrożeniowe nie obsługiwane przez msbuild: jakie są moje opcje?
- 27. Get bieżące locale chromu
- 28. Python w systemie AIX: Jakie są moje opcje?
- 29. Czy moje rozumienie sesji PHP jest poprawne?
- 30. czy moje wyliczenie jest poprawne?
właśnie w trakcie pisania odpowiedzi, który obejmował procesy wyliczanie, ale jest to o wiele lepiej. – mdm
Na Mac OS X 10.6.2 'os.environ.get ('DESKTOP_SESSION')' zwraca '" Brak "' –
Myślę, że ponieważ mac ma tylko jeden! – aliva