Apakah ada perintah linux sederhana yang akan memberi tahu saya apa itu manajer tampilan saya?

Jawaban:

46

Sayangnya konfigurasi berbeda untuk setiap distribusi:

Debian / Ubuntu

/etc/X11/default-display-manager

RedHat (seharusnya juga berlaku untuk Fedora)

/etc/sysconfig/desktop

OpenSuSe

/etc/sysconfig/displaymanager
Biarkan aku menjadi
sumber
1
Huh, mengapa Anda memberi tahu saya tentang konfigurasi ...?
ptrcao
2
@ ptrcao Karena itu menentukan manajer tampilan apa yang Anda gunakan.
Let_Me_Be
1
Misalkan saya tidak tahu apa itu manajer display saya dan saya ingin mencari tahu dengan menggunakan terminal. Bagaimana saya melakukannya?
ptrcao
3
@ ptrcao Anda akan melihat file-file itu. Baik membukanya di editor favorit Anda, atau hanya melakukan cat.
Let_Me_Be
1
Hanya ada satu baris di dalamnya: /usr/bin/xdm- apakah itu berarti xdm adalah pengelola tampilan saya?
ptrcao
23

Tidak ada. Manajer tampilan tidak harus terkait dengan hal lain yang berjalan di server X yang sama. Manajer tampilan berjalan sebelum Anda masuk; itu dipilih oleh administrator sistem. Segala sesuatu yang lain (manajer jendela, pengelola sesi, lingkungan desktop, ...) dipilih oleh pengguna. Bahkan tidak perlu menjadi manajer tampilan: jika Anda masuk dalam mode teks dan memulai GUI dengan startx, tidak ada manajer tampilan yang terlibat.

Anda dapat memeriksa manajer tampilan mana yang merupakan default di sistem Anda . Ini hanya akan memberikan jawaban yang benar berdasarkan beberapa asumsi umum tetapi tidak universal. Jika Anda menjalankan manajer yang berbeda secara manual untuk alasan apa pun, metode ini tidak akan memberi tahu Anda.

