it-swarm.dev

Jak zjistit, který správce oken běží

Existuje nějaký způsob (například příkaz nebo proměnná prostředí) k určení, co správce oken je ten, který je aktivně spuštěn v aktuální relaci?

200
Anonymous

Pokud máte nainstalován wmctrl, první řádek výstupu z příkazu

    wmctrl -m

vám ukáže jméno správce oken. Pokud nemáte nainstalován wmctrl, nainstalujte jej pomocí následujícího příkazu:

    Sudo apt-get install wmctrl

Poznámka, man wmctrl (tj. stránka man pro wmctrl) říká částečně:

-m Zobrazit informace o správci oken ...

V mém systému Ubuntu 11.10/Linux 3.0.0-14-generic # 23-Ubuntu x86_64/metacity 2.34.1 je první řádek výstupu z wmctrl -m bylo: Name: Metacity
zatímco echo $DESKTOP_SESSION ukázal ubuntu-2d a echo $XDG_CURRENT_DESKTOP ukázal Unity.

Na nové instalaci Ubuntu 15.10 z Ubuntu desktop software na starém notebooku, první řádek výstupu z wmctrl -m bylo: Name: Compiz
zatímco DESKTOP_SESSION a XDG_CURRENT_DESKTOP hodnoty byly ubuntu a Unity

151

V systémech Linux jsem testoval proměnné prostředí XDG_CURRENT_DESKTOP a GDMSESSION a získali následující výsledky.

Tento řádek můžete použít k získání výstupu:

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 na Waylandu)

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

Ubuntu 16.04


Jednota (7)

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Ubuntu 14.04


Jednota běží s Mirem

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Poznámka: MIR_SERVER_NAME je také nastavena

  • MIR_SERVER_NAME=session-$NUMBER

Jednota běží bez Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

XFCE

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xfce

Ubuntu 12.04


KDE

  • XDG_CURRENT_DESKTOP=
  • GDMSESSION=kde-plasma

Jednota 3d

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Jednota 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 (bez efektů)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-fallback

Další distribuce založené na Ubuntu


Mincovna 13 (skořice)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=cinnamon

Mincovna 16 (vydání KDE)

  • XDG_CURRENT_DESKTOP=KDE
  • GDMSESSION=default

Mincovna 17 (skořice)

  • 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 pomocí Gnome plochy.

  • 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
108
Tom

V terminálu typu env zobrazíte všechny proměnné prostředí. Někteří z nich jsou:

XDG_CURRENT_DESKTOP - Říká vám, jaké desktopové prostředí používáte

[~ # ~] gdmsession [~ # ~] - Říká vám, jakou možnost jste vybrali od pozdravníka lightdm k přihlášení.

Chcete-li je použít, přejděte na terminál a zadejte:

echo $XDG_CURRENT_DESKTOP

(Pokud používáte Unity, vydá například „jednotu“)

nebo

echo $GDMSESSION  

(Vyplní například „ubuntu“, pokud jste v přihlášení vybrali ubuntu nebo „ubuntu-2d“, pokud jste v přihlášení vybrali to.)

Máte jiné, pokud se podíváte blíže na výstup env jako DESKTOP_SESSION a COMPIZ_CONFIG_PROFILE

Protože to, co hledáte, je název toho, co Správce oken používá, jediný způsob, jak toho dosáhnout, je podívat se na seznam procesů. K tomu je příkaz nazvaný pgrep ( Wikipedia ). Pro získání názvu jsem udělal následující, protože parametr -l přidá ID procesu:

pgrep -l compiz |cut -d " " -f2 protože proces je spuštěn stejným uživatelem, není nutné předponu Sudo předponovat. Potom můžete použít k vytvoření skriptu, který provede akci na základě Správce oken.

Chcete-li hledat jiné typy, stačí změnit slovo compiz na jiné jako mutter, kwin atd. ..

43
Luis Alvarado

Našel jsem pstree jako velkou pomoc.

Installation

Sudo apt-get install pstree

výstup

To je to, co jsem dostal.

 ├─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}]
25
Sridhar Sarnobat
xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t 
12
ruario

Testoval jsem také s KDE a můj závěr je:

a) Grafický způsob, s HardInfo: odpověď je obvykle v "operačním systému"> "Desktop Environment", ale pokud ne, můžete se podívat na "Proměnné prostředí". HardInfo je připraven se všemi testovanými distribucemi, s výjimkou KDE, ale lze jej snadno a rychle nainstalovat (pouze 2 balíčky v Linux Mint 13).

b) Příkazový řádek, s tímto příkazem: ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm". Odpovědí by měla být položka, která se objeví ve více řádcích (pokud existuje remíza, mělo by to být řešení s relací).

4
Msedfi
#! /bin/bash
#  (GPL3+) Alberto Salvia Novella (es20490446e.wordpress.com)


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

    echo "${attributes}" |
        grep "_NET_WM_NAME = " |
        cut --delimiter=' ' --fields=3 |
        cut --delimiter='"' --fields=2
}


windowManagerName

Nebo v jednom řádku:

id = $ (xprop -root -notype | awk '$ 1 == "_ NET_SUPPORTING_WM_CHECK:" {print $ 5}'); xprop -id "$ {id}" -notype -f _NET_WM_NAME 8t | grep "_NET_WM_NAME =" | cut --delimiter = '' --fields = 3 | cut --delimiter = '"' --fields = 2

Nic z výše uvedeného pro mě vlastně nefungovalo, jen jsem chtěl vědět, zda jsem nechal Gnome běžet jako můj aktuální desktopový desktop.

To fungovalo, otevřete terminál

lsb_release -a

(Chcete-li zjistit, jakou variantu nebo verzi jsem nainstaloval na svém počítači UBUNTU)

ls /usr/bin/*session

(spouští aktuálně používanou relaci desktop/desktop)

gnome-Shell --version 

(Chcete-li zjistit, která verze gnome je nainstalována)

2
NanuBuria

To je možné se službou dbus a službou Účty (ve výchozím nastavení v Ubuntu).

$ qdbus --system org.freedesktop.Accounts \                                                                
> /org/freedesktop/Accounts/User1000 \                                                                                     
> org.freedesktop.Accounts.User.XSession                                                                                   
ubuntu

Stojí za povšimnutí, že jsem to testoval pomocí přihlášení pomocí lightdm (což je grafická přihlašovací obrazovka), zjistil klasickou plochu, jako je blackbox, a zjevně detekuje jednotu. Mám podezření, že se jedná o hodnotu toho, co uživatel vybere na přihlašovací obrazovce jako relaci, proto je o něco jednodušší použít tuto kontrolu procesů

0

Skript

Následující skript vyústil jako nejlepší odpověď na podobné otázka, kterou jsem zveřejnil na unix.se . Funguje také skvěle s Unity a 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"
0
Serge Stroobandt

Můžete použít nástroj s názvem inxi. Lze jej získat z úložišť Ubuntu:

Sudo apt install inxi

nebo z github: https://github.com/smxi/inxi

Stačí spustit příkaz takto:

inxi -Sx
System:    Host: blackhole Kernel: 5.1.15-050115-lowlatency x86_64 bits: 64 compiler: gcc v: 8.3.0
           Desktop: i3 4.16.1-178-g31c0f1b8 Distro: Ubuntu 19.04 (Disco Dingo)

Všimněte si části Desktop: i3. V mém případě je správce oken, který používám, i3.

Možnost -S Zobrazí systémové informace a x přidá informace o správci oken.

0