Apakah ada perintah linux sederhana yang akan memberi tahu saya apa itu manajer tampilan saya?
Saya menggunakan Xfce. Apakah lingkungan desktop yang berbeda biasanya berafiliasi dengan manajer tampilan yang berbeda?
Apakah ada perintah linux sederhana yang akan memberi tahu saya apa itu manajer tampilan saya?
Saya menggunakan Xfce. Apakah lingkungan desktop yang berbeda biasanya berafiliasi dengan manajer tampilan yang berbeda?
Jawaban:
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
cat
.
/usr/bin/xdm
- apakah itu berarti xdm adalah pengelola tampilan saya?
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
. -F
Opsi ini berarti format keluaran yang dapat diuraikan mesin, dan ''
artinya hanya mencetak PID, dengan huruf di p
depannya. x=${x#p}
Menghapus huruf awal p
. Baris terakhir mendapatkan PID induk dari server X ( ps -o ppid -p $x
), dan panggilan ps
untuk 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}'
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.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (Dan, sebenarnya, karena /usr/bin
tidak mengandung karakter apa pun yang khusus untuk shell, Anda tidak perlu mengutipnya - tetapi tidak ada salahnya.)
cat <file> | grep <searchterm>
daripada yang kedua grep <searchterm> <file>
saat grepping.
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.
$DESKTOP_SESSION
adalah unknown
.
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$"
lightdm
. Solusi RedHat / Fedora dari jawaban atas tidak berfungsi, konfigurasi tampaknya telah pindah.
Dalam beberapa kasus, wmctrl dapat membantu. Utilitas ini kompatibel dengan banyak manajer windows.
wmcrt -m
harus menampilkan nama window manager yang saat ini digunakan.
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 :)
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
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).
_NET_SUPPORTING_WM_CHECK
memberikan 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.