Taruhan yang bagus adalah untuk mengetahui ID proses dari X server: proses induknya mungkin adalah manajer tampilan, jika ada. Ini mengharuskan klien Anda berjalan pada mesin yang sama dengan server X. lsof /tmp/.X11-unix/X${DISPLAY#:}akan menampilkan proses X server (dengan asumsi X sockets tinggal /tmp/.X11-unix).

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

(Penjelasan: lsof -F ''mencetak keluaran seperti p1234. -FOpsi ini berarti format keluaran yang dapat diuraikan mesin, dan ''artinya hanya mencetak PID, dengan huruf di pdepannya. x=${x#p}Menghapus huruf awal p. Baris terakhir mendapatkan PID induk dari server X ( ps -o ppid -p $x), dan panggilan psuntuk menampilkan informasi tentang proses induk itu.)

Beberapa distribusi memungkinkan memasang beberapa manajer tampilan. Hanya akan ada satu yang berjalan kecuali Anda memiliki sistem multiseat. Untuk mencantumkan semua paket manajer tampilan yang diinstal di bawah Debian dan turunannya:

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

atau

</var/lib/dpkg/status awk '
    /^Package: / {package = $2}
    /^Provides: .*x-display-manager/ {print package}'
Gilles 'SANGAT berhenti menjadi jahat'
sumber
18

Jika Anda menggunakan distribusi berbasis systemd . Perintah ini akan memberikan nama palung tampilan yang saat ini dikonfigurasikan karena Anda mungkin memiliki lebih dari satu manajer tampilan yang terpasang.

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

OUTPUT akan menjadi sesuatu seperti

ExecStart=/usr/bin/mdm

Sepertinya saya menggunakan manajer tampilan mint.

sekutu
sumber
3
Anda telah menyajikan contoh klasik penggunaan kucing yang Tidak Berguna - ini bisa diterima, dan bahkan lebih disukai, untuk dikatakan grep '/usr/bin' /etc/systemd/system/display-manager.service. (Dan, sebenarnya, karena /usr/bintidak mengandung karakter apa pun yang khusus untuk shell, Anda tidak perlu mengutipnya - tetapi tidak ada salahnya.)
G-Man Mengatakan 'Reinstate Monica'
6
'penggunaan kucing yang tidak berguna' selalu agak relatif. Saya lebih suka mengedit string terakhir cat <file> | grep <searchterm>daripada yang kedua grep <searchterm> <file>saat grepping.
sjas
1
Jawaban ini harus menjadi yang pertama kali Anda lihat, karena sebagian besar pengguna yang memiliki jenis pertanyaan saat ini menjalankan distro berbasis systemd. Terima kasih. Itu membantu saya.
Adergaard
3
@allsyed file saya tidak memiliki / usr / bin yang memiliki / usr / sbin. Linux-Mint 18
Prvt_Yadav
2
Dalam kasus saya (Centos 7) Saya harus menulis | grep '/ usr / sbin'
Davide
16

Jika Anda menggunakan systemd, maka

systemctl status display-manager

Akan menampilkan nama dan status layanan manajer tampilan aktif di mesin Anda.

Mioriin
sumber
Dengan Debian 9, ini adalah satu-satunya yang bekerja untuk saya. Metode systemd lainnya tidak menghasilkan apa-apa.
mickeyf
10

Nama pengelola tampilan harus dalam DESKTOP_SESSION

echo $DESKTOP_SESSION

mengembalikan "gnome" untuk saya.

EDIT
Kamu benar. Mereka bolak-balik tentang hal itu pada bugzilla XFCE sehingga mungkin tidak terlalu dapat diandalkan.

jembatan Charles
sumber
@frabjous: Bagaimana dengan gdm dan kdm? Apakah mereka menampilkan manajer juga atau hanya manajer login?
ptrcao
Saya pasti tidak sengaja menghapus komentar frabjous di atas karena saya ingat dia mengatakan bahwa Gnome adalah lingkungan desktop, bukan manajer tampilan. Utas ini penuh dengan kebingungan ...
ptrcao
Ini memberikan informasi tentang ... sesi desktop, yang cenderung sama dengan lingkungan desktop Anda, tetapi mungkin merupakan sesuatu yang sama sekali berbeda jika Anda tidak menggunakan lingkungan desktop atau Anda memiliki konfigurasi yang aneh. Di mesin tempat saya menulis ini, $DESKTOP_SESSIONadalah unknown.
Gilles 'SO- stop being evil'
+1, echo $ DESKTOP_SESSION juga mengembalikan gnome kepada saya ... tapi mungkin ini hanya berfungsi untuk gnome?
Trevor Boyd Smith
Jika itu hanya berfungsi untuk gnome, perintah ini hanya akan membantu Anda menyimpulkan "ya Anda punya Gnome atau tidak, Anda tidak punya gnome". Ketika pertanyaannya ingin mencari tahu lebih dari itu.
Trevor Boyd Smith
2

Seperti yang dikatakan @Gilles, manajer tampilan akan memulai lingkungan desktop Anda.

Menurut Wiki Debian , sebagian besar diakhiri dengan dm, hanya pengecualian slim.

Jadi ini sudah cukup untuk sebagian besar kebutuhan orang:

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

Atau yang pasti, itu ada sebagai proses induk, dan tidak bercabang (kecuali dari sistem init):

ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$" 
sja
sumber
1
Ini adalah satu-satunya solusi di sini yang berhasil untuk saya. Mengetahui bahwa Fedora 23 saya minimal dengan LXDE add-on (bukan LXDE Spin) sedang berjalan lightdm. Solusi RedHat / Fedora dari jawaban atas tidak berfungsi, konfigurasi tampaknya telah pindah.
Daniel Saner
0

Dalam beberapa kasus, wmctrl dapat membantu. Utilitas ini kompatibel dengan banyak manajer windows.

wmcrt -m 

harus menampilkan nama window manager yang saat ini digunakan.

Francis Gernet
sumber
6
Sebuah window manager tidak hal yang sama sebagai display manager .
HalosGhost
0

Seperti yang telah disebutkan, ada banyak kebingungan di utas ini. Pertanyaan aslinya adalah manajer tampilan, bukan manajer desktop atau manajer jendela. Saya saat ini menjalankan Xfwm4 yang merupakan window manager Xfce, dan lxdm yang merupakan display manager X11 yang ringan (dari LXDE, bukan Xfce). Anda harus dapat melihat pengelola tampilan apa yang Anda gunakan via htop. Anda mungkin sudah lama menemukan jawaban selama 4 tahun terakhir :)

billV
sumber
Sebenarnya tidak pernah ... Bahkan menyerah di Linux sama sekali dan pergi ke sisi gelap: D
ptrcao
0

Anda dapat melakukan ini melalui skrip pihak ketiga yang disebut screenfetch

Screenfetch adalah skrip bash yang tersedia untuk Linux yang menampilkan informasi sistem bersama dengan versi ASCII dari distribusi Linux Logo sistem

Instal melalui manajer paket sudo apt-get install screenfetch(dengan asumsi Anda menggunakan varian Debian)

dan jalankan screenfetch Di terminal Anda

Tautan proyek https://github.com/KittyKatt/screenFetch

Obi Uchenna David
sumber
-1

X sangat modular sehingga jika Anda benar-benar menginginkannya, ya, Anda dapat menggabungkan lingkungan desktop dan manajer windows. Setelah semua manajer jendela hanyalah cara untuk melukis windows (itulah tampilan sederhana).

Jadi jika Anda menggunakan gnome, metacity digunakan untuk menjadi windows manager tetapi sekarang telah digantikan oleh Mutter.

Masalah dengan pencampuran adalah di lingkungan desktop modern, desktop dan window manager sangat terkait satu sama lain. Terlalu banyak pencampuran bisa berakhir dengan fungsionalitas yang lebih sedikit.

Seperti yang disebutkan $ DESKTOP_SESSION berfungsi tetapi jika Anda ingin meminta server X11 Anda, Anda bisa melakukan ini:

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

Yang terurai menjadi

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

Yang mendapat id dari jendela yang dibuat oleh manajer jendela. Spesifikasi mengatakan (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.

Dan kemudian Anda meminta properti WM_NAME dari jendela tersebut.

WM_NAME menjadi:

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
sumber
@frabjous: Xfwm4 adalah manajer jendela Xfce. Apakah itu sama dengan manajer tampilan?
ptrcao
@Mathieu Anda berbicara tentang manajer jendela, bukan manajer tampilan.
Let_Me_Be
@Let_Me_Be Benar tapi kemudian sebagian besar waktu, manajer jendela Anda terikat dengan manajer tampilan Anda ... Seberapa sering Anda menggunakan manajer jendela gnome dengan kde dan sebaliknya? Dan itu benar-benar berfungsi karena gdm / kdm / apa pun memungkinkan Anda untuk memilih manajer tampilan Anda, yang berarti membaca file konfigurasi seperti yang Anda sebutkan tidak berfungsi jika Anda tidak menggunakan default yang disediakan ...
Mathieu
_NET_SUPPORTING_WM_CHECKmemberikan informasi tentang manajer jendela, bukan tentang manajer tampilan. Bahkan tidak selalu berhasil; pada sistem saya, properti itu diatur ke ID jendela tetapi jendela yang dimaksud tidak memiliki nama.
Gilles 'SO- stop being evil'
@Mathieu Itu tergantung distribusi. Biasanya ketika Anda menginstal distro versi KDE, Anda mendapatkan KDM dan ketika versi gnome, Anda mendapatkan GDM. Tetapi hal-hal yang akan Anda lihat lebih banyak dan lebih banyak adalah dukungan resmi untuk hanya satu pengelola tampilan (biasanya varian yang lebih ringan daripada GDM / KDM).
Let_Me_Be
-2
lshw -c video | grep 'configuration'
tidur
sumber
3
Sedikit penjelasan akan menyenangkan.
phk