Vraag Hoe te bepalen welke window manager wordt uitgevoerd


Is er een manier (zoals een commando of omgevingsvariabele) om te bepalen wat vensterbeheerder is diegene actief actief in de huidige sessie?


151
2017-10-26 20:39


oorsprong




antwoorden:


Als je hebt wmctrl geïnstalleerd, de eerste regel van de uitvoer van het commando

    wmctrl -m

zal je de naam van de windowmanager laten zien. Als je het niet hebt wmctrl geïnstalleerd, gebruikt u de volgende opdracht om het te installeren:

    sudo apt-get install wmctrl

Notitie, man wmctrl (dat is de man pagina voor wmctrl) zegt gedeeltelijk:

-m Informatie weergeven over de vensterbeheerder ...

Op mijn Ubuntu 11.10 / Linux 3.0.0-14-generieke # 23-Ubuntu x86_64 / metacity 2.34.1-systeem, de eerste regel van de uitvoer van wmctrl -m was: Name: Metacity
terwijl echo $DESKTOP_SESSION toonden ubuntu-2d en echo $XDG_CURRENT_DESKTOP toonden Unity.

Op een verse Ubuntu 15.10 installatie van Ubuntu desktop software op een oude laptop, de eerste regel van de output van wmctrl -m was: Name: Compiz
Terwijl de DESKTOP_SESSION en XDG_CURRENT_DESKTOP waarden waren ubuntu en Unity


126
2018-01-05 07:57



Helaas werkt dit niet via ssh, zelfs als X11 is ingeschakeld. - Sridhar-Sarnobat
@ Sridhar-Sarnobat op ubuntu 15.04, actief ssh -Y {host} 'wmctrl -m' retourneert sommige waarden (bijv. "Naam: Compiz" en verschillende N / A's), maar dat is logisch ssh zou beperkte informatie over de windowmanager hebben. - michael
op debian kaneel draaien, dit werkt niet. uitvoer van wmctrl -m is Name: Mutter (Muffin) while $ XDG_CURRENT_DESKTOP = X-Cinnamon - Floyd
Op Xubuntu Wily voert Window Maker 0.95.6 - wmctrl rapporten Nvt uit voor alle items. GDMSESSION is ingesteld op wmaker-common maar XDG_CURRENT_DESKTOP is helemaal niet ingesteld. - Mei
@Mei, heb je Window Maker op andere systemen die je kunt vergelijken? Doe ook een van beide wmctrl -d (Maak een lijst van alle bureaubladen beheerd door de windowmanager) of wmctrl -l (Noem de vensters die beheerd worden door de windowmanager) werkt ok op Xubuntu Wily met Window Maker? - James Waldby - jwpat7


Op Linux-systemen heb ik omgevingsvariabelen getest XDG_CURRENT_DESKTOP en GDMSESSION en kreeg de volgende resultaten.

U kunt deze regel gebruiken om de uitvoer te krijgen:

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

Ubuntu 18.04 (Ubuntu)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu

Ubuntu 18.04 (Ubuntu on Wayland)

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

Ubuntu 16.04


Eenheid (7)

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Ubuntu 14.04


Eenheid die met Mir loopt

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Opmerking MIR_SERVER_NAME is ook ingesteld

  • MIR_SERVER_NAME=session-$NUMBER

Eenheid die zonder Mir loopt

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

XFCE

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xfce

Ubuntu 12.04


KDE

  • XDG_CURRENT_DESKTOP=
  • GDMSESSION=kde-plasma

Eenheid 3d

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Eenheid 2d

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu-2d

kabouter

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-shell

Gnome Classic

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-classic

Gnome Classic (geen effecten)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-fallback

Andere op Ubuntu gebaseerde distributies


Mint 13 (Cinnamon)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=cinnamon

Mint 16 (KDE-editie)

  • XDG_CURRENT_DESKTOP=KDE
  • GDMSESSION=default

Mint 17 (Cinnamon)

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=default

Lubuntu 12.04

  • XDG_CURRENT_DESKTOP=LXDE 
  • GDMSESSION=Lubuntu

Wasta 14.04

  • XDG_CURRENT_DESKTOP=X-Cinnamon 
  • GDMSESSION=cinnamon

Wasta 14.04 met behulp van Gnome-bureaublad.

  • 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

84
2017-12-10 20:38



Mint 13 (Cinnamon): XDG_CURRENT_DESKTOP = GNOME, GDMSESSION = kaneel - rik-shaw
Lubuntu 12.04: XDG_CURRENT_DESKTOP = LXDE, GDMSESSION = Lubuntu - rik-shaw
Hoe zit het met $ DESKTOP_SESSION? Als een back-up oplossing :) - Savvas Radevic
Wat als ik GDM niet gebruik? - Robert Siemer
En verder antwoordt het niet wat vensterbeheerder Ik gebruik! - Robert Siemer


