Yanıtlar:
Eğer wmctrl
yüklediyseniz, komuttan ilk çıktı satırı
wmctrl -m
size pencere yöneticisinin adını gösterecektir. Eğer var yoksa wmctrl
yüklü, yüklemek için aşağıdaki komutu kullanın:
sudo apt-get install wmctrl
Not, man wmctrl
(yani, man
sayfanın wmctrl
) bölümünde şöyle yazıyor:
-m Pencere yöneticisi hakkında bilgi görüntüle ...
Benim Ubuntu 11.10 Açık / Linux 3.0.0-14-jenerik # 23-Ubuntu x86_64 / metacity sürümü 2.34.1 sistemi, gelen çıkışının ilk satırı wmctrl -m
oldu: Name: Metacity
süre echo $DESKTOP_SESSION
gösterdi ubuntu-2d
ve echo $XDG_CURRENT_DESKTOP
gösterdi Unity
.
Taze Ubuntu 15.10 üzerinde yükleme Ubuntu desktop
itibaren, eski bir dizüstü yazılım çıkışının ilk satırı wmctrl -m
oldu: Name: Compiz
iken DESKTOP_SESSION
ve XDG_CURRENT_DESKTOP
değerleri ubuntu
veUnity
ssh -Y {host} 'wmctrl -m'
bazı değerler döndürüyor (örneğin, "Name: Compiz" ve birkaç N / A), ancak ssh
pencere yöneticisi hakkında sınırlı bilgiye sahip olacağı mantıklı .
wmctrl -d
(Pencere yöneticisi tarafından yönetilen tüm masaüstlerini listele) veya wmctrl -l
( Pencere yöneticisi tarafından yönetilen pencereleri listele ) seçeneklerinden herhangi biri Xubuntu Wily ile Pencere Oluşturucu'da çalışır mı?
Linux sistemlerde ben ortam değişkenleri test XDG_CURRENT_DESKTOP
ve GDMSESSION
aşağıdaki sonuçlar elde ettim.
Çıktı almak için bu satırı kullanabilirsiniz:
printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION"
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu
XDG_CURRENT_DESKTOP=ubuntu:GNOME
GDMSESSION=ubuntu-wayland
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
Not MIR_SERVER_NAME da ayarlandı
MIR_SERVER_NAME=session-$NUMBER
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
XDG_CURRENT_DESKTOP=XFCE
GDMSESSION=xfce
XDG_CURRENT_DESKTOP=
GDMSESSION=kde-plasma
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu
XDG_CURRENT_DESKTOP=Unity
GDMSESSION=ubuntu-2d
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-shell
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-classic
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome-fallback
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=cinnamon
XDG_CURRENT_DESKTOP=KDE
GDMSESSION=default
XDG_CURRENT_DESKTOP=X-Cinnamon
GDMSESSION=default
XDG_CURRENT_DESKTOP=LXDE
GDMSESSION=Lubuntu
XDG_CURRENT_DESKTOP=X-Cinnamon
GDMSESSION=cinnamon
XDG_CURRENT_DESKTOP=GNOME
GDMSESSION=gnome
XDG_CURRENT_DESKTOP=MATE
GDMSESSION=mate
XDG_CURRENT_DESKTOP=XFCE
GDMSESSION=xubuntu
env
Tüm ortam değişkenlerini görmek için terminal tipinde . Onlardan bazıları:
XDG_CURRENT_DESKTOP - Hangi masaüstü ortamını kullandığınızı gösterir
GDMSESSION - Lightdm selamlayıcıdan giriş yapmak için hangi seçeneği seçtiğinizi gösterir.
Bunları kullanmak için terminale gidin ve şunu yazın:
echo $XDG_CURRENT_DESKTOP
(Birlik kullanıyorsanız, örneğin 'birlik' çıktısını alacak)
veya
echo $GDMSESSION
(Girişte ubuntu'yu seçtiyseniz 'ubuntu' veya girişte birini seçtiyseniz 'ubuntu-2d' çıktısını alın.)
DESKTOP_SESSION ve COMPIZ_CONFIG_PROFILEenv
gibi çıktılara daha yakından bakarsanız başkalarına da sahip olabilirsiniz.
Aradığın şey, Pencere Yöneticisinin ne kullandığı adı olduğundan, bunu elde etmenin tek yolu süreç listesine bakmaktır. Bunu yapmak için pgrep
( Wikipedia ) adında bir komut var . -L parametresi işlem kimliğini eklediğinden adı almak için aşağıdakileri yaptım:
pgrep -l compiz |cut -d " " -f2
işlem aynı kullanıcı tarafından çalıştığından, sudo bölümünü ön eklemeye gerek yoktur. Bunu daha sonra Pencere Yöneticisine dayalı bir işlem yapan bir komut dosyası oluşturmak için kullanabilirsiniz.
Az önce haber değiştirmek diğer türleri aramak için compiz
başka benzerine mutter
, kwin
vb ..
$XDG_CURRENT_DESKTOP
pencere yöneticisi değil, mevcut masaüstü ortamıdır.
pstree
Büyük bir yardım buldum .
sudo apt-get install pstree
Elimde bu var.
├─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}]
xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t
)
sonunda bir eksik olduğunu düşünüyorum .
xprop -root -notype
, kök penceresinin tüm özelliklerini gösterir (ve daha kolay ayrıştırma için türleri atlar), çıktı awk
boru yoluyla gönderilir ; 2. awk
komut $1=="_NET[blah]CK:"{print $5}'
, borudan aldığı girişin her bir satırının ilk sütununu verilen bir dizeyle karşılaştırır ve eşleşmeyi bulursa, kodu bu satırdan beşinci sütunu basan parantez içinde çalıştırır - tam olarak, (tamamen kazara, Bahse girerim) "_NET_SUPPORTING_WM_CHECK" atomunun kimliği olmak; 3. bu kimlik daha sonra Windows Manager'ın özelliklerini almak için tekrar kullanılırxprop -id
KDE ile de test yapıyorum ve sonucum:
a) HardInfo ile grafiksel yol: cevap normalde "İşletim Sistemi"> "Masaüstü Ortamı" dır, ancak değilse "Ortam değişkenleri" ifadesini arayamazsınız. HardInfo, KDE'li hariç tüm test edilen dağıtımlarla hazırdır, ancak kolayca ve hızlı bir şekilde kurulabilir (Linux Mint 13'te yalnızca 2 paket).
bu komutla b) Komut satırı,: ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"
. Daha fazla satırda görünen madde cevap olmalıdır (eğer "session" ile beraberlik varsa bir çözüm olmalıdır).
gnome-...
işlemlere sahiptir (ve bir kdevtmpfs
Yukarıdakilerin hiçbiri aslında benim için işe yaramadı, sadece mevcut masaüstü oturumum olarak çalışan Gnome olup olmadığını bilmek istedim.
İşe yarayan şey bu, terminal açmak
lsb_release -a
(UBUNTU makineme hangi tat veya versiyonumu kurduğumu kontrol etmek için)
ls /usr/bin/*session
(şu anda hangi masaüstü oturumunun / masaüstü ortamının kullanılmakta olduğunu başlatır)
gnome-shell --version
(hangi gnome versiyonunun kurulu olduğunu bulmak için)
#! /bin/bash
# (GPL3+) Alberto Salvia Novella (es20490446e.wordpress.com)
windowManagerName () {
window=$(xprop -root -notype)
identifier=$(echo "${window}" | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}')
attributes=$(xprop -id "${identifier}" -notype -f _NET_WM_NAME 8t)
echo "${attributes}" |
grep "_NET_WM_NAME = " |
cut --delimiter=' ' --fields=3 |
cut --delimiter='"' --fields=2
}
windowManagerName
Veya bir satırda:
id = $ (xprop -root -notype | awk '$ 1 == "_ NET_SUPPORTING_WM_CHECK:" {$ 5}' yazdırın); xprop -id "$ {id}" -notype -f _NET_WM_NAME 8t | grep "_NET_WM_NAME =" | cut --delimiter = '' - alanlar = 3 | cut --delimiter = '"' - alanlar = 2
Bu, dbus ve Hesaplar Servisi ile mümkün (her ikisi de varsayılan olarak Ubuntu'da).
$ qdbus --system org.freedesktop.Accounts \
> /org/freedesktop/Accounts/User1000 \
> org.freedesktop.Accounts.User.XSession
ubuntu
Bunu lightdm (yani grafiksel giriş ekranı) aracılığıyla oturum açarak test ettiğime dikkat çekmek gerekirse, blackbox gibi klasik bir masaüstünü tespit etti ve Unity'yi açıkça tespit etti. Bunun, kullanıcının oturum açma oturumunda oturum olarak seçtiği şeyin bir değeri olduğundan şüpheleniyorum, bu yüzden işlemler için bu kontrolü kullanmak biraz daha kolay
Aşağıdaki komut dosyası , unix.se adresinde gönderdiğim benzer bir sorunun en iyi cevabı olarak sonuçlandı . Ayrıca Unity ve LXDE ile de harika çalışıyor.
if [ "$XDG_CURRENT_DESKTOP" = '' ]
then
desktop=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*/\1/')
else
desktop=$XDG_CURRENT_DESKTOP
fi
desktop=${desktop,,} # convert to lower case
echo "$desktop"
Denilen aracı kullanabilirsiniz inxi
. Ubuntu Depolarından aşağıdaki adresten temin edilebilir:
sudo apt install inxi
veya github'dan: https://github.com/smxi/inxi
Sadece komutu aşağıdaki gibi çalıştırın:
inxi -Sx
System: Host: blackhole Kernel: 5.1.15-050115-lowlatency x86_64 bits: 64 compiler: gcc v: 8.3.0
Desktop: i3 4.16.1-178-g31c0f1b8 Distro: Ubuntu 19.04 (Disco Dingo)
Parçayı not edin Desktop: i3
. Benim durumumda kullandığım pencere yöneticisi i3
.
Seçenek -S
sistem bilgisini görüntüler ve x
pencere yöneticisi hakkında bilgi ekler.
Çalışan pencerelerde yalnızca bilinen pencere yöneticilerini kontrol etmeyi düşünebilirim. Gconf'da tercih edilen pencere yöneticisine ayarlanan bir anahtar vardı, ancak Gnome 2.12'den beri kullanımdan kaldırıldı.
Bu, eğer programlama amaçlıysa, tüm linux pencere yöneticileri için araştırma yapmanızı öneririm; bazı popülerler:
Her biri için komut içeren bir kontrol çalıştırmanız gerekir pgrep -l $WINDOW_MANAGER
, burada $WINDOW_MANAGER
kontrol etmek istediğiniz pencere yöneticisinin adı. pgrep
Süreçleri çalıştırmak için komut kontrol eder.
Gnome Shell'in bir pencere yöneticisi olarak kabul edilip edilmediğinden% 100 emin değilim; Pencere yöneticilerinin geri kalanını /usr/bin/gnome-wm
senaryodaki bir listeden aldım . Aslında bu betik kullanılabilir durumda olmalı (temiz bir kurulumda günümüze geldiğinden beri) ancak benim durumumda compiz
varsayılan pencere yöneticim olmayan (Gnome oturumumda değil) benim çalışmam gerekiyor.
DÜZENLE:
@Anarci'nin yorumu daha doğru görünüyor. Benim durumumda gösterdi gnome-shell
.
pgrep -l "compiz|metacity|mutter|kwin|sawfish|fluxbox|openbox|xmonad"
$DISPLAY
ortamında inceleyerek yapabilirsiniz ).