Cómo determinar qué gestor de ventanas se está ejecutando

151

¿Hay alguna forma (como un comando o variable de entorno) para determinar qué administrador de ventanas es el que se está ejecutando activamente en la sesión actual?

    
pregunta Anonymous 26.10.2011 - 20:39

10 respuestas

126

Si tiene wmctrl instalado, la primera línea de salida del comando

    wmctrl -m

le mostrará el nombre del administrador de ventanas. Si no tiene wmctrl instalado, use el siguiente comando para instalarlo:

    sudo apt-get install wmctrl

Nota, man wmctrl (es decir, la página man para wmctrl ) dice en parte:

  

-m Muestra información sobre el administrador de ventanas ...

En mi sistema Ubuntu 11.10 / Linux 3.0.0-14-generic # 23-Ubuntu x86_64 / metacity 2.34.1, la primera línea de salida de wmctrl -m era: Name: Metacity
mientras que echo $DESKTOP_SESSION mostró ubuntu-2d y echo $XDG_CURRENT_DESKTOP mostró Unity .

En una nueva instalación de Ubuntu 15.10 del software Ubuntu desktop en una computadora portátil vieja, la primera línea de salida de wmctrl -m era: Name: Compiz
mientras que los valores de DESKTOP_SESSION y XDG_CURRENT_DESKTOP fueron ubuntu y Unity

    
respondido por el James Waldby - jwpat7 05.01.2012 - 07:57
84

En sistemas Linux probé las variables de entorno XDG_CURRENT_DESKTOP y GDMSESSION y obtuve los siguientes resultados.

  

Puede usar esta línea para obtener el resultado:

     
printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION"

Ubuntu 18.04 (Ubuntu)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu

Ubuntu 18.04 (Ubuntu en Wayland)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu-wayland

Ubuntu 16.04

Unidad (7)

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Ubuntu 14.04

Unidad que se ejecuta con Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Nota MIR_SERVER_NAME también está configurado

  • MIR_SERVER_NAME=session-$NUMBER

Unidad que se ejecuta sin Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

XFCE

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xfce

Ubuntu 12.04

KDE

  • XDG_CURRENT_DESKTOP=
  • GDMSESSION=kde-plasma

Unidad 3d

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Unidad 2d

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu-2d

Gnome

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-shell

Gnome Classic

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-classic

Gnome Classic (sin efectos)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-fallback

Otras distribuciones basadas en Ubuntu

Menta 13 (Canela)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=cinnamon

Mint 16 (edición de KDE)

  • XDG_CURRENT_DESKTOP=KDE
  • GDMSESSION=default

Casa de la Moneda 17 (Canela)

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=default

Lubuntu 12.04

  • XDG_CURRENT_DESKTOP=LXDE
  • GDMSESSION=Lubuntu

Wasta 14.04

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=cinnamon

Wasta 14.04 con el escritorio Gnome.

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome

Ubuntu Mate 18.04

  • XDG_CURRENT_DESKTOP=MATE
  • GDMSESSION=mate

Xubuntu 18.04

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xubuntu
respondido por el Tom 10.12.2012 - 20:38
39

En la terminal, escriba env para ver todas las variables de entorno. Algunos de ellos son:

XDG_CURRENT_DESKTOP : le indica el entorno de escritorio que está utilizando

GDMSESSION : le indica qué opción seleccionó del LightDM Greeter para iniciar sesión.

Para usarlos, ve a la terminal y escribe:

echo $XDG_CURRENT_DESKTOP

(Se generará, por ejemplo, "unidad" si está utilizando Unity)

o

echo $GDMSESSION  

(Se generará, por ejemplo, 'ubuntu' si seleccionó ubuntu en el inicio de sesión o 'ubuntu-2d' si seleccionó ese en el inicio de sesión).

Usted tiene otros si observa más de cerca el resultado de env como DESKTOP_SESSION y COMPIZ_CONFIG_PROFILE

Dado que lo que está buscando es el nombre de Window Manager que está en uso, la única manera en que veo cómo obtenerlo es mirando en la lista de procesos. Para hacer esto, hay un comando llamado pgrep ( Wikipedia ). Hice lo siguiente para obtener el nombre dado que el parámetro -l agrega la ID del proceso:

pgrep -l compiz |cut -d " " -f2 dado que el proceso está siendo ejecutado por el mismo usuario, no hay necesidad de ponerle un prefijo a la parte sudo. A continuación, puede usar esto para crear un script que realice una acción basada en el Administrador de ventanas.

Para buscar otros tipos, simplemente cambie la palabra compiz por otra como mutter , kwin , etc.

    
respondido por el Luis Alvarado 26.10.2011 - 21:57
20

Encontré pstree de gran ayuda.

Instalación

sudo apt-get install pstree

salida