In het terminaltype env om alle omgevingsvariabelen te zien. Sommige ervan zijn:

XDG_CURRENT_DESKTOP - Vertelt u welke desktopomgeving u gebruikt

GDMSESSION - Laat je zien welke optie je hebt gekozen uit de lightdm greeter om in te loggen.

Om ze te gebruiken, ga je naar de terminal en typ je:

echo $XDG_CURRENT_DESKTOP

(Zal bijvoorbeeld 'eenheid' uitvoeren als u Unity gebruikt)

of

echo $GDMSESSION  

(Zal bijvoorbeeld 'ubuntu' uitvoeren als u ubuntu heeft geselecteerd in de login of 'ubuntu-2d' als u die hebt geselecteerd in de login.)

Je hebt anderen als je de uitvoer van nader bekijkt env graag willen DESKTOP_SESSION en COMPIZ_CONFIG_PROFILE

Aangezien wat u zoekt de naam is van wat Window Manager in gebruik is, is de enige manier om dit te verkrijgen, door in de proceslijst te zoeken. Om dit te doen is er een commando genaamd pgrep ( Wikipedia ). Ik deed het volgende om de naam te krijgen sinds de parameter -l de proces-ID toevoegt:

pgrep -l compiz |cut -d " " -f2 omdat het proces door dezelfde gebruiker wordt uitgevoerd, is het sudo-gedeelte niet nodig. U kunt dit vervolgens gebruiken om een ​​script te maken dat een actie uitvoert op basis van Window Manager.

Als u naar andere typen zoekt, hoeft u alleen maar het woord te wijzigen compiz naar een ander zoals mutter, kwin, enz..


39
2017-10-26 21:57



Die vertellen me alleen de naam van de sessie en de desktopomgeving. In het voorbeeld staat "GNOME", een bureaubladomgeving die gebruik kan maken van Metacity, Mutter, Compiz of andere vensterbeheerders. Er staat 'gnome-classic' op, wat een sessienaam is, er bestaat niet zo'n windowmanager met die naam. - Anonymous
Daar ga je. Een opdracht gevonden die kan helpen met de proceslijst. pgrep. Ga naar dat deel, in ieder geval toont het u de naam van de windowmanager indien gevonden. Ik probeer te controleren of ik ze allemaal daar kan toevoegen. Je vraag is erg goed, omdat Ubuntu 11.10 een beetje verwisselt door Compiz te gebruiken (of mompelen als bij Gnome 3.x) dus het zou leuk zijn om te wijzen op de eigenlijke Window Manager die in Unity wordt gebruikt. - Luis Alvarado♦
$XDG_CURRENT_DESKTOPis de huidige bureaubladomgeving, NIET de vensterbeheerder. - Ken Sharp


ik vond pstree om een ​​grote hulp te zijn.

Installatie

sudo apt-get install pstree

uitgang

