¿Hay alguna forma (como un comando o una variable de entorno) para determinar qué administrador de ventanas se está ejecutando activamente en la sesión actual?
fuente
¿Hay alguna forma (como un comando o una variable de entorno) para determinar qué administrador de ventanas se está ejecutando activamente en la sesión actual?
Si ha wmctrl
instalado, la primera línea de salida del comando
wmctrl -m
le mostrará el nombre del administrador de ventanas. Si no lo ha wmctrl
instalado, use el siguiente comando para instalarlo:
sudo apt-get install wmctrl
Nota, man wmctrl
(es decir, la man
página 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
fue: Name: Metacity
mientras se echo $DESKTOP_SESSION
muestra ubuntu-2d
y se echo $XDG_CURRENT_DESKTOP
muestra Unity
.
En un nuevo Ubuntu 15.10 instalación de Ubuntu desktop
software en un viejo ordenador portátil, la primera línea de salida wmctrl -m
fue: Name: Compiz
mientras que las DESKTOP_SESSION
y XDG_CURRENT_DESKTOP
los valores eran ubuntu
yUnity
ssh -Y {host} 'wmctrl -m'
devuelve algunos valores (por ejemplo, "Nombre: Compiz" y varias N / A), pero tiene sentido quessh
tenga información limitada sobre el administrador de ventanas.wmctrl -d
(Listar todos los escritorios administrados por el administrador de ventanas) owmctrl -l
(Listar las ventanas administradas por el administrador de ventanas) en Xubuntu Wily con Window Maker?En los sistemas Linux Probé variables de entorno
XDG_CURRENT_DESKTOP
yGDMSESSION
y obtuve los siguientes resultados.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 corriendo con Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Nota MIR_SERVER_NAME también está configurado
MIR_SERVER_NAME=session-$NUMBER
Unidad corriendo 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
Gnomo
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-shell
Gnomo clásico
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
Menta 16 (edición KDE)
XDG_CURRENT_DESKTOP=KDE
GDMSESSION=default
Menta 17 (Canela)
XDG_CURRENT_DESKTOP=X-Cinnamon
GDMSESSION=default
Lubuntu 12.04
XDG_CURRENT_DESKTOP=LXDE
GDMSESSION=Lubuntu
Wasta 14.04 / 18.04
XDG_CURRENT_DESKTOP=X-Cinnamon
GDMSESSION=cinnamon
Wasta 14.04 usando 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
fuente
En el terminal escriba
env
para ver todas las variables de entorno. Algunos de ellos son:XDG_CURRENT_DESKTOP : le indica qué entorno de escritorio está utilizando
GDMSESSION : le indica qué opción seleccionó de lightdm greeter para iniciar sesión.
Para usarlos, vaya a la terminal y escriba:
(Producirá, por ejemplo, 'unidad' si está utilizando Unity)
o
(Producirá, por ejemplo, 'ubuntu' si seleccionó ubuntu en el inicio de sesión o 'ubuntu-2d' si seleccionó ese en el inicio de sesión).
Tiene otros si se mira de cerca a la salida del
env
como DESKTOP_SESSION y COMPIZ_CONFIG_PROFILEDado que lo que está buscando es el nombre de qué Administrador de ventanas está en uso, la única forma en que veo cómo obtener esto es buscando en la lista de procesos. Para hacer esto hay un comando llamado
pgrep
( Wikipedia ). Hice lo siguiente para obtener el nombre ya que el parámetro -l agrega la ID del proceso:pgrep -l compiz |cut -d " " -f2
Como el proceso lo ejecuta el mismo usuario, no es necesario prefijar la parte sudo. Luego puede usar esto para crear un script que realice una acción basada en el Administrador de ventanas.Para buscar otros tipos, basta con cambiar la palabra
compiz
a otro comomutter
,kwin
etc ..fuente
$XDG_CURRENT_DESKTOP
es el entorno de escritorio actual, NO el administrador de ventanas.Me pareció
pstree
de gran ayuda.Instalación
salida
Esto es lo que conseguí.
fuente
fuente
)
al final.xprop -root -notype
muestra todas las propiedades de la ventana raíz (y omite los tipos para facilitar el análisis), la salida se envía aawk
través de la tubería; 2. laawk
instrucción$1=="_NET[blah]CK:"{print $5}'
compara la primera columna de cada fila de la entrada que ingresó a través de la tubería con una cadena dada y si encuentra la coincidencia, ejecuta el código entre paréntesis que imprime la quinta columna de esta fila; solo sucede (completamente por accidente, Apuesto) a ser el ID del átomo "_NET_SUPPORTING_WM_CHECK"; 3. Esta ID se usa nuevamente para obtener las propiedades del Administrador de Windows conxprop -id
He estado probando también con KDE y mi conclusión es:
a) De forma gráfica, con HardInfo: la respuesta normalmente está en "Sistema operativo"> "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 comandos, 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).fuente
gnome-...
procesos (y un éxito con kdekdevtmpfs
)Nada de lo anterior realmente funcionó para mí, solo quería saber si tenía a Gnome ejecutándose como mi sesión de escritorio actual.
Esto es lo que funcionó, abrir una terminal
(para verificar qué sabor o versión había instalado en mi máquina UBUNTU)
(inicia qué sesión de escritorio / entorno de escritorio actualmente en uso)
(para saber qué versión de gnome está instalada)
fuente
O en una línea:
fuente
Esto es posible con dbus y el Servicio de Cuentas (ambos por defecto en Ubuntu).
Vale la pena señalar que he probado esto al iniciar 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, por eso es un poco más fácil usar esa verificación de procesos
fuente
Guión
La siguiente secuencia de comandos resultó como la mejor respuesta a un semejante pregunta que he publicado sobre al unix.se . También funciona muy bien con Unity y LXDE.
fuente
Puedes usar la herramienta llamada
inxi
. Se puede obtener de los repositorios de Ubuntu por:sudo apt install inxi
o desde github: https://github.com/smxi/inxi
Simplemente ejecute el comando de la siguiente manera:
Tenga en cuenta la
Desktop: i3
parte. En mi caso, el administrador de ventanas que uso esi3
.La opción
-S
muestra información del sistema yx
agrega información sobre el administrador de ventanas.fuente
Solo puedo pensar en buscar administradores de ventanas conocidos en los procesos en ejecución. Solía haber una clave en gconf que se configuró en el administrador de ventanas preferido, pero está en desuso desde Gnome 2.12.
Entonces, si esto es para fines de programación, le sugiero que investigue todos los administradores de ventanas de Linux; algunos populares son:
Tendría que ejecutar una verificación para cada uno con el comando
pgrep -l $WINDOW_MANAGER
, donde$WINDOW_MANAGER
está el nombre del administrador de ventanas que desea verificar. Elpgrep
comando verifica los procesos en ejecución.No estoy 100% seguro de si Gnome Shell se considera un administrador de ventanas; El resto de los gestores de ventanas que obtuve de una lista en el
/usr/bin/gnome-wm
script. De hecho, este script debería ser utilizable (ya que está presente en una instalación limpia) pero en mi caso intenta ejecutarse,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 se demostró
gnome-shell
.fuente
pgrep -l "compiz|metacity|mutter|kwin|sawfish|fluxbox|openbox|xmonad"
$DISPLAY
en su entorno).