Yanıtlar:
Eğer wmctrlyüklediyseniz, komuttan ilk çıktı satırı
wmctrl -m
size pencere yöneticisinin adını gösterecektir. Eğer var yoksa wmctrlyüklü, yüklemek için aşağıdaki komutu kullanın:
sudo apt-get install wmctrl
Not, man wmctrl(yani, mansayfanı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 -moldu: Name: Metacity
süre echo $DESKTOP_SESSIONgösterdi ubuntu-2dve echo $XDG_CURRENT_DESKTOPgösterdi Unity.
Taze Ubuntu 15.10 üzerinde yükleme Ubuntu desktopitibaren, eski bir dizüstü yazılım çıkışının ilk satırı wmctrl -moldu: Name: Compiz
iken DESKTOP_SESSIONve XDG_CURRENT_DESKTOPdeğerleri ubuntuveUnity
ssh -Y {host} 'wmctrl -m'bazı değerler döndürüyor (örneğin, "Name: Compiz" ve birkaç N / A), ancak sshpencere 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_DESKTOPve GDMSESSIONaş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:GNOMEGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=ubuntu:GNOMEGDMSESSION=ubuntu-waylandXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuNot MIR_SERVER_NAME da ayarlandı
MIR_SERVER_NAME=session-$NUMBERXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=XFCEGDMSESSION=xfceXDG_CURRENT_DESKTOP=GDMSESSION=kde-plasmaXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntu-2dXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-shellXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-classicXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-fallbackXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=cinnamonXDG_CURRENT_DESKTOP=KDEGDMSESSION=defaultXDG_CURRENT_DESKTOP=X-CinnamonGDMSESSION=defaultXDG_CURRENT_DESKTOP=LXDE GDMSESSION=LubuntuXDG_CURRENT_DESKTOP=X-Cinnamon GDMSESSION=cinnamonXDG_CURRENT_DESKTOP=GNOME GDMSESSION=gnomeXDG_CURRENT_DESKTOP=MATEGDMSESSION=mateXDG_CURRENT_DESKTOP=XFCEGDMSESSION=xubuntuenvTü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 " " -f2iş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 compizbaşka benzerine mutter, kwinvb ..
$XDG_CURRENT_DESKTOPpencere yöneticisi değil, mevcut masaüstü ortamıdır.
pstreeBü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ı awkboru yoluyla gönderilir ; 2. awkkomut $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 -Ssistem bilgisini görüntüler ve xpencere 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_MANAGERkontrol etmek istediğiniz pencere yöneticisinin adı. pgrepSü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-wmsenaryodaki 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 compizvarsayı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"
$DISPLAYortamında inceleyerek yapabilirsiniz ).