Dit is wat ik heb.

 ├─lightdm─┬─Xorg───2*[{Xorg}]
 │         ├─lightdm─┬─gnome-session─┬─bluetooth-apple───2*[{bluetooth-apple}]
 │         │         │               ├─compiz─┬─sh───gtk-window-deco───2*[{gtk-window-deco}]
 │         │         │               │        └─5*[{compiz}]
 │         │         │               ├─deja-dup-monito───2*[{deja-dup-monito}]
 │         │         │               ├─gnome-fallback-───2*[{gnome-fallback-}]
 │         │         │               ├─gnome-screensav───2*[{gnome-screensav}]
 │         │         │               ├─gnome-settings-───2*[{gnome-settings-}]
 │         │         │               ├─nautilus───2*[{nautilus}]
 │         │         │               ├─nm-applet───2*[{nm-applet}]
 │         │         │               ├─polkit-gnome-au───2*[{polkit-gnome-au}]
 │         │         │               ├─ssh-agent
 │         │         │               ├─telepathy-indic───2*[{telepathy-indic}]
 │         │         │               ├─update-notifier───2*[{update-notifier}]
 │         │         │               ├─vino-server───2*[{vino-server}]
 │         │         │               ├─zeitgeist-datah───{zeitgeist-datah}
 │         │         │               └─3*[{gnome-session}]
 │         │         └─{lightdm}
 │         └─2*[{lightdm}]

20
2018-04-22 04:59





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

8
2018-05-15 06:19



Kun je uitleggen hoe dit werkt? Ik denk ook dat je een a mist ) aan het einde. - Louis Matthijssen
@LouisMatthijssen 1. xprop -root -notype toont alle eigenschappen van het hoofdvenster (en laat typen weg om gemakkelijker te parseren), waarnaar de uitvoer wordt verzonden awk via pijp; 2. awk instructie $1=="_NET[blah]CK:"{print $5}' vergelijkt de eerste kolom van elke rij van de invoer die hij via de pijp heeft gekregen met een gegeven reeks en als deze de overeenkomst vindt, wordt de code tussen haakjes weergegeven en wordt de vijfde kolom uit deze rij afgedrukt - dat gebeurt op dezelfde manier (geheel per ongeluk, wed ik) om de ID van het atoom "_NET_SUPPORTING_WM_CHECK" te zijn; 3. deze ID wordt dan opnieuw gebruikt om de eigenschappen van de Windows Manager te krijgen xprop -id - cprn


Ik heb ook met KDE getest en mijn conclusie is:

a) Grafische manier, met HardInfo: het antwoord staat normaal gesproken in "Besturingssysteem"> "Desktopomgeving", maar zo niet, kijk dan naar "Omgevingsvariabelen". HardInfo is klaar met alle geteste distributies, behalve die met KDE, maar het kan eenvoudig en snel worden geïnstalleerd (slechts 2 pakketten in Linux Mint 13).

b) Commandoregel, met dit commando: ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm". Het item dat in meer regels verschijnt, zou het antwoord moeten zijn (als er een gelijkspel is, zou het item met "sessie" de oplossing moeten zijn).


3
2018-04-15 22:51



XFCE heeft ook verschillende gnome-... processen (en een kde hit met kdevtmpfs) - Xen2050


Geen van de bovenstaande dingen werkte echt voor mij, ik wilde gewoon weten of ik Gnome had laten lopen als mijn huidige bureaubladsessie.

Dit is wat werkte, open een terminal

lsb_release -a

(om te controleren welke smaak of versie ik had geïnstalleerd op mijn UBUNTU-machine)

ls /usr/bin/*session

(lanceert welke bureaubladsessie / bureaubladomgeving momenteel in gebruik is)

gnome-shell --version 

(om erachter te komen welke versie van gnome is geïnstalleerd)


1
2017-07-07 16:26





Het volgende script resulteerde in het beste antwoord op een soortgelijke vraag die ik heb gepost op unix.se. Het werkt ook geweldig met Unity en LXDE.

if [ "$XDG_CURRENT_DESKTOP" = '' ]
then
  desktop=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*/\1/')
else
  desktop=$XDG_CURRENT_DESKTOP
fi

desktop=${desktop,,}  # convert to lower case
echo "$desktop"

-1
2018-02-24 17:42