Comment puis-je savoir ce que mon environnement de bureau utilise Python? J'aime le résultat pour être gnome ou KDE ou autre.Quel est mon environnement de bureau actuel?
Répondre
testé dans Ubuntu 9.10:
>>> import os
>>> os.environ.get('DESKTOP_SESSION')
'gnome'
Edit: Comme mentionné dans les commentaires ci-dessous, cette approche ne fonctionnera pas pour plus de certains systèmes d'exploitation. Les deux autres réponses fournissent des solutions de contournement.
Vous pouvez essayer ceci:
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
Et lire la discussion ici: http://ubuntuforums.org/showthread.php?t=1139057
Cela fonctionne sur mon bureau pour détecter KDE (contrairement à DESKTOP_SESSION, qui renvoie None) – JAL
Une mise à jour à ce sujet. Utilisez 'xprop -root | grep -io 'xfce'' et au moins alternent entre' xfce 'et' lxde '. Cela fonctionne sur Raspbian et Ubuntu Studio. Changez la sortie en minuscules pour une meilleure compréhension ou sélection dans une déclaration. – DarkXDroid
Parfois, les gens utilisent un mélange d'environnements de bureau. Rendre votre application agnostique de bureau en utilisant xdg-utils; cela signifie que vous devez utiliser xdg-open
pour ouvrir un fichier ou une URL, en utilisant xdg-user-dir DOCUMENTS
pour rechercher le dossier docs, xdg-email
pour envoyer un courrier électronique, et ainsi de suite.
J'utiliser dans un de mes projets:
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
Merci! C'est parfait! – nachopro
Vous devriez en faire un module Python et le mettre sur PyPI. – Jabba
Je devrais ajouter que sur Ubuntu Studio le 'os.environ.get (" DESKTOP_SESSION ")' lance 'ubuntustudio'. Pour obtenir le bon environnement de bureau, j'utilise 'os.environ ['XDG_CURRENT_DESKTOP']. Lower()' pour obtenir 'xfce'. C'est une solution de contournement pour développer ce code génial. Téléchargez-le – DarkXDroid
- 1. vb.net: détecter quel bureau de dossier est
- 2. java gui sans environnement de bureau
- 3. Comment faire pour découvrir quel fichier image est l'arrière-plan actuel du bureau sous Windows?
- 4. Environnement système Java Variable Utilisateur actuel
- 5. Drupal 6 connaissant son environnement actuel
- 6. Environnement de développement de bureau Ubuntu (outils GNU)
- 7. Quel est votre environnement de développement pour JBoss 5?
- 8. Quel est le terme moderne actuel de « caractères multi-octets »
- 9. Quel est le meilleur cadre pour les applets de bureau?
- 10. Quel est l'état actuel du développement de Mono 2.8?
- 11. Quel est le meilleur moteur de template JavaScript actuel?
- 12. Quel est mon problème Cronjobs?
- 13. Comment réinitialiser mon environnement gem?
- 14. Quel est l'état actuel du projet SubSonic ORM?
- 15. Comment Bundler sait-il quel environnement utiliser?
- 16. Quel est l'état actuel des accélérateurs dans Zend?
- 17. Quel est le statut actuel des bibliothèques standard D?
- 18. comment rejeter mon point de vue actuel
- 19. Quel est mon problème avec ASP.NET pubslishing?
- 20. Quel est le problème avec mon JSON?
- 21. Quel est le problème avec mon XAML?
- 22. Quel est le problème avec mon MPMediaPlayerController?
- 23. Quel est le problème avec mon div_for?
- 24. Quel est le problème avec mon xml?
- 25. Quel est le problème avec mon CSS?
- 26. Quel est le problème avec mon code?
- 27. Quel est le problème avec mon script?
- 28. Quel est le problème avec mon Regex?
- 29. Quel est le problème avec mon regex
- 30. Quel est le problème avec mon script?
était juste au milieu d'écrire une réponse qui implique l'énumération des processus, mais cela est beaucoup mieux. – mdm
Sur Mac OS X 10.6.2 'os.environ.get ('DESKTOP_SESSION')' renvoie '" Aucun "' –
Je pense que parce que mac n'en a qu'un! – aliva