238 votes

Comment déterminer quel gestionnaire de fenêtres est en cours d'exécution

Existe-t-il un moyen (tel qu'une commande ou une variable d'environnement) de déterminer ce que l'on doit faire ? gestionnaire de fenêtres est celui qui est en cours d'exécution dans la session actuelle ?

177voto

Si vous avez wmctrl installé, la première ligne de sortie de la commande

wmctrl -m

vous indiquera le nom du gestionnaire de fenêtres. Si vous n'avez pas wmctrl installé, utilisez la commande suivante pour l'installer :

sudo apt-get install wmctrl

Note, man wmctrl (c'est-à-dire le man page pour wmctrl ) dit en partie :

-m Afficher des informations sur le gestionnaire de fenêtres ...

Sur mon système Ubuntu 11.10 / Linux 3.0.0-14-generic #23-Ubuntu x86_64 / metacity 2.34.1, la première ligne de la sortie de wmctrl -m était : Name: Metacity
tandis que echo $DESKTOP_SESSION a montré ubuntu-2d y echo $XDG_CURRENT_DESKTOP a montré Unity .

Sur une nouvelle installation Ubuntu 15.10 de Ubuntu desktop sur un vieil ordinateur portable, la première ligne de sortie de l'application wmctrl -m était : Name: Compiz
tandis que le DESKTOP_SESSION y XDG_CURRENT_DESKTOP étaient ubuntu y Unity

133voto

Tom Points 1584

Sur les systèmes Linux, j'ai testé les variables d'environnement XDG_CURRENT_DESKTOP y GDMSESSION et j'ai obtenu les résultats suivants.

Vous pouvez utiliser cette ligne pour obtenir la sortie :

printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION"

Ubuntu 18.04 et 20.04 (Ubuntu sous GNOME)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu

Ubuntu 18.04 (Ubuntu sur Wayland)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu-wayland

Ubuntu 16.04

Unité (7)

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Ubuntu 14.04

Unity fonctionne avec Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

_Note MIR_SERVER_NAME est également fixé_

  • MIR_SERVER_NAME=session-$NUMBER

Unity fonctionne sans Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

XFCE

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xfce

Ubuntu 12.04

KDE

  • XDG_CURRENT_DESKTOP=
  • GDMSESSION=kde-plasma

Unity 3D

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Unity 2D

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu-2d

Gnome

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-shell

Gnome Classic

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-classic

Gnome Classic (sans effets)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-fallback

Autres distributions basées sur Ubuntu

Mint 13 (cannelle)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=cinnamon

Mint 16 (édition KDE)

  • XDG_CURRENT_DESKTOP=KDE
  • GDMSESSION=default

Mint 17 (cannelle)

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=default

Lubuntu 12.04

  • XDG_CURRENT_DESKTOP=LXDE
  • GDMSESSION=Lubuntu

Wasta 14.04 / 18.04

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=cinnamon

Wasta 14.04 utilisant le bureau Gnome.

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome

Ubuntu Mate 18.04

  • XDG_CURRENT_DESKTOP=MATE
  • GDMSESSION=mate

Xubuntu 18.04

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xubuntu

Kali Linux kali-rolling 2020.2

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=lightdm-xsession

43voto

Bob Points 940

Dans le terminal, tapez env pour voir toutes les variables d'environnement. Certaines d'entre elles sont :

XDG_CURRENT_DESKTOP - Indique l'environnement de bureau que vous utilisez

GDMSESSION - Indique l'option que vous avez sélectionnée dans le greeter de lightdm pour vous connecter.

Pour les utiliser, allez dans le terminal et tapez :

echo $XDG_CURRENT_DESKTOP

(Cela donnera par exemple 'unity' si vous utilisez Unity).

o

echo $GDMSESSION  

(Cela donnera par exemple 'ubuntu' si vous avez sélectionné ubuntu dans l'ouverture de session ou 'ubuntu-2d' si vous avez sélectionné celui-ci dans l'ouverture de session).

Vous en avez d'autres si vous regardez de plus près la sortie de env comme SESSION DE BUREAU y COMPIZ_CONFIG_PROFILE

Puisque ce que vous cherchez est le nom du gestionnaire de fenêtres utilisé, la seule façon de l'obtenir est de regarder dans la liste des processus. Pour ce faire, il existe une commande appelée pgrep ( Wikipedia ). J'ai fait ce qui suit pour obtenir le nom puisque le paramètre -l ajoute l'ID du processus :

pgrep -l compiz |cut -d " " -f2 puisque le processus est exécuté par le même utilisateur, il n'est pas nécessaire de préfixer la partie sudo. Vous pouvez ensuite utiliser ceci pour créer un script qui effectue une action basée sur le gestionnaire de fenêtres.

Pour rechercher d'autres types, il suffit de modifier le mot compiz à un autre comme mutter , kwin etc.

28voto

Sridhar Sarnobat Points 1384

J'ai trouvé pstree pour être d'une grande aide.

Installation

sudo apt-get install pstree

sortie

C'est ce que j'ai obtenu.

 lightdmXorg2*[{Xorg}]
          lightdmgnome-sessionbluetooth-apple2*[{bluetooth-apple}]
                                  compizshgtk-window-deco2*[{gtk-window-deco}]
                                          5*[{compiz}]
                                  deja-dup-monito2*[{deja-dup-monito}]
                                  gnome-fallback-2*[{gnome-fallback-}]
                                  gnome-screensav2*[{gnome-screensav}]
                                  gnome-settings-2*[{gnome-settings-}]
                                  nautilus2*[{nautilus}]
                                  nm-applet2*[{nm-applet}]
                                  polkit-gnome-au2*[{polkit-gnome-au}]
                                  ssh-agent
                                  telepathy-indic2*[{telepathy-indic}]
                                  update-notifier2*[{update-notifier}]
                                  vino-server2*[{vino-server}]
                                  zeitgeist-datah{zeitgeist-datah}
                                  3*[{gnome-session}]
                   {lightdm}
          2*[{lightdm}]

16voto

jfroom Points 402
xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X