2012-04-19 10 views
7

Necesito determinar programáticamente qué gestor de ventanas se está ejecutando, en Linux.Cómo detectar si el sistema operativo Linux usa el entorno KDE o Gnome

Pseudocódigo de la forma en que se utilizaría:

if(WindowManagerOfOS.isKDE()){ 
     do.anyThing(); 
} 

¿Cómo puedo hacer esto? ¿Es posible?

+1

No puedo probar esto en mi computadora, pero trato de ver lo que UIManager.getSystemLookAndFeelClassName() devuelve en cualquiera de los – Adam

+0

Relacionados: http://stackoverflow.com/questions/3376679/qt-how-to-detect-whether- the-application-is-running-on-gnome-or-kde –

Respuesta

10
System.getenv("XDG_CURRENT_DESKTOP") 

devuelve "GNOME" en mi máquina. Pruébelo en el cuadro basado en KDE.

Ver también

+0

Un usuario podría tener ambos instalados, pero solo ejecutar uno, en cuyo caso ambas variables de entorno estarían presentes. Tendría que verificar los procesos en ejecución. – Adam

+0

Tomaz, usaré 'KDE_SESSION_VERSION' para verificar esto. El problema es que KDE no tiene una computadora de escritorio ... –

+0

Se me olvidó comentar ... System.getenv ("XDG_CURRENT_DESKTOP") me imprime null en Linux Mint 12 con KDE nativo. –

1

La respuesta oficial es que no se supone a la atención. Ambas computadoras de escritorio cumplen con los estándares existentes. Ambos pueden ejecutar el software de los demás. ¿Qué es lo que estás tratando de hacer? Si se trata de un servicio en particular que está buscando y que solo una distribución se envía por defecto, en su lugar debe buscarlo.

+3

-1 Esta no es una respuesta a la pregunta y debería haber sido un comentario. –

+0

Voy a votar que esta es una buena respuesta. Tal vez no sea el mejor, pero funciona porque a veces tenemos que decir "No hagas eso" cuando las personas quieran saber cómo "hacer eso". –

+1

Hay varios lugares donde la gente se preocupa y debería saber, el primer ejemplo está dentro de xdg-utils http://cgit.freedesktop.org/xdg/xdg-utils/tree/scripts/xdg-utils-common.in see detectarDE(), es usado por xdg-su/xdg-terminal, etc. para determinar qué capa debe usarse nuestro envoltorio gráfico de sudo. También hay algunas cosas como configurar un fondo de pantalla, etc. que no están cubiertos por ninguna API o estándar fijo. La aplicación de fondo de pantalla de variedad hace precisamente eso en el siguiente script http://bazaar.launchpad.net/~peterlevi/variety/trunk/view/head:/data/scripts/set_wallpaper – simotek

Cuestiones relacionadas