Existe-t-il une simple command linux qui me dira quel est mon gestionnaire d'affichage?

Existe-t-il une simple command linux qui me dira quel est mon gestionnaire d'affichage?

J'utilise Xfce. Les différents environnements de bureau sont-ils généralement affiliés à différents gestionnaires d'affichage?

Malheureusement, la configuration diffère pour chaque dissortingbution:

Debian (devrait également s'appliquer à Ubuntu)

/etc/X11/default-display-manager 

RedHat (devrait également s'appliquer à Fedora)

 /etc/sysconfig/desktop 

OpenSuSe

 /etc/sysconfig/displaymanager 

Il n'y en a pas. Le gestionnaire d'affichage n'est pas nécessairement lié à quelque chose d'autre qui s'exécute sur le même server X. Le gestionnaire d'affichage s'exécute avant de vous connecter; il est choisi par l'administrateur système. Tout le rest (gestionnaire de windows, gestionnaire de session, environnement de bureau, …) est choisi par l'user. Il n'est même pas nécessaire d'avoir un gestionnaire d'affichage: si vous vous connectez en mode text et démarrez l'interface graphique avec startx , aucun gestionnaire d'affichage n'est impliqué.

Vous pouvez vérifier quel gestionnaire d'affichage est celui par défaut sur votre système . Cela donnera seulement la bonne réponse sous certaines hypothèses communes mais pas universelles. Si vous avez exécuté manuellement un gestionnaire différent pour une raison quelconque, cette méthode ne vous le dira pas.

Un bon pari est de find l'ID de process du server X: son process parent est probablement un gestionnaire d'affichage, s'il y en a un. Cela nécessite que vos clients s'exécutent sur la même machine que le server X. lsof /tmp/.X11-unix/X${DISPLAY#:} affichera le process du server X (en supposant que les sockets X vivent dans /tmp/.X11-unix ).

 x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p} ps -p $(ps -o ppid -p $x) 

(Explication: lsof -F '' imprime la sortie comme p1234 -F signifie un format de sortie p1234 par la machine, et '' signifie imprimer le PID avec la lettre p avant elle x=${x#p} supprime la lettre initiale ps -o ppid -p $x dernière ligne obtient le PID du parent du server X ( ps -o ppid -p $x ), et appelle ps pour afficher des informations sur ce process parent.

Certaines dissortingbutions permettent d'installer plusieurs gestionnaires d'affichage. Il n'y en aura qu'un seul, sauf si vous avez un système multiseat. Pour répertorier tous les packages de gestionnaire d'affichage installés sous Debian et les dérivés:

 aptitude -F %p search '~i ~P^x-display-manager$' 

ou

 </var/lib/dpkg/status awk ' /^Package: / {package = $2} /^Provides: .*x-display-manager/ {print package}' 

Le nom du gestionnaire d'affichage doit être dans DESKTOP_SESSION

 echo $DESKTOP_SESSION 

renvoie "gnome" pour moi.

MODIFIER
Tu as raison. Ils vont et viennent sur ça bugzilla XFCE donc ce n'est probablement pas très fiable.

si vous utilisez une dissortingbution basée sur systemd. Cette command vous donnera le nom du gestionnaire d'affichage actuellement actif car plusieurs gestionnaires d'affichage peuvent être installés.

 cat /etc/systemd/system/display-manager.service | grep '/usr/bin' 

SORTIE sera comme

 ExecStart=/usr/bin/mdm 

On dirait que j'utilise le gestionnaire d'affichage de menthe.

Comme @Gilles a dit, le gestionnaire d'affichage va démarrer votre environnement de bureau.

Selon le Wiki Debian , la plupart se terminent par dm , seule l'exception est slim .

Donc cela devrait suffire pour la plupart des besoins de la population:

 ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$ 

Ou, pour être sûr, il existe en tant que process parent et n'est pas forké (sauf depuis le système init):

 ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$" 

Si vous utilisez systemd, alors

 systemctl status display-manager 

Affiche le nom et l'état du service de gestionnaire d'affichage actif sur votre ordinateur.

Dans certains cas, wmctrl pourrait aider. Cet utilitaire est compatible avec de nombreux gestionnaires de windows.

 wmcrt -m 

devrait afficher le nom du gestionnaire de windows actuellement utilisé.

Comme déjà mentionné, il y a beaucoup de confusion dans ce fil. La question initiale est ce gestionnaire d'affichage, pas gestionnaire de bureau ou gestionnaire de window. Je suis actuellement en cours d'exécution Xfwm4 qui est gestionnaire de windows Xfce, et lxdm qui est le gestionnaire d'affichage X11 léger (à partir de LXDE, pas Xfce). Vous devriez pouvoir voir quel gestionnaire d'affichage vous utilisez via htop. Vous avez probablement depuis longtime découvert la réponse au cours des 4 dernières années 🙂

X est très modulaire, donc si vous le vouliez vraiment, vous pouvez mélanger les environnements de bureau et les gestionnaires de windows. Après tout, un gestionnaire de windows est juste un moyen de peindre des windows (c'est la vue simple).

Donc, si vous prenez gnome, Metacity était le gestionnaire de windows mais maintenant il a été remplacé par Mutter.

Le problème avec le mélange est dans les environnements de bureau modernes, le bureau et le gestionnaire de windows sont fortement liés les uns aux autres. Trop de mixage pourrait se traduire par less de fonctionnalités.

Comme mentionné $ DESKTOP_SESSION fonctionne mais si vous voulez requestr à votre server X11, vous pourriez faire ceci:

 xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME 

Qui se décompose en

 xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2 0x1000052 xprop -id 0x1000052 WM_NAME WM_NAME(STRING) = "xfwm4" 

Lequel obtient l'identifiant de la window créée par le gestionnaire de windows. Les spécifications disent (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. 

Et puis vous requestz la propriété WM_NAME de ladite window.

WM_NAME étant:

 The WM_NAME property is an uninterpreted ssortingng that the client wants the window manager to display in association with the window (for example, in a window headline bar).