¿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 wmctrlinstalado, la primera línea de salida del comando
wmctrl -m
le mostrará el nombre del administrador de ventanas. Si no lo ha wmctrlinstalado, use el siguiente comando para instalarlo:
sudo apt-get install wmctrl
Nota, man wmctrl(es decir, la manpá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 -mfue: Name: Metacity
mientras se echo $DESKTOP_SESSIONmuestra ubuntu-2dy se echo $XDG_CURRENT_DESKTOPmuestra Unity.
En un nuevo Ubuntu 15.10 instalación de Ubuntu desktopsoftware en un viejo ordenador portátil, la primera línea de salida wmctrl -mfue: Name: Compiz
mientras que las DESKTOP_SESSIONy XDG_CURRENT_DESKTOPlos valores eran ubuntuyUnity
ssh -Y {host} 'wmctrl -m'devuelve algunos valores (por ejemplo, "Nombre: Compiz" y varias N / A), pero tiene sentido quesshtenga 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_DESKTOPyGDMSESSIONy obtuve los siguientes resultados.Ubuntu 18.04 (Ubuntu)
XDG_CURRENT_DESKTOP=ubuntu:GNOMEGDMSESSION=ubuntuUbuntu 18.04 (Ubuntu en Wayland)
XDG_CURRENT_DESKTOP=ubuntu:GNOMEGDMSESSION=ubuntu-waylandUbuntu 16.04
Unidad (7)
XDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuUbuntu 14.04
Unidad corriendo con Mir
XDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuNota MIR_SERVER_NAME también está configurado
MIR_SERVER_NAME=session-$NUMBERUnidad corriendo sin Mir
XDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuXFCE
XDG_CURRENT_DESKTOP=XFCEGDMSESSION=xfceUbuntu 12.04
KDE
XDG_CURRENT_DESKTOP=GDMSESSION=kde-plasmaUnidad 3d
XDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuUnidad 2d
XDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntu-2dGnomo
XDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-shellGnomo clásico
XDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-classicGnome Classic (sin efectos)
XDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-fallbackOtras distribuciones basadas en Ubuntu
Menta 13 (Canela)
XDG_CURRENT_DESKTOP=GNOMEGDMSESSION=cinnamonMenta 16 (edición KDE)
XDG_CURRENT_DESKTOP=KDEGDMSESSION=defaultMenta 17 (Canela)
XDG_CURRENT_DESKTOP=X-CinnamonGDMSESSION=defaultLubuntu 12.04
XDG_CURRENT_DESKTOP=LXDEGDMSESSION=LubuntuWasta 14.04 / 18.04
XDG_CURRENT_DESKTOP=X-CinnamonGDMSESSION=cinnamonWasta 14.04 usando el escritorio Gnome.
XDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnomeUbuntu Mate 18.04
XDG_CURRENT_DESKTOP=MATEGDMSESSION=mateXubuntu 18.04
XDG_CURRENT_DESKTOP=XFCEGDMSESSION=xubuntufuente
En el terminal escriba
envpara 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
envcomo 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 " " -f2Como 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
compiza otro comomutter,kwinetc ..fuente
$XDG_CURRENT_DESKTOPes el entorno de escritorio actual, NO el administrador de ventanas.Me pareció
pstreede gran ayuda.Instalación
salida
Esto es lo que conseguí.
fuente
fuente
)al final.xprop -root -notypemuestra todas las propiedades de la ventana raíz (y omite los tipos para facilitar el análisis), la salida se envía aawktravés de la tubería; 2. laawkinstrucció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 -idHe 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 inxio desde github: https://github.com/smxi/inxi
Simplemente ejecute el comando de la siguiente manera:
Tenga en cuenta la
Desktop: i3parte. En mi caso, el administrador de ventanas que uso esi3.La opción
-Smuestra información del sistema yxagrega 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_MANAGERestá el nombre del administrador de ventanas que desea verificar. Elpgrepcomando 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-wmscript. De hecho, este script debería ser utilizable (ya que está presente en una instalación limpia) pero en mi caso intenta ejecutarse,compizque 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"$DISPLAYen su entorno).