Existe-t-il une simple commande linux qui me dira ce qu'est mon gestionnaire d'affichage?
J'utilise Xfce. Différents environnements de bureau sont-ils généralement associés à différents gestionnaires d’affichage?
Existe-t-il une simple commande linux qui me dira ce qu'est mon gestionnaire d'affichage?
J'utilise Xfce. Différents environnements de bureau sont-ils généralement associés à différents gestionnaires d’affichage?
Réponses:
Malheureusement, la configuration diffère pour chaque distribution:
Debian / Ubuntu
/etc/X11/default-display-manager
RedHat (devrait également s'appliquer à Fedora)
/etc/sysconfig/desktop
OpenSuSe
/etc/sysconfig/displaymanager
cat
.
/usr/bin/xdm
- cela signifie-t-il que xdm est mon gestionnaire d'affichage?
Il n'y a pas. Le gestionnaire d'affichage n'est pas nécessairement lié à quoi que ce soit d'autre qui s'exécute sur le même serveur X. Le gestionnaire d'affichage s'exécute avant de vous connecter; c'est choisi par l'administrateur système. Tout le reste (gestionnaire de fenêtre, gestionnaire de session, environnement de bureau,…) est choisi par l'utilisateur. Il n'est même pas nécessaire d'avoir un gestionnaire d'affichage: si vous vous connectez en mode texte 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 ne fera que donner la bonne réponse sous certaines hypothèses communes mais non universelles. Si vous avez exécuté manuellement un autre gestionnaire pour une raison quelconque, cette méthode ne vous le dira pas.
Un bon pari consiste à connaître l'ID de processus du serveur X: son processus parent est probablement un gestionnaire d'affichage, le cas échéant. Cela nécessite que vos clients s'exécutent sur le même ordinateur que le serveur X. lsof /tmp/.X11-unix/X${DISPLAY#:}
montrera le processus du serveur X (en supposant que les sockets X vivent /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
. L' -F
option désigne un format de sortie analysable par machine et ''
n'imprime que le PID, avec la lettre la p
précédant. x=${x#p}
Élimine la lettre initiale p
. La dernière ligne obtient le PID du parent du serveur X ( ps -o ppid -p $x
), et appelle ps
pour afficher des informations sur ce processus parent.)
Certaines distributions permettent d'installer plusieurs gestionnaires d'affichage. Il n'y en aura qu'un seul en cours d'exécution, sauf si vous avez un système multiseat. Pour lister tous les paquets du gestionnaire d’affichage installés sous Debian et ses 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}'
Si vous utilisez une distribution basée sur systemd . Cette commande donnera le nom du gestionnaire d'affichage actuellement configuré car plusieurs gestionnaires d'affichage peuvent être installés.
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
SORTIE sera quelque chose comme
ExecStart=/usr/bin/mdm
On dirait que j'utilise le gestionnaire d'affichage à la menthe.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (Et, à proprement parler, puisqu'il /usr/bin
ne contient aucun caractère spécial pour le shell, vous n'avez pas besoin de le citer, mais cela ne fait pas mal.)
cat <file> | grep <searchterm>
au lieu de la seconde grep <searchterm> <file>
lors de la récupération.
Si vous utilisez systemd, alors
systemctl status display-manager
Affiche le nom et l’état du service du gestionnaire d’affichage actif sur votre machine.
Le nom du gestionnaire d'affichage doit être dans DESKTOP_SESSION.
echo $DESKTOP_SESSION
retourne "gnome" pour moi.
EDIT
Vous avez raison. Ils vont et viennent à ce sujet sur le bugzilla de XFCE, donc ce n'est probablement pas très fiable.
$DESKTOP_SESSION
c'est unknown
.
Comme @Gilles a dit, le gestionnaire d'affichage va démarrer votre environnement de bureau.
Selon le wiki de Debian , la plupart du temps, ils se terminent par dm
, seule exception slim
.
Cela devrait donc suffire à 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 processus parent et n'est pas créé (à l'exception du système init):
ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$"
lightdm
. La solution RedHat / Fedora de la réponse principale n'a pas fonctionné, la configuration semble s'être déplacée.
Dans certains cas, wmctrl pourrait vous aider. Cet utilitaire est compatible avec beaucoup de gestionnaires de fenêtres.
wmcrt -m
devrait afficher le nom du gestionnaire de fenêtres actuellement utilisé.
Comme déjà mentionné, il y a beaucoup de confusion dans ce fil. La question initiale est de savoir quel gestionnaire d’affichage, et non pas le gestionnaire de bureau ou le gestionnaire de fenêtres. J'utilise actuellement Xfwm4, gestionnaire de fenêtres Xfce, et lxdm, gestionnaire d'affichage X11 léger (de LXDE et non de Xfce). Vous devriez pouvoir voir quel gestionnaire d’affichage vous utilisez via htop. Vous avez probablement depuis longtemps découvert la réponse au cours des 4 dernières années :)
Vous pouvez le faire via un script tiers appelé screenfetch
Screenfetch est un script bash disponible pour Linux qui affiche des informations système à côté de la version ASCII de la distribution Linux. Logo du système
Installer via le gestionnaire de paquets
sudo apt-get install screenfetch
(en supposant que vous êtes sur des variantes de Debian)
et juste courir
screenfetch
dans votre terminal
Lien du projet https://github.com/KittyKatt/screenFetch
X est hautement modulaire, vous pouvez donc mélanger les environnements de bureau et les gestionnaires de fenêtres. Après tout, un gestionnaire de fenêtres n’est qu’un moyen de peindre des fenêtres (c’est la simple vue).
Donc, si vous prenez gnome, Metacity était le gestionnaire de fenêtres, mais maintenant, il est remplacé par Mutter.
Le problème du mélange réside dans les environnements de bureau modernes. Le bureau et le gestionnaire de fenêtres sont étroitement liés. Trop de mixage pourrait aboutir à moins de fonctionnalités.
Comme mentionné précédemment, $ DESKTOP_SESSION fonctionne, mais si vous voulez demander à votre serveur X11, vous pouvez le faire:
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"
Ce qui obtient l'id de la fenêtre créée par le gestionnaire de fenêtres. La spécification dit (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 ensuite, vous demandez la propriété WM_NAME de ladite fenêtre.
WM_NAME étant:
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
donne des informations sur le gestionnaire de fenêtres, pas sur le gestionnaire d'affichage. Cela ne fonctionne même pas toujours; sur mon système, cette propriété est définie sur un ID de fenêtre, mais la fenêtre en question n'a pas de nom.