Czy istnieje proste polecenie linux, które powie mi, jaki jest mój menedżer wyświetlania?

Odpowiedzi:

46

Niestety konfiguracja różni się dla każdej dystrybucji:

Debian / Ubuntu

/etc/X11/default-display-manager

RedHat (powinien również dotyczyć Fedory)

/etc/sysconfig/desktop

OpenSuSe

/etc/sysconfig/displaymanager
Zostaw mnie w spokoju
źródło
1
Huh, dlaczego mówisz mi o konfiguracji ...?
ptrcao
2
@ptrcao Ponieważ określa, jakiego menedżera wyświetlania używasz.
Let_Me_Be
1
Załóżmy, że nie wiem, czym jest mój menedżer wyświetlania i chcę się dowiedzieć, używając terminala. Jak mam to zrobić?
ptrcao
3
@ptrcao Zajrzałbyś do tych plików. Otwórz je w swoim ulubionym edytorze lub po prostu rób cat.
Let_Me_Be
1
Zawiera tylko jedną linię: /usr/bin/xdm- Czy to znaczy, że xdm jest moim menedżerem wyświetlania?
ptrcao
23

Nie ma Menedżer wyświetlania niekoniecznie jest powiązany z niczym innym, co działa na tym samym serwerze X. Menedżer wyświetlania działa przed zalogowaniem; jest wybrany przez administratora systemu. Wszystko inne (menedżer okien, menedżer sesji, środowisko pulpitu, ...) jest wybierane przez użytkownika. Menedżer wyświetlania nie musi nawet istnieć: jeśli zalogujesz się w trybie tekstowym i uruchomisz interfejs GUI startx, nie jest zaangażowany żaden menedżer wyświetlania.

Możesz sprawdzić, który menedżer wyświetlania jest domyślny w twoim systemie . To da właściwą odpowiedź tylko przy pewnych wspólnych, ale nie uniwersalnych założeniach. Jeśli z jakiegokolwiek powodu ręcznie uruchomiłeś innego menedżera, ta metoda ci nie powie.

Dobrym rozwiązaniem jest znalezienie identyfikatora procesu serwera X: jego proces nadrzędny jest prawdopodobnie menedżerem wyświetlania, jeśli taki istnieje. Wymaga to, aby klienci działali na tym samym komputerze co serwer X. lsof /tmp/.X11-unix/X${DISPLAY#:}pokaże proces serwera X (zakładając, że gniazda X są włączone /tmp/.X11-unix).

x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)

