Apakah ada cara (seperti variabel perintah atau lingkungan) untuk menentukan window manager apa yang aktif berjalan di sesi saat ini?
sumber
Apakah ada cara (seperti variabel perintah atau lingkungan) untuk menentukan window manager apa yang aktif berjalan di sesi saat ini?
Jika Anda telah wmctrl
menginstal, baris pertama output dari perintah
wmctrl -m
akan menunjukkan kepada Anda nama manajer jendela. Jika Anda belum wmctrl
menginstal, gunakan perintah berikut untuk menginstalnya:
sudo apt-get install wmctrl
Catatan, man wmctrl
(yaitu, man
halaman untuk wmctrl
) mengatakan sebagian:
-m Menampilkan informasi tentang pengelola jendela ...
Pada sistem Ubuntu 11.10 / Linux 3.0.0-14-generik # 23-Ubuntu x86_64 / metacity 2.34.1 saya, baris pertama keluaran wmctrl -m
adalah: Name: Metacity
sambil echo $DESKTOP_SESSION
ditunjukkan ubuntu-2d
dan echo $XDG_CURRENT_DESKTOP
ditunjukkan Unity
.
Pada Ubuntu segar 15.10 menginstal Ubuntu desktop
perangkat lunak pada laptop tua, baris pertama dari keluaran dari wmctrl -m
itu: Name: Compiz
sementara DESKTOP_SESSION
dan XDG_CURRENT_DESKTOP
nilai-nilai yang ubuntu
danUnity
ssh -Y {host} 'wmctrl -m'
mengembalikan beberapa nilai (misalnya, "Nama: Compiz", dan beberapa N / A), tetapi masuk akal bahwassh
akan ada info terbatas tentang pengelola jendela.wmctrl -d
(Mendaftar semua desktop yang dikelola oleh manajer jendela) atauwmctrl -l
(Daftar jendela yang dikelola oleh manajer jendela) berfungsi dengan baik di Xubuntu Wily dengan Window Maker?Pada sistem Linux saya diuji variabel lingkungan
XDG_CURRENT_DESKTOP
danGDMSESSION
dan mendapat hasil sebagai berikut.Ubuntu 18.04 (Ubuntu)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu
Ubuntu 18.04 (Ubuntu di Wayland)
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu-wayland
Ubuntu 16.04
Unity (7)
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Ubuntu 14.04
Persatuan berjalan dengan Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Catatan MIR_SERVER_NAME juga disetel
MIR_SERVER_NAME=session-$NUMBER
Persatuan berjalan tanpa Mir
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
XFCE
XDG_CURRENT_DESKTOP=XFCE
GDMSESSION=xfce
Ubuntu 12.04
KDE
XDG_CURRENT_DESKTOP=
GDMSESSION=kde-plasma
Persatuan 3d
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Unity 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 (tidak ada efek)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-fallback
Distribusi berbasis Ubuntu lainnya
Mint 13 (Kayu Manis)
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=cinnamon
Mint 16 (edisi KDE)
XDG_CURRENT_DESKTOP=KDE
GDMSESSION=default
Mint 17 (Kayu Manis)
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 menggunakan desktop Gnome.
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
sumber
Dalam tipe terminal
env
untuk melihat semua variabel lingkungan. Beberapa dari mereka adalah:XDG_CURRENT_DESKTOP - Memberitahu Anda apa lingkungan desktop yang Anda gunakan
GDMSESSION - Memberitahu Anda opsi apa yang Anda pilih dari penyambut lightdm untuk login.
Untuk menggunakannya, buka terminal dan ketik:
(Akan menampilkan misalnya 'unity' jika Anda menggunakan Unity)
atau
(Akan menampilkan misalnya 'ubuntu' jika Anda memilih ubuntu di login atau 'ubuntu-2d' jika Anda memilih yang di login.)
Anda memiliki orang lain jika Anda melihat lebih dekat pada output
env
seperti DESKTOP_SESSION dan COMPIZ_CONFIG_PROFILEKarena apa yang Anda cari adalah nama Window Manager apa yang digunakan, satu-satunya cara saya melihat cara mendapatkannya adalah dengan melihat di daftar proses. Untuk melakukan ini ada perintah yang disebut
pgrep
( Wikipedia ). Saya melakukan yang berikut untuk mendapatkan nama karena parameter -l menambahkan ID proses:pgrep -l compiz |cut -d " " -f2
karena proses ini dijalankan oleh pengguna yang sama, tidak perlu awalan bagian sudo. Anda kemudian dapat menggunakan ini untuk membuat skrip yang melakukan tindakan berdasarkan Window Manager.Untuk mencari jenis lain, hanya mengubah kata
compiz
lain sepertimutter
,kwin
, dll ..sumber
$XDG_CURRENT_DESKTOP
adalah lingkungan desktop saat ini, BUKAN manajer jendela.Saya menemukan
pstree
bantuan besar.Instalasi
keluaran
Ini yang saya dapat.
sumber
sumber
)
di akhir.xprop -root -notype
menampilkan semua properti jendela root (dan menghilangkan tipe untuk penguraian yang lebih mudah), hasilnya dikirim keawk
melalui pipa; 2.awk
instruksi$1=="_NET[blah]CK:"{print $5}'
membandingkan kolom pertama dari setiap baris input yang didapat melalui pipa dengan string yang diberikan dan jika menemukan kecocokan, ia menjalankan kode dalam tanda kurung yang mencetak kolom kelima dari baris ini - kebetulan (seluruhnya karena kebetulan, Saya yakin) untuk menjadi ID dari atom "_NET_SUPPORTING_WM_CHECK"; 3. ID ini kemudian digunakan lagi untuk mendapatkan properti Windows Manager denganxprop -id
Saya telah menguji juga dengan KDE dan kesimpulan saya adalah:
a) Cara grafis, dengan HardInfo: jawabannya biasanya di "Sistem Operasi"> "Lingkungan Desktop", tetapi jika tidak, Anda dapat melihat ke "variabel Lingkungan". HardInfo siap dengan semua distro yang diuji, kecuali yang dengan KDE, tetapi dapat dengan mudah dan cepat diinstal (hanya 2 paket di Linux Mint 13).
b) Command line, dengan perintah ini:
ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"
. Item yang muncul di lebih banyak baris harus menjadi jawaban (jika ada gambar item dengan "sesi" harus menjadi solusinya).sumber
gnome-...
proses (dan hit dengan KDEkdevtmpfs
)Tidak satu pun di atas yang benar-benar bekerja untuk saya, saya hanya ingin tahu apakah saya menjalankan Gnome sebagai sesi desktop saya saat ini.
Inilah yang berhasil, buka terminal
(untuk memeriksa rasa atau versi yang telah saya instal di mesin UBUNTU saya)
(meluncurkan sesi desktop / lingkungan desktop mana yang sedang digunakan)
(untuk mengetahui versi gnome yang diinstal)
sumber
Atau dalam satu baris:
sumber
Ini mungkin dilakukan dengan dbus dan Layanan Akun (keduanya secara default di Ubuntu).
Perlu dicatat bahwa saya telah menguji ini dengan masuk melalui lightdm (yaitu layar login grafis), ia mendeteksi desktop klasik seperti blackbox, dan jelas mendeteksi Unity. Saya menduga ini adalah nilai dari apa yang dipilih pengguna pada layar login sebagai sesi, itu sebabnya sedikit lebih mudah digunakan untuk memeriksa proses
sumber
Naskah
Script berikut mengakibatkan sebagai jawaban terbaik untuk serupa pertanyaan saya posted lebih di unix.se . Ini juga berfungsi dengan baik dengan Unity dan LXDE.
sumber
Anda dapat menggunakan alat yang disebut
inxi
. Ini dapat diperoleh dari Gudang Ubuntu dengan:sudo apt install inxi
atau dari github: https://github.com/smxi/inxi
Jalankan saja perintahnya sebagai berikut:
Catat
Desktop: i3
bagiannya. Dalam kasus saya manajer jendela yang saya gunakan adalahi3
.Opsi
-S
menampilkan info sistem danx
menambahkan info tentang pengelola jendela.sumber
Saya hanya bisa memikirkan memeriksa manajer jendela yang dikenal dalam proses yang berjalan. Dulu ada kunci dalam gconf yang disetel ke pengelola jendela pilihan, tetapi sudah tidak digunakan lagi sejak Gnome 2.12.
Jadi, jika ini untuk tujuan pemrograman, saya sarankan Anda untuk melakukan riset untuk semua manajer jendela linux; beberapa yang populer adalah:
Anda harus menjalankan pemeriksaan untuk masing-masing dengan perintah
pgrep -l $WINDOW_MANAGER
, di mana$WINDOW_MANAGER
nama manajer jendela yang ingin Anda periksa. Thepgrep
perintah memeriksa proses yang berjalan.Saya tidak 100% yakin jika Gnome Shell dianggap sebagai manajer jendela; sisa manajer jendela yang saya dapatkan dari daftar di
/usr/bin/gnome-wm
skrip. Skrip ini sebenarnya harus dapat digunakan (karena ini ada pada instalasi yang bersih) tetapi dalam kasus saya ini mencoba untuk menjalankancompiz
yang bukan window manager default saya (bukan di sesi Gnome saya).SUNTING:
Komentar @Anarci sepertinya lebih akurat. Dalam kasus saya itu memang terlihat
gnome-shell
.sumber
pgrep -l "compiz|metacity|mutter|kwin|sawfish|fluxbox|openbox|xmonad"
$DISPLAY
di lingkungannya).