¿Existe un comando simple de Linux que me diga cuál es mi administrador de pantalla?
Estoy usando Xfce. ¿Los diferentes entornos de escritorio generalmente están afiliados a diferentes administradores de pantalla?
¿Existe un comando simple de Linux que me diga cuál es mi administrador de pantalla?
Estoy usando Xfce. ¿Los diferentes entornos de escritorio generalmente están afiliados a diferentes administradores de pantalla?
Respuestas:
Lamentablemente, la configuración difiere para cada distribución:
Debian / Ubuntu
/etc/X11/default-display-manager
RedHat (también debería aplicarse a Fedora)
/etc/sysconfig/desktop
OpenSuSe
/etc/sysconfig/displaymanager
cat
.
/usr/bin/xdm
¿eso significa que xdm es mi administrador de pantalla?
No hay El administrador de visualización no está necesariamente relacionado con nada más que se ejecute en el mismo servidor X. El administrador de visualización se ejecuta antes de iniciar sesión; Es elegido por el administrador del sistema. El usuario elige todo lo demás (administrador de ventanas, administrador de sesiones, entorno de escritorio, ...). Ni siquiera tiene que haber un administrador de pantalla: si inicia sesión en modo texto e inicia la GUI startx
, no hay administrador de pantalla involucrado.
Puede verificar qué administrador de pantalla es el predeterminado en su sistema . Esto solo dará la respuesta correcta bajo algunos supuestos comunes pero no universales. Si ejecutaste manualmente un administrador diferente por cualquier razón, este método no te lo dirá.
Una buena apuesta es encontrar el ID de proceso del servidor X: su proceso principal es probablemente un administrador de pantalla, si hay uno. Esto requiere que sus clientes se ejecuten en la misma máquina que el servidor X. lsof /tmp/.X11-unix/X${DISPLAY#:}
mostrará el proceso del servidor X (suponiendo que los sockets X estén activos /tmp/.X11-unix
).
x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
(Explicación: lsof -F ''
imprime resultados como p1234
. La -F
opción significa un formato de salida analizable por máquina, y ''
significa imprimir solo el PID, con la letra p
anterior. x=${x#p}
Elimina la letra inicial p
. La última línea obtiene el PID del padre del servidor X ( ps -o ppid -p $x
), y llama ps
para mostrar información sobre ese proceso principal.)
Algunas distribuciones permiten instalar múltiples administradores de pantalla. Sin embargo, solo se ejecutará uno a menos que tenga un sistema multiseat. Para enumerar todos los paquetes de gestores de pantallas instalados en Debian y derivados:
aptitude -F %p search '~i ~P^x-display-manager$'
o
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
Si está utilizando la distribución basada en systemd . Este comando le dará el nombre del administrador de pantalla configurado actualmente porque puede tener más de un administrador de pantalla instalado.
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
SALIDA será algo así como
ExecStart=/usr/bin/mdm
Parece que estoy usando el administrador de pantalla de menta.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (Y, estrictamente hablando, dado /usr/bin
que no contiene ningún personaje que sea especial para el caparazón, no necesita citarlo, pero no duele)
cat <file> | grep <searchterm>
lugar de la segunda de grep <searchterm> <file>
cuando grepping.
El nombre del administrador de visualización debe estar en DESKTOP_SESSION
echo $DESKTOP_SESSION
me devuelve "gnomo".
EDITAR
Tienes razón. Ellos van ida y vuelta en el que XFCEs Bugzilla por lo que probablemente no es muy fiable.
$DESKTOP_SESSION
está unknown
.
Como dijo @Gilles, el administrador de pantalla iniciará su entorno de escritorio.
Según el Wiki de Debian , en su mayoría terminan con dm
, solo la excepción es slim
.
Entonces, esto debería ser suficiente para las necesidades de la mayoría de las personas:
ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$
O para estar seguro, existe como un proceso padre y no está bifurcado (excepto del sistema init):
ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$"
lightdm
. La solución RedHat / Fedora de la respuesta principal no funcionó, la configuración parece haberse movido.
En algunos casos, wmctrl podría ayudar. Esta utilidad es compatible con muchos administradores de Windows.
wmcrt -m
debería mostrar el nombre del administrador de ventanas utilizado actualmente.
Como ya se mencionó, hay mucha confusión en este hilo. La pregunta original es qué administrador de pantalla, no administrador de escritorio o administrador de ventanas. Actualmente estoy ejecutando Xfwm4, que es el administrador de ventanas Xfce, y lxdm, que es el administrador de pantalla X11 ligero (de LXDE, no Xfce). Debería poder ver qué administrador de pantalla está utilizando a través de htop. Probablemente hace mucho que descubrió la respuesta en los últimos 4 años :)
Puede hacerlo a través de un script de terceros llamado screenfetch
Screenfetch es un script bash disponible para Linux que muestra información del sistema junto con la versión ASCII del logotipo de distribución de Linux del sistema
Instalar mediante el administrador de paquetes
sudo apt-get install screenfetch
(suponiendo que esté en variantes de Debian)
y solo corre
screenfetch
en tu terminal
Enlace del proyecto https://github.com/KittyKatt/screenFetch
X es altamente modular, por lo que si realmente lo desea, sí, puede mezclar entornos de escritorio y administradores de ventanas. Después de todo, un administrador de ventanas es solo una forma de pintar ventanas (esa es la vista simple).
Entonces, si tomas gnome, metacity solía ser el administrador de Windows, pero ahora ha sido reemplazado por Mutter.
El problema con la mezcla es en entornos de escritorio modernos, el escritorio y el administrador de ventanas están muy vinculados entre sí. Demasiada mezcla podría terminar en menos funcionalidad.
Como se mencionó, $ DESKTOP_SESSION funciona, pero si desea preguntar a su servidor X11, puede hacer esto:
xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME
Que se descompone en
xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"
Que obtiene la identificación de la ventana creada por el administrador de ventanas. Las especificaciones dicen (http://standards.freedesktop.org/wm-spec/1.3/ar01s03.html):
_NET_SUPPORTING_WM_CHECK, WINDOW/32
The Window Manager MUST set this property on the root window to be the ID
of a child window created by himself, to indicate that a compliant window
manager is active.
Y luego solicita la propiedad WM_NAME de dicha ventana.
WM_NAME siendo:
The WM_NAME property is an uninterpreted string that the client wants the
window manager to display in association with the window (for example, in
a window headline bar).
_NET_SUPPORTING_WM_CHECK
proporciona información sobre el administrador de ventanas, no sobre el administrador de pantallas. Ni siquiera siempre funciona; en mi sistema, esa propiedad está configurada para una ID de ventana pero la ventana en cuestión no tiene nombre.