¿Cómo puedo saber cuál es mi entorno de escritorio utilizando Python? Me gusta el resultado para ser gnome o KDE o más.¿Cuál es mi entorno de escritorio actual?
Respuesta
Probado en Ubuntu 9.10:
>>> import os
>>> os.environ.get('DESKTOP_SESSION')
'gnome'
Edit: Como se ha mencionado en los comentarios a continuación, este método no funcionará para más algunos sistemas operativos. Las otras dos respuestas proporcionan soluciones.
Usted puede tratar esto:
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
y leer la discusión aquí: http://ubuntuforums.org/showthread.php?t=1139057
Eso funciona para mi escritorio para detectar KDE (a diferencia de DESKTOP_SESSION, que devuelve None) – JAL
Una actualización sobre esto. Use 'xprop-raíz | grep -io 'xfce'' y al menos alternar entre' xfce 'y' lxde '. Esto funciona en Raspbian y Ubuntu Studio. Cambie el resultado a minúsculas para una mejor comprensión o selección bajo una declaración. – DarkXDroid
A veces la gente corre una mezcla de entornos de escritorio. Haga que su aplicación sea independiente del escritorio utilizando xdg-utils; eso significa usar xdg-open
para abrir un archivo o una url, usando xdg-user-dir DOCUMENTS
para encontrar la carpeta de documentos, xdg-email
para enviar correos electrónicos, y más.
yo uso esto en uno de mis proyectos:
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
Gracias! ¡Esto es perfecto! – nachopro
Debe hacer un módulo de Python y ponerlo en PyPI. – Jabba
Debo añadir que en Ubuntu Studio el 'os.environ.get (" DESKTOP_SESSION ")' arroja 'ubuntustudio'. Para obtener el entorno de escritorio correcto, utilizo 'os.environ ['XDG_CURRENT_DESKTOP']. Lower()' para obtener 'xfce'. Esta es una solución para expandir este código impresionante. Subirlo – DarkXDroid
- 1. ¿Cómo comienzo tmux con mi entorno actual?
- 2. En Git, ¿cómo averiguo cuál es mi revisión actual?
- 3. ¿Cuál es la diferencia entre un shell gráfico y un entorno de escritorio
- 4. ¿Cómo crear un entorno de escritorio simple?
- 5. Entorno de desarrollo de escritorio Ubuntu (herramientas GNU)
- 6. ¿Cuál es el estado actual de GWT?
- 7. ¿Cuál es el estado actual de AspectJ?
- 8. ¿cuál es mi versión HAProxy?
- 9. ¿Cuál es el elemento actual en Javascript?
- 10. ¿Cuál es el origen de '.' es decir, el directorio actual?
- 11. ¿Cuál es mi script src URL?
- 12. ¿Cuál es su entorno de desarrollo de ASP.net completo?
- 13. ¿Cuál es el estado actual de BDD en C++?
- 14. ¿Cuál es el entorno de desarrollo para TIBCO Business Works?
- 15. Mylyn como aplicación para mi escritorio
- 16. ¿Cuál es el estado actual de la especificación Cookie2?
- 17. ¿Cuál es el estado actual de la comunidad PHP?
- 18. Symfony2 obtener el entorno actual en el oyente de respuesta
- 19. Cambiar la LD_LIBRARY_PATH del entorno de proceso actual
- 20. ¿Cuál es el error en mi logcat?
- 21. ¿Cuál es el estado actual de Perl 6?
- 22. ¿Cuál es el estado actual del desarrollo de GWT?
- 23. ¿Cuál es el estado actual de los cierres en Java?
- 24. ¿Cuál es el estado actual de la técnica en látex?
- 25. ¿Cuál es el estado actual de Javascript ES5?
- 26. ¿Cuál es el mejor motor de plantillas Javascript actual?
- 27. ¿Cuál es el estado actual de las bibliotecas estándar D?
- 28. ¿Cuál es el estado actual de las mónadas restringidas?
- 29. Desarrollar para OpenGL ES en el escritorio
- 30. ¿Cuál es el directorio actual en un archivo por lotes?
era justo en el medio de escribir una respuesta que implicó la enumeración de procesos, pero esto es mucho mejor. – mdm
En Mac OS X 10.6.2 'os.environ.get ('DESKTOP_SESSION')' devuelve '" Ninguno "' –
¡porque creo que mac tiene solo uno! – aliva