Esto es lo que obtuve.

 ├─lightdm─┬─Xorg───2*[{Xorg}]
 │         ├─lightdm─┬─gnome-session─┬─bluetooth-apple───2*[{bluetooth-apple}]
 │         │         │               ├─compiz─┬─sh───gtk-window-deco───2*[{gtk-window-deco}]
 │         │         │               │        └─5*[{compiz}]
 │         │         │               ├─deja-dup-monito───2*[{deja-dup-monito}]
 │         │         │               ├─gnome-fallback-───2*[{gnome-fallback-}]
 │         │         │               ├─gnome-screensav───2*[{gnome-screensav}]
 │         │         │               ├─gnome-settings-───2*[{gnome-settings-}]
 │         │         │               ├─nautilus───2*[{nautilus}]
 │         │         │               ├─nm-applet───2*[{nm-applet}]
 │         │         │               ├─polkit-gnome-au───2*[{polkit-gnome-au}]
 │         │         │               ├─ssh-agent
 │         │         │               ├─telepathy-indic───2*[{telepathy-indic}]
 │         │         │               ├─update-notifier───2*[{update-notifier}]
 │         │         │               ├─vino-server───2*[{vino-server}]
 │         │         │               ├─zeitgeist-datah───{zeitgeist-datah}
 │         │         │               └─3*[{gnome-session}]
 │         │         └─{lightdm}
 │         └─2*[{lightdm}]
    
respondido por el Sridhar-Sarnobat 22.04.2014 - 04:59
8
xprop -id $(xprop -root -notype | awk '=="_NET_SUPPORTING_WM_CHECK:"{print }') -notype -f _NET_WM_NAME 8t 
    
respondido por el ruario 15.05.2014 - 06:19
3

He estado probando también con KDE y mi conclusión es:

a) Forma gráfica, con HardInfo: la respuesta normalmente está en "Sistema operativo" & gt; "Entorno de escritorio", pero si no puede ver "Variables de entorno". HardInfo está listo con todas las distribuciones probadas, excepto la que tiene KDE, pero se puede instalar fácil y rápidamente (solo 2 paquetes en Linux Mint 13).

b) Línea de comando, con este comando: ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm" . El elemento que aparece en más líneas debería ser la respuesta (si hay un sorteo, el elemento con "sesión" debería ser la solución).

    
respondido por el Msedfi 15.04.2013 - 22:51
1

Ninguno de los anteriores funcionó realmente para mí, solo quería saber si Gnome se estaba ejecutando como mi sesión de escritorio actual.

Esto es lo que funcionó, abre una terminal

lsb_release -a

(para verificar qué sabor o versión había instalado en mi máquina UBUNTU)

ls /usr/bin/*session

(inicia la sesión de escritorio / entorno de escritorio actualmente en uso)

gnome-shell --version 

(para averiguar qué versión de gnome está instalada)

    
respondido por el NanuBuria 07.07.2017 - 16:26
-1

La siguiente secuencia de comandos resultó ser la mejor respuesta a una pregunta similar que publiqué en unix.se . También funciona muy bien con Unity y LXDE.

if [ "$XDG_CURRENT_DESKTOP" = '' ]
then
  desktop=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*//')
else
  desktop=$XDG_CURRENT_DESKTOP
fi

desktop=${desktop,,}  # convert to lower case
echo "$desktop"
    
respondido por el Serge Stroobandt 24.02.2014 - 17:42
-1

Esto es posible con dbus y el servicio de cuentas (ambos por defecto en Ubuntu).

$ qdbus --system org.freedesktop.Accounts \                                                                
> /org/freedesktop/Accounts/User1000 \                                                                                     
> org.freedesktop.Accounts.User.XSession                                                                                   
ubuntu

Merece la pena señalar que he probado esto con el inicio de sesión a través de lightdm (que es la pantalla de inicio de sesión gráfica), detectó un escritorio clásico como blackbox y obviamente detecta Unity. Sospecho que este es un valor de lo que el usuario selecciona en la pantalla de inicio de sesión como sesión, es por eso que es un poco más fácil de usar que la comprobación de procesos

    
respondido por el Sergiy Kolodyazhnyy 03.04.2016 - 07:54
-3

Solo puedo pensar en buscar administradores de ventanas conocidos en los procesos en ejecución. Solía ​​haber una clave en gconf que estaba configurada para el administrador de ventanas preferido, pero está en desuso desde Gnome 2.12.

Entonces, si esto es para un propósito de programación, le sugiero que investigue para todos los administradores de ventanas de Linux; algunos populares son:

  • gnome-shell *
  • compiz
  • metacity
  • murmurar
  • pez sierra

Tendría que ejecutar un cheque para cada uno con el comando pgrep -l $WINDOW_MANAGER , donde $WINDOW_MANAGER es el nombre del administrador de ventanas que desea verificar. El comando pgrep comprueba si hay procesos en ejecución.

No estoy 100% seguro de que Gnome Shell se considere administrador de ventanas; el resto de los administradores de ventanas que obtuve de una lista en el script /usr/bin/gnome-wm . De hecho, esta secuencia de comandos debería ser utilizable (ya que está presente en una instalación limpia) pero en mi caso trata de ejecutar compiz , que no es mi administrador de ventanas predeterminado (no en mi sesión de Gnome).

EDITAR:

Bueno, el comentario de @Anarci parece ser más preciso. En mi caso sí mostró gnome-shell .

    
respondido por el Severo Raz 26.10.2011 - 21:32

Lea otras preguntas en las etiquetas