Existe-t-il un moyen (tel qu'une commande ou une variable d'environnement) de déterminer quel gestionnaire de fenêtres est celui qui est en cours d'exécution dans la session en cours?
la source
Existe-t-il un moyen (tel qu'une commande ou une variable d'environnement) de déterminer quel gestionnaire de fenêtres est celui qui est en cours d'exécution dans la session en cours?
Si vous avez wmctrl
installé, la première ligne de sortie de la commande
wmctrl -m
vous montrera le nom du gestionnaire de fenêtres. Si vous ne l'avez pas wmctrl
installé, utilisez la commande suivante pour l'installer:
sudo apt-get install wmctrl
Remarque, man wmctrl
(c'est-à-dire la 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 sortie de wmctrl -m
était: Name: Metacity
tandis que echo $DESKTOP_SESSION
montré ubuntu-2d
et echo $XDG_CURRENT_DESKTOP
montré Unity
.
Sur une nouvelle Ubuntu 15.10 installer de Ubuntu desktop
logiciel sur un vieux portable, la première ligne de sortie wmctrl -m
était: Name: Compiz
alors que les DESKTOP_SESSION
et les XDG_CURRENT_DESKTOP
valeurs ont été ubuntu
etUnity
ssh -Y {host} 'wmctrl -m'
renvoie des valeurs (par exemple, "Nom: Compiz" et plusieurs N / A), mais il est logique que lesssh
informations relatives au gestionnaire de fenêtres soient limitées.wmctrl -d
(liste tous les bureaux gérés par le gestionnaire de fenêtres) ouwmctrl -l
(liste les fenêtres gérées par le gestionnaire de fenêtres) fonctionne correctement sous Xubuntu Wily avec Window Maker?Sur les systèmes Linux J'ai testé des variables d' environnement
XDG_CURRENT_DESKTOP
etGDMSESSION
et a obtenu les résultats suivants.Ubuntu 18.04 (Ubuntu)
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
Unité en marche avec Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Remarque MIR_SERVER_NAME est également défini.
MIR_SERVER_NAME=session-$NUMBER
Unité en marche 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
Unité 3d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Unité 2d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu-2d
Gnome
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-shell
Gnome classique
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-classic
Gnome Classic (aucun effet)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-fallback
Autres distributions basées sur Ubuntu
Menthe 13 (cannelle)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=cinnamon
Mint 16 (édition KDE)
XDG_CURRENT_DESKTOP=KDE
GDMSESSION=default
Menthe 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 en 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
la source
Dans le type de terminal
env
pour voir toutes les variables d'environnement. Certains d'entre eux sont:XDG_CURRENT_DESKTOP - Vous dit quel environnement de bureau vous utilisez
GDMSESSION - Vous indique quelle option vous avez choisie dans l’écran lightdm pour vous connecter.
Pour les utiliser, allez au terminal et tapez:
(Affichera par exemple 'unit' si vous utilisez Unity)
ou
(Sera par exemple 'ubuntu' si vous avez sélectionné ubuntu dans le login ou 'ubuntu-2d' si vous avez sélectionné celui-ci dans le login.)
Vous avez d' autres si vous regardez de plus près à la sortie
env
comme DESKTOP_SESSION et COMPIZ_CONFIG_PROFILEPuisque vous recherchez le nom du gestionnaire de fenêtres utilisé, le seul moyen de voir comment l'obtenir consiste à consulter 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 car le paramètre -l ajoute l'ID de processus:pgrep -l compiz |cut -d " " -f2
étant donné que 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 l'utiliser 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 changer le mot
compiz
à l' autre commemutter
,kwin
, etc ..la source
$XDG_CURRENT_DESKTOP
est l'environnement de bureau actuel, PAS le gestionnaire de fenêtres.J'ai trouvé
pstree
être d'une grande aide.Installation
sortie
C'est ce que j'ai eu.
la source
la source
)
à la fin.xprop -root -notype
affiche toutes les propriétés de la fenêtre racine (et omet les types pour faciliter l'analyse), la sortie est envoyée àawk
via un tuyau; 2. L'awk
instruction$1=="_NET[blah]CK:"{print $5}'
compare la première colonne de chaque ligne de l'entrée obtenue par le canal avec une chaîne donnée et, si elle trouve la correspondance, exécute le code entre parenthèses qui imprime la cinquième colonne de cette ligne. Je parie) être l'ID de l'atome "_NET_SUPPORTING_WM_CHECK"; 3. Cet ID est ensuite à nouveau utilisé pour obtenir les propriétés du gestionnaire Windows avecxprop -id
J'ai également testé avec KDE et ma conclusion est la suivante:
a) Manière graphique, avec HardInfo: la réponse est normalement dans "Système d'exploitation"> "Environnement de bureau", mais sinon, vous pouvez regarder dans "Variables d'environnement". HardInfo est prêt avec toutes les distributions testées, à l'exception de celle avec KDE, mais il peut être facilement et rapidement installé (seulement 2 paquets dans Linux Mint 13).
b) la ligne de commande, avec cette commande:
ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"
. L'élément qui apparaît dans plus de lignes devrait être la réponse (s'il y a un tirage au sort, l'élément avec "session" devrait être la solution).la source
gnome-...
processus (et un succès de kde aveckdevtmpfs
)Aucune de ces solutions ne fonctionnait réellement pour moi. Je voulais simplement savoir si Gnome était ma session de bureau actuelle.
C'est ce qui a fonctionné, ouvrez un terminal
(pour vérifier la version ou la version installée sur ma machine UBUNTU)
(lance quel session / environnement de bureau actuellement utilisé)
(pour savoir quelle version de gnome est installée)
la source
Ou en une ligne:
la source
C'est un peu possible avec dbus et le service de comptes (tous deux par défaut dans Ubuntu).
Il est à noter que j'ai testé cela en me connectant via lightdm (c'est-à-dire l'écran de connexion graphique), il a détecté un bureau classique comme blackbox, et détecte évidemment l'unité. Je soupçonne que ceci est une valeur de ce que l'utilisateur sélectionne sur l'écran de connexion en tant que session, c'est pourquoi il est un peu plus facile d'utiliser cette vérification des processus
la source
Scénario
Le script suivant a donné lieu comme la meilleure réponse à une même question que je Accrochés à unix.se . Cela fonctionne aussi très bien avec Unity et LXDE.
la source
Vous pouvez utiliser l'outil appelé
inxi
. Il peut être obtenu à partir des dépôts Ubuntu par:sudo apt install inxi
ou de github: https://github.com/smxi/inxi
Il suffit de lancer la commande comme suit:
Notez la
Desktop: i3
partie. Dans mon cas, le gestionnaire de fenêtres que j'utilise esti3
.Option
-S
affiche les informations système etx
ajoute des informations sur le gestionnaire de fenêtres.la source
Je ne peux que penser à rechercher des gestionnaires de fenêtres connus dans les processus en cours. Auparavant, une clé de gconf était définie sur le gestionnaire de fenêtres préféré, mais elle est déconseillée depuis Gnome 2.12.
Donc, si c'est pour un but de programmation, je vous suggère de rechercher tous les gestionnaires de fenêtres Linux; les plus populaires sont:
Vous devez exécuter une vérification pour chacun avec la commande
pgrep -l $WINDOW_MANAGER
, où$WINDOW_MANAGER
est le nom du gestionnaire de fenêtres que vous souhaitez vérifier. Lapgrep
commande vérifie les processus en cours.Je ne suis pas sûr à 100% si Gnome Shell est considéré comme un gestionnaire de fenêtres. le reste des gestionnaires de fenêtres que j'ai obtenus à partir d'une liste dans le
/usr/bin/gnome-wm
script. Ce script devrait en fait être utilisable (puisqu'il est présent sur une nouvelle installation), mais dans mon cas, il essaie de s'exécuter,compiz
ce qui n'est pas mon gestionnaire de fenêtres par défaut (pas dans ma session Gnome).MODIFIER:
Eh bien, le commentaire de @Anarci semble être plus précis. Dans mon cas, cela s'est avéré
gnome-shell
.la source
pgrep -l "compiz|metacity|mutter|kwin|sawfish|fluxbox|openbox|xmonad"
$DISPLAY
son environnement).