¿Existe un comando simple de Linux que me diga cuál es mi administrador de pantalla?

Respuestas:

46

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
Déjame ser
fuente
1
¿Por qué me cuentas sobre la configuración ...?
ptrcao
2
@ptrcao Porque especifica qué administrador de pantalla está utilizando.
Let_Me_Be
1
Supongamos que no sé cuál es mi administrador de pantalla y quiero averiguarlo usando el terminal. ¿Como podría hacerlo?
ptrcao
3
@ptrcao Usted buscaría en esos archivos. Ya sea abriéndolos en su editor favorito, o simplemente haciendo cat.
Let_Me_Be
1
Solo tiene una línea: /usr/bin/xdm¿eso significa que xdm es mi administrador de pantalla?
ptrcao
23

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 -Fopción significa un formato de salida analizable por máquina, y ''significa imprimir solo el PID, con la letra panterior. 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 pspara 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}'
Gilles 'SO- deja de ser malvado'
fuente
18

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.

allsyed
fuente
3
Has presentado un ejemplo clásico de un uso inútil del gato : es perfectamente aceptable e incluso preferible, por decirlo así grep '/usr/bin' /etc/systemd/system/display-manager.service. (Y, estrictamente hablando, dado /usr/binque no contiene ningún personaje que sea especial para el caparazón, no necesita citarlo, pero no duele)
G-Man dice 'Reinstate Monica'
66
El "uso inútil del gato" siempre es algo relativo. Prefiero editar la última cadena de en cat <file> | grep <searchterm>lugar de la segunda de grep <searchterm> <file>cuando grepping.
sjas
1
Esta respuesta debería ser la primera que vea, ya que la mayoría de los usuarios que tienen este tipo de preguntas hoy están ejecutando distribuciones basadas en systemd. Gracias. Me ayudó.
Adergaard
3
@allsyed mi archivo no tiene / usr / bin tiene / usr / sbin. Linux-Mint 18
Prvt_Yadav
2
En mi caso (Centos 7) tengo que escribir | grep '/ usr / sbin'
Davide
16

Si está utilizando systemd, entonces

systemctl status display-manager

Mostrará el nombre y el estado del servicio de administrador de pantalla activo en su máquina.

Mioriin
fuente
Con Debian 9, este es el único que funcionó para mí. Los otros métodos systemd no devolvieron nada.
mickeyf
10

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.

puente de Charles
fuente
@frabjous: ¿Qué pasa con gdm y kdm? ¿También son administradores de pantallas o solo administradores de inicio de sesión?
ptrcao
Debo haber eliminado accidentalmente el comentario de frabjous justo arriba porque recuerdo que comentó que Gnome es un entorno de escritorio, no un administrador de pantalla. Este hilo está
lleno de
Esto proporciona información sobre ... la sesión de escritorio, que probablemente sea lo mismo que su entorno de escritorio, pero puede ser algo completamente diferente si no está utilizando un entorno de escritorio o si tiene una configuración peculiar. En la máquina donde estoy escribiendo esto, $DESKTOP_SESSIONestá unknown.
Gilles 'SO- deja de ser malvado'
+1, echo $ DESKTOP_SESSION también me devuelve gnome ... pero ¿tal vez esto solo funciona para gnome?
Trevor Boyd Smith
Si solo funciona para gnome, este comando solo te ayudará a deducir "sí, tienes Gnome o no, no tienes gnome". Cuando la pregunta quiere saber más que eso.
Trevor Boyd Smith
2

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$" 
sjas
fuente
1
Esta es la única solución aquí que funcionó para mí. Descubrí que mi Fedora 23 minimal con el complemento LXDE (no el LXDE Spin) se está ejecutando lightdm. La solución RedHat / Fedora de la respuesta principal no funcionó, la configuración parece haberse movido.
Daniel Saner
0

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.

Francis Gernet
fuente
66
Un administrador de ventanas no es lo mismo que un administrador de pantallas .
HalosGhost
0

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 :)

billV
fuente
En realidad nunca lo hice ... De hecho, me di por vencido en Linux por completo y me fui al lado oscuro: D
ptrcao
0

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

Obi Uchenna David
fuente
-1

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). 
Mathieu
fuente
@frabjous: Xfwm4 es el administrador de ventanas Xfce. ¿Es lo mismo que un administrador de pantalla?
ptrcao
@ Mathieu Estás hablando de administradores de ventanas, no de administradores de pantallas.
Let_Me_Be
@Let_Me_Be Es cierto, pero la mayoría de las veces, su administrador de ventanas está vinculado a su administrador de visualización ... ¿Con qué frecuencia usa gnome window manager con kde y viceversa? Y en realidad funciona porque gdm / kdm / lo que sea le permite seleccionar su administrador de pantalla, lo que significa que leer el archivo de configuración como mencionó no funciona si no usa el valor predeterminado proporcionado ...
Mathieu
_NET_SUPPORTING_WM_CHECKproporciona 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.
Gilles 'SO- deja de ser malvado'
@ Mathieu Eso depende de las distribuciones. Por lo general, cuando instala una versión KDE de la distribución, obtiene KDM y cuando es una versión gnome, obtiene GDM. Pero lo que verá cada vez más es el soporte oficial para un solo administrador de pantalla (generalmente una variante más liviana que GDM / KDM).
Let_Me_Be
-2
lshw -c video | grep 'configuration'
dormir
fuente
3
Un poco de explicación estaría bien.
phk