Gibt es eine Möglichkeit (z. B. einen Befehl oder eine Umgebungsvariable) zu bestimmen, welcher Fenstermanager in der aktuellen Sitzung aktiv ist?
quelle
Gibt es eine Möglichkeit (z. B. einen Befehl oder eine Umgebungsvariable) zu bestimmen, welcher Fenstermanager in der aktuellen Sitzung aktiv ist?
Wenn Sie wmctrl
installiert haben, wird die erste Zeile des Befehls ausgegeben
wmctrl -m
zeigt Ihnen den Namen des Fenstermanagers. Wenn Sie es nicht wmctrl
installiert haben, verwenden Sie den folgenden Befehl, um es zu installieren:
sudo apt-get install wmctrl
Beachten Sie, man wmctrl
(das heißt, die man
Seite für wmctrl
) sagt teilweise:
-m Informationen zum Fenstermanager anzeigen ...
Auf meinem Ubuntu 11.10 / Linux 3.0.0-14-generic # 23-Ubuntu x86_64 / metacity 2.34.1 System, die erste Zeile der Ausgabe von wmctrl -m
war: Name: Metacity
während echo $DESKTOP_SESSION
zeigte ubuntu-2d
und echo $XDG_CURRENT_DESKTOP
zeigte Unity
.
Auf einer neuen Ubuntu 15.10-Installation von Ubuntu desktop
Software auf einem alten Laptop wmctrl -m
lautete die erste Ausgabezeile von : Name: Compiz
while the DESKTOP_SESSION
and XDG_CURRENT_DESKTOP
values were ubuntu
andUnity
ssh -Y {host} 'wmctrl -m'
einige Werte zurück (z. B. "Name: Compiz" und mehrere N / A), aber es ist sinnvoll, dassssh
nur begrenzte Informationen über den Fenstermanager vorliegen.wmctrl -d
(Alle vom Fenstermanager verwalteten Desktops auflisten) oderwmctrl -l
(Die vom Fenstermanager verwalteten Fenster auflisten)?Auf Linux - Systemen getestet I Umgebungsvariablen
XDG_CURRENT_DESKTOP
undGDMSESSION
und bekam die folgenden Ergebnisse.Ubuntu 18.04 (Ubuntu)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu
Ubuntu 18.04 (Ubuntu auf Wayland)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu-wayland
Ubuntu 16.04
Einheit (7)
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Ubuntu 14.04
Einigkeit läuft mit Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Hinweis MIR_SERVER_NAME ist ebenfalls festgelegt
MIR_SERVER_NAME=session-$NUMBER
Einheit läuft ohne Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
XFCE
XDG_CURRENT_DESKTOP=XFCE
GDMSESSION=xfce
Ubuntu 12.04
KDE
XDG_CURRENT_DESKTOP=
GDMSESSION=kde-plasma
Einheit 3d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Einheit 2d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu-2d
Gnom
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-shell
Gnome Classic
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-classic
Gnome Classic (keine Effekte)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-fallback
Andere Ubuntu-basierte Distributionen
Minze 13 (Zimt)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=cinnamon
Postfrisch 16 (KDE-Ausgabe)
XDG_CURRENT_DESKTOP=KDE
GDMSESSION=default
Minze 17 (Zimt)
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 mit Gnome Desktop.
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
quelle
Im Terminaltyp werden
env
alle Umgebungsvariablen angezeigt. Einige von ihnen sind:XDG_CURRENT_DESKTOP - Gibt an , welche Desktopumgebung Sie verwenden
GDMSESSION - Zeigt an , welche Option Sie im lightdm-Begrüßer zum Anmelden ausgewählt haben.
Um sie zu benutzen, gehe zum Terminal und tippe:
(Gibt zum Beispiel 'unity' aus, wenn Sie Unity verwenden.)
oder
(Gibt beispielsweise "ubuntu" aus, wenn Sie "ubuntu" im Login ausgewählt haben, oder "ubuntu-2d", wenn Sie "ubuntu-2d" im Login ausgewählt haben.)
Sie haben andere , wenn Sie den Ausgang näher betrachten
env
wie DESKTOP_SESSION und COMPIZ_CONFIG_PROFILEDa Sie nach dem Namen des verwendeten Fenstermanagers suchen, sehe ich dies nur in der Prozessliste. Dazu gibt es einen Befehl namens
pgrep
( Wikipedia ). Ich habe Folgendes getan, um den Namen zu ermitteln, da der Parameter -l die Prozess-ID hinzufügt:pgrep -l compiz |cut -d " " -f2
Da der Prozess von demselben Benutzer ausgeführt wird, muss dem sudo-Teil kein Präfix vorangestellt werden. Damit können Sie dann ein Skript erstellen, das eine auf dem Window Manager basierende Aktion ausführt.Zur Suche nach anderen Arten, nur das Wort ändern ,
compiz
um ein anderen wiemutter
,kwin
, etc ..quelle
$XDG_CURRENT_DESKTOP
ist die aktuelle Desktop-Umgebung, NICHT der Fenstermanager.Ich fand
pstree
es eine große Hilfe.Installation
Ausgabe
Das habe ich bekommen.
quelle
quelle
)
am Ende einen vermissen .xprop -root -notype
alle Eigenschaften des Root-Fensters an (und lässt die Typen für eine einfachere Analyse aus). Die Ausgabe wirdawk
per Pipe an gesendet. 2. Dieawk
Anweisung$1=="_NET[blah]CK:"{print $5}'
vergleicht die erste Spalte jeder Zeile der Eingabe, die sie über die Pipe erhalten hat, mit einer bestimmten Zeichenfolge. Wenn sie die Übereinstimmung findet, führt sie den Code in Klammern aus, der die fünfte Spalte dieser Zeile ausgibt. Ich wette) um die ID des Atoms "_NET_SUPPORTING_WM_CHECK" zu sein; 3. Diese ID wird dann wieder verwendet , um mit den Eigenschaften des Windows Manager zu bekommenxprop -id
Ich habe auch mit KDE getestet und mein Fazit ist:
a) Grafische Darstellung mit HardInfo: Die Antwort lautet normalerweise "Betriebssystem"> "Desktop-Umgebung", andernfalls können Sie nach "Umgebungsvariablen" suchen. HardInfo ist mit allen getesteten Distributionen fertig, mit Ausnahme der mit KDE. Es kann jedoch einfach und schnell installiert werden (nur 2 Pakete in Linux Mint 13).
b) Befehlszeile, die mit diesem Befehl:
ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"
. Der Gegenstand, der in mehr Zeilen erscheint, sollte die Antwort sein (wenn es ein Unentschieden gibt, sollte der Gegenstand mit "Sitzung" die Lösung sein).quelle
gnome-...
Prozesse (und ein KDE-Hit mitkdevtmpfs
)Keines der oben genannten Probleme funktionierte tatsächlich für mich. Ich wollte nur wissen, ob Gnome als meine aktuelle Desktopsitzung ausgeführt wird.
Das hat funktioniert, öffnen Sie ein Terminal
(um zu überprüfen, welche Variante oder Version ich auf meinem UBUNTU-Rechner installiert habe)
(Startet die aktuell verwendete Desktop-Sitzung / Desktop-Umgebung.)
(um herauszufinden, welche Version von Gnome installiert ist)
quelle
Oder in einer Zeile:
quelle
Dies ist mit dbus und dem Accounts Service möglich (beide standardmäßig in Ubuntu).
Erwähnenswert ist, dass ich dies mit der Anmeldung über lightdm (das ist der grafische Anmeldebildschirm) getestet habe. Dabei wurde ein klassischer Desktop wie Blackbox und offensichtlich Unity erkannt. Ich vermute, dies ist ein Wert dessen, was der Benutzer auf dem Anmeldebildschirm als Sitzung auswählt. Deshalb ist es ein bisschen einfacher, diese Überprüfung auf Prozesse zu verwenden
quelle
Skript
Das folgende Skript ergab die beste Antwort auf eine ähnliche Frage, die ich auf unix.se gestellt habe . Es funktioniert auch hervorragend mit Unity und LXDE.
quelle
Sie können das aufgerufene Werkzeug verwenden
inxi
. Es kann von Ubuntu Repositories bezogen werden:sudo apt install inxi
oder von github: https://github.com/smxi/inxi
Führen Sie den Befehl einfach wie folgt aus:
Beachten Sie das
Desktop: i3
Teil. In meinem Fall ist der von mir verwendete Fenstermanageri3
.Option
-S
zeigt Systeminformationen an undx
fügt Informationen zum Fenstermanager hinzu.quelle
Ich kann nur daran denken, in den laufenden Prozessen nach bekannten Fenstermanagern zu suchen. Früher gab es in gconf einen Schlüssel, der auf den bevorzugten Fenstermanager eingestellt war, aber seit Gnome 2.12 veraltet ist.
Wenn dies zu Programmierzwecken ist, empfehle ich Ihnen, nach allen Linux-Fenstermanagern zu suchen. Einige beliebte sind:
Sie müssten für jeden Befehl eine Prüfung durchführen.
pgrep -l $WINDOW_MANAGER
Dabei$WINDOW_MANAGER
handelt es sich um den Namen des Fenstermanagers, nach dem Sie suchen möchten. Derpgrep
Befehl prüft, ob Prozesse ausgeführt werden.Ich bin nicht zu 100% sicher, ob Gnome Shell als Fenstermanager angesehen wird. Den Rest der Fenstermanager habe ich aus einer Liste im
/usr/bin/gnome-wm
Skript bekommen. Dieses Skript sollte tatsächlich verwendbar sein (da es bei einer Neuinstallation vorhanden ist), aber in meinem Fall versucht es auszuführen,compiz
was nicht mein Standard-Fenstermanager ist (nicht in meiner Gnome-Sitzung).BEARBEITEN:
Nun, @Anarcis Kommentar scheint genauer zu sein. In meinem Fall hat es gezeigt
gnome-shell
.quelle
pgrep -l "compiz|metacity|mutter|kwin|sawfish|fluxbox|openbox|xmonad"
$DISPLAY
Umgebung untersuchen).