(Objaśnienie: lsof -F ''wypisuje dane wyjściowe jak p1234. Ta -Fopcja oznacza format wyjściowy analizowany maszynowo i ''oznacza wydrukowanie tylko PID, z literą pprzed nim. x=${x#p}Usuwa początkową literę p. Ostatni wiersz otrzymuje PID rodzica serwera X ( ps -o ppid -p $x) i wezwania psdo wyświetlenia informacji o tym procesie nadrzędnym).

Niektóre dystrybucje umożliwiają instalację wielu menedżerów wyświetlania. Będzie działał tylko jeden, chyba że masz system wielostanowiskowy. Aby wyświetlić listę wszystkich zainstalowanych pakietów menedżera wyświetlania w obszarze Debian i pochodne:

aptitude -F %p search '~i ~P^x-display-manager$'

lub

</var/lib/dpkg/status awk '
    /^Package: / {package = $2}
    /^Provides: .*x-display-manager/ {print package}'
Gilles „SO- przestań być zły”
źródło
18

Jeśli używasz dystrybucji systemowej . To polecenie podaje nazwę aktualnie skonfigurowanego menedżera wyświetlania, ponieważ może być zainstalowany więcej niż jeden menedżer wyświetlania.

grep '/usr/s\?bin' /etc/systemd/system/display-manager.service

WYJŚCIE będzie coś podobnego

ExecStart=/usr/bin/mdm

Wygląda na to, że używam menadżera wyświetlania mennicy.

sprzymierzył się
źródło
3
Zaprezentowałeś klasyczny przykład bezużytecznego użycia kota - jest to całkowicie akceptowalne, a nawet preferowane, można powiedzieć grep '/usr/bin' /etc/systemd/system/display-manager.service. (Ściśle mówiąc, ponieważ /usr/binnie zawiera żadnych znaków specjalnych dla powłoki, nie trzeba jej cytować - ale to nie boli.)
G-Man
6
„bezużyteczne użycie kota” jest zawsze nieco względne. Raczej edytuję ostatni ciąg cat <file> | grep <searchterm>zamiast drugiego grep <searchterm> <file>podczas grepowania.
sjas,
1
Ta odpowiedź powinna być pierwszą, którą zobaczysz, ponieważ większość użytkowników, którzy mają dzisiaj tego typu pytania, uruchamiają dystrybucje systemowe. Dzięki. Pomogło mi to.
Adergaard
3
@allsyed mój plik nie ma / usr / bin ma / usr / sbin. Linux-Mint 18
Prvt_Yadav
2
W moim przypadku (Centos 7) muszę napisać | grep '/ usr / sbin'
Davide
16

Jeśli używasz systemd, to

systemctl status display-manager

Wyświetli nazwę i status aktywnej usługi menedżera wyświetlania na twoim komputerze.

Mioriin
źródło
W przypadku Debiana 9 był to jedyny, który dla mnie działał. Inne systemowe metody nic nie zwracały.
mickeyf
10

Nazwa menedżera wyświetlania powinna mieć wartość DESKTOP_SESSION

echo $DESKTOP_SESSION

zwraca dla mnie „gnome”.

EDYCJA
Masz rację. Oni tam iz powrotem na tym na XFCEs Bugzilla więc to chyba nie jest bardzo niezawodny.

charlesbridge
źródło
@frabjous: A co z gdm i kdm? Czy oni też wyświetlają menedżerów wyświetlania, czy tylko menedżerów logowania?
ptrcao,
Musiałem przypadkowo usunąć komentarz frabjousa tuż powyżej, ponieważ pamiętam, że zauważył, że Gnome to środowisko komputerowe, a nie menedżer wyświetlania. Wątek obfituje w zamieszanie ...
ptrcao,
Daje to informacje o… sesji pulpitu, która prawdopodobnie jest taka sama jak środowisko pulpitu, ale może być czymś zupełnie innym, jeśli nie używasz środowiska pulpitu lub masz osobną konfigurację. Na komputerze, na którym to piszę, $DESKTOP_SESSIONjest unknown.
Gilles „SO- przestań być zły”
+1, echo $ DESKTOP_SESSION zwraca mi również gnome ... ale może to działa tylko dla gnome?
Trevor Boyd Smith,
Jeśli to działa tylko w przypadku gnome, to polecenie pomoże ci wydedukować „tak, masz gnoma lub nie, nie masz gnoma”. Gdy pytanie chce się dowiedzieć więcej.
Trevor Boyd Smith,
2

Jak powiedział @Gilles, menedżer wyświetlania uruchomi środowisko pulpitu.

Według Debian Wiki , większość z nich kończy się dm, z wyjątkiem tylko jednego wyjątku slim.

To powinno wystarczyć do zaspokojenia większości potrzeb ludzi:

ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$

Lub, dla pewności, istnieje jako proces nadrzędny i nie jest rozwidlany (z wyjątkiem systemu init):

ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$" 
sjas
źródło
1
To jest jedyne rozwiązanie, które dla mnie zadziałało. Zrozumiałem, że moja Fedora 23 minimalna z dodatkiem LXDE (nie LXDE Spin) jest uruchomiona lightdm. Rozwiązanie RedHat / Fedora z pierwszej odpowiedzi nie działało, konfiguracja prawdopodobnie się zmieniła.
Daniel Saner,
0

W niektórych przypadkach wmctrl może pomóc. To narzędzie jest kompatybilne z wieloma menedżerami systemu Windows.

wmcrt -m 

powinien wyświetlać nazwę aktualnie używanego menedżera okien.

Francis Gernet
źródło
6
Menedżer okien nie jest to samo, jako menedżera okien .
HalosGhost,
0

Jak już wspomniano, w tym wątku jest wiele zamieszania. Pierwotne pytanie dotyczy tego, który menedżer wyświetlania, a nie menedżer pulpitu lub menedżer okien. Obecnie używam Xfwm4, który jest menedżerem okien Xfce, i lxdm, który jest lekkim menedżerem wyświetlania X11 (z LXDE, a nie Xfce). Powinieneś być w stanie zobaczyć, jakiego menedżera ekranu używasz przez htop. Prawdopodobnie już dawno odkryłeś odpowiedź w ciągu ostatnich 4 lat :)

rachunek
źródło
Właściwie nigdy się nie poddałem ... W rzeczywistości całkowicie zrezygnowałem z Linuksa i przeszedłem na ciemną stronę: D
ptrcao
0

Możesz to zrobić za pomocą skryptu innej firmy o nazwie screenfetch

Screenfetch to skrypt bash dostępny dla systemu Linux, który wyświetla informacje o systemie wraz z wersją ASCII dystrybucji systemu Linux Logo systemu

Zainstaluj za pomocą menedżera pakietów sudo apt-get install screenfetch(zakładając, że korzystasz z wariantów Debiana)

i po prostu uruchom w screenfetch swoim terminalu

Link do projektu https://github.com/KittyKatt/screenFetch

Obi Uchenna David
źródło
-1

X jest wysoce modułowy, więc jeśli naprawdę tego chcesz, możesz mieszać środowiska pulpitu i menedżerów systemu Windows. W końcu menedżer okien to tylko sposób na malowanie okien (taki jest prosty widok).

Więc jeśli weźmiesz gnome, metacity był kiedyś menedżerem Windows, ale teraz został zastąpiony przez Mutter.

Problem z miksowaniem występuje we współczesnych środowiskach komputerowych, pulpit i menedżer okien są ze sobą ściśle powiązane. Zbyt dużo miksowania może skończyć się mniejszą funkcjonalnością.

Jak wspomniano, $ DESKTOP_SESSION działa, ale jeśli chcesz zapytać serwer X11, możesz to zrobić:

xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME

Który rozkłada się na

xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"

Który pobiera identyfikator okna utworzonego przez menedżera okien. Specyfikacja mówi (http://standards.freedesktop.org/wm-spec/1.3/ar01s03.html):

_NET_SUPPORTING_WM_CHECK, WINDOW/32
The Window Manager MUST set this property on the root window to be the ID
of a child window created by himself, to indicate that a compliant window
manager is active.

A potem pytasz o właściwość WM_NAME wspomnianego okna.

WM_NAME jest:

The WM_NAME property is an uninterpreted string that the client wants the
window manager to display in association with the window (for example, in
a window headline bar). 
Mathieu
źródło
@frabjous: Xfwm4 to menedżer okien Xfce. Czy to to samo, co menedżer wyświetlania?
ptrcao,
@Mathieu Mówisz o menedżerach okien, a nie menedżerach wyświetlania.
Let_Me_Be
@Let_Me_Be To prawda, ale przez większość czasu menedżer okien jest powiązany z menedżerem wyświetlania ... Jak często korzystasz z menedżera okien gnome z KDE i odwrotnie? I tak naprawdę działa, ponieważ gdm / kdm / cokolwiek pozwala wybrać menedżera wyświetlania, co oznacza, że ​​czytanie pliku konfiguracyjnego, o którym wspomniałeś, nie działa, jeśli nie używasz dostarczonego domyślnego ...
Mathieu
_NET_SUPPORTING_WM_CHECKpodaje informacje o menedżerze okien, a nie o menedżerze wyświetlania. To nie zawsze działa; w moim systemie ta właściwość jest ustawiona na identyfikator okna, ale okno to nie ma nazwy.
Gilles „SO- przestań być zły”
@Mathieu To zależy od dystrybucji. Zwykle, gdy instalujesz wersję KDE dystrybucji, dostajesz KDM, a gdy wersja gnome, dostajesz GDM. Ale to, co zobaczysz coraz więcej, to oficjalne wsparcie tylko dla jednego menedżera wyświetlania (zwykle jest to bardziej lekki wariant niż GDM / KDM).
Let_Me_Be
-2
lshw -c video | grep 'configuration'
wyrko
źródło
3
Przyjemne byłoby trochę wyjaśnienia.
phk