Pertanyaan Cara menentukan window manager mana yang sedang berjalan


Adakah cara (seperti perintah atau variabel lingkungan) untuk menentukan apa manajer jendela apakah yang aktif berjalan di sesi saat ini?


151
2017-10-26 20:39


asal




Jawaban:


Jika Anda memiliki wmctrl terinstal, baris pertama dari output dari perintah

    wmctrl -m

akan menunjukkan kepada Anda nama manajer jendela. Jika Anda tidak punya wmctrl terinstal, gunakan perintah berikut untuk menginstalnya:

    sudo apt-get install wmctrl

Catatan, man wmctrl (itu adalah man halaman untuk wmctrl) mengatakan sebagian:

-m Menampilkan informasi tentang manajer jendela ...

Pada sistem Ubuntu 11.10 / Linux 3.0.0-14-generik # 23-Ubuntu x86_64 / metacity 2.34.1, baris pertama keluaran dari wmctrl -m adalah: Name: Metacity
sementara echo $DESKTOP_SESSION menunjukkan ubuntu-2d dan echo $XDG_CURRENT_DESKTOP menunjukkan Unity.

Pada instalasi Ubuntu 15.10 yang baru Ubuntu desktop perangkat lunak pada laptop lama, baris pertama keluaran dari wmctrl -m adalah: Name: Compiz
selagi DESKTOP_SESSION dan XDG_CURRENT_DESKTOP nilai-nilai itu ubuntu dan Unity


126
2018-01-05 07:57



Sayangnya ini tidak bekerja lebih dari ssh bahkan jika X11 diaktifkan. - Sridhar-Sarnobat
@ Sridhar-Sarnobat di ubuntu 15.04, berlari ssh -Y {host} 'wmctrl -m' mengembalikan beberapa nilai (mis., "Nama: Compiz", dan beberapa N / A), tetapi masuk akal itu ssh akan memiliki info terbatas tentang manajer jendela. - michael
di debian menjalankan kayu manis, ini tidak bekerja. output dari wmctrl -m adalah Name: Mutter (Muffin) sementara $ XDG_CURRENT_DESKTOP = X-Cinnamon - Floyd
Pada Xubuntu Wily, jalankan Window Maker 0.95.6 - wmctrl melaporkan N / A untuk semua entri. GDMSESSION disetel ke wmaker-common tetapi XDG_CURRENT_DESKTOP tidak diatur sama sekali. - Mei
@Mei, apakah Anda memiliki Window Maker yang berjalan pada sistem lain yang dapat Anda bandingkan? Juga, lakukan salah satunya wmctrl -d (Buat daftar semua desktop yang dikelola oleh window manager) atau wmctrl -l (Buat daftar jendela yang dikelola oleh window manager) berfungsi ok di Xubuntu Wily dengan Window Maker? - James Waldby - jwpat7


Pada sistem Linux saya menguji variabel lingkungan XDG_CURRENT_DESKTOP dan GDMSESSION dan mendapat hasil sebagai berikut.

Anda dapat menggunakan baris ini untuk mendapatkan hasilnya:

printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION"

Ubuntu 18.04 (Ubuntu)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu

Ubuntu 18.04 (Ubuntu on Wayland)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu-wayland

Ubuntu 16.04


Kesatuan (7)

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Ubuntu 14.04


Kesatuan berjalan dengan Mir

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Catatan MIR_SERVER_NAME juga ditetapkan

  • MIR_SERVER_NAME=session-$NUMBER

Kesatuan 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

Unity 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

  • 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

84
2017-12-10 20:38



Mint 13 (Cinnamon): XDG_CURRENT_DESKTOP = GNOME, GDMSESSION = kayu manis - rik-shaw
Lubuntu 12.04: XDG_CURRENT_DESKTOP = LXDE, GDMSESSION = Lubuntu - rik-shaw
Bagaimana dengan $ DESKTOP_SESSION? Sebagai solusi cadangan :) - Savvas Radevic
Bagaimana jika saya tidak menggunakan GDM? - Robert Siemer
Dan lebih jauh itu tidak menjawab apa manajer jendela Saya menggunakan! - Robert Siemer


Dalam tipe terminal env untuk melihat semua variabel lingkungan. Beberapa dari mereka adalah:

XDG_CURRENT_DESKTOP - Memberi tahu Anda apa lingkungan desktop yang Anda gunakan

GDMSESSION - Memberi tahu Anda opsi apa yang Anda pilih dari penyambut lightdm untuk masuk.

Untuk menggunakannya, buka terminal dan ketik:

echo $XDG_CURRENT_DESKTOP

(Akan output misalnya 'kesatuan' jika Anda menggunakan Unity)

atau

echo $GDMSESSION  

(Akan output 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_PROFILE

Karena yang Anda cari adalah nama Window Manager yang digunakan, satu-satunya cara saya melihat cara mendapatkannya adalah dengan melihat daftar proses. Untuk melakukan ini ada perintah yang disebut pgrep ( Wikipedia ). Saya melakukan hal berikut untuk mendapatkan nama karena parameter-l menambahkan ID proses:

pgrep -l compiz |cut -d " " -f2 karena proses sedang berjalan oleh pengguna yang sama tidak perlu untuk awalan bagian sudo. Anda kemudian dapat menggunakan ini untuk membuat skrip yang melakukan tindakan berdasarkan Window Manager.

Untuk mencari tipe lain, cukup ubah kata compiz ke yang lain seperti mutter, kwin, dll ..


39
2017-10-26 21:57



Itu hanya memberi tahu saya nama sesi dan lingkungan desktop. Contoh ini mengatakan "GNOME" yang merupakan lingkungan desktop yang dapat menggunakan Metacity, Mutter, Compiz, atau window manager lainnya. Dikatakan "gnome-classic" yang merupakan nama sesi, tidak ada window manager dengan nama itu. - Anonymous
Ini dia. Menemukan sebuah perintah yang dapat membantu dengan daftar proses. pgrep. Sampai ke bagian itu, setidaknya itu menunjukkan kepada Anda nama manajer jendela jika ditemukan. Mencoba memeriksa apakah saya bisa menambahkan semuanya di sana. Pertanyaan Anda sangat bagus karena Ubuntu 11.10 membingungkan sedikit dengan menggunakan Compiz (Atau bergumam jika ketika Gnome 3.x) maka akan lebih baik untuk menunjukkan Window Manager yang sebenarnya yang digunakan dalam Unity. - Luis Alvarado♦
$XDG_CURRENT_DESKTOP adalah lingkungan desktop saat ini, BUKAN pengelola jendela. - Ken Sharp


saya menemukan pstree menjadi bantuan besar.

Instalasi

sudo apt-get install pstree

keluaran

Ini yang saya dapatkan.

 ├─lightdm─┬─Xorg───2*[{Xorg}]
 │         ├─lightdm─┬─gnome-session─┬─bluetooth-apple───2*[{bluetooth-apple}]
 │         │         │               ├─compiz─┬─sh───gtk-window-deco───2*[{gtk-window-deco}]
 │         │         │               │        └─5*[{compiz}]
 │         │         │               ├─deja-dup-monito───2*[{deja-dup-monito}]
 │         │         │               ├─gnome-fallback-───2*[{gnome-fallback-}]
 │         │         │               ├─gnome-screensav───2*[{gnome-screensav}]
 │         │         │               ├─gnome-settings-───2*[{gnome-settings-}]
 │         │         │               ├─nautilus───2*[{nautilus}]
 │         │         │               ├─nm-applet───2*[{nm-applet}]
 │         │         │               ├─polkit-gnome-au───2*[{polkit-gnome-au}]
 │         │         │               ├─ssh-agent
 │         │         │               ├─telepathy-indic───2*[{telepathy-indic}]
 │         │         │               ├─update-notifier───2*[{update-notifier}]
 │         │         │               ├─vino-server───2*[{vino-server}]
 │         │         │               ├─zeitgeist-datah───{zeitgeist-datah}
 │         │         │               └─3*[{gnome-session}]
 │         │         └─{lightdm}
 │         └─2*[{lightdm}]

20
2018-04-22 04:59





xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t 

8
2018-05-15 06:19



Bisakah Anda menjelaskan bagaimana ini bekerja? Juga, saya pikir Anda hilang ) pada akhirnya. - Louis Matthijssen
@LouisMatthijssen 1. xprop -root -notype menampilkan semua properti jendela root (dan menghilangkan jenis untuk parsing lebih mudah), output dikirim ke awk melalui pipa; 2 awk petunjuk $1=="_NET[blah]CK:"{print $5}' membandingkan kolom pertama dari setiap baris input yang didapat melalui pipa dengan string yang diberikan dan jika menemukan kecocokannya menjalankan kode dalam tanda kurung yang mencetak kolom kelima dari baris ini - terjadi begitu saja (sepenuhnya karena kecelakaan, saya bertaruh) menjadi ID atom "_NET_SUPPORTING_WM_CHECK"; 3. ID ini kemudian digunakan lagi untuk mendapatkan properti dari Windows Manager dengan xprop -id - cprn


Saya telah menguji juga dengan KDE dan kesimpulan saya adalah:

a) Cara grafis, dengan HardInfo: jawabannya biasanya dalam "Sistem Operasi"> "Lingkungan Desktop", tetapi jika tidak Anda dapat melihat ke "Variabel lingkungan". HardInfo sudah 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) Baris perintah, 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 yang menarik dengan "sesi" harus menjadi solusi).


3
2018-04-15 22:51



XFCE juga memiliki beberapa gnome-... proses (dan KDE memukul dengan kdevtmpfs) - Xen2050


Tidak ada di atas yang benar-benar bekerja untuk saya, saya hanya ingin tahu apakah saya punya Gnome berjalan sebagai sesi desktop saya saat ini.

Inilah yang berhasil, buka terminal

lsb_release -a

(untuk memeriksa rasa atau versi yang saya pasang pada mesin UBUNTU saya)

ls /usr/bin/*session

(meluncurkan lingkungan desktop / sesi desktop yang saat ini digunakan)

gnome-shell --version 

(untuk mengetahui versi gnome yang diinstal)


1
2017-07-07 16:26