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

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}'

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.


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.


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.


@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$" 

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

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 :)


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


-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). 

@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'

3
Przyjemne byłoby trochę wyjaśnienia.
phk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.