Mevcut oturumda aktif olarak çalışan pencere yöneticisi 'nin ne olduğunu belirlemek için herhangi bir yol var mı (komut veya çevre değişkeni gibi)?
Mevcut oturumda aktif olarak çalışan pencere yöneticisi 'nin ne olduğunu belirlemek için herhangi bir yol var mı (komut veya çevre değişkeni gibi)?
wmctrl
yüklüyse, komuttan ilk çıktı satırı
wmctrl -m
size pencere yöneticisinin adını gösterecektir. Yüklü wmctrl
yoksa, yüklemek için aşağıdaki komutu kullanın:
sudo apt-get install wmctrl
Not, man wmctrl
(diğer bir deyişle man
için wmctrl
sayfası) aşağıdakileri belirtmektedir:
-m Pencere yöneticisi hakkında bilgi ...
Ubuntu 11.10 / Linux 3.0.0-14-jenerik # 23-Ubuntu x86_64 / metacity 2.34.1 sistemimde, wmctrl -m
'sinin ilk satırı çıktı: Name: Metacity
echo $DESKTOP_SESSION
ubuntu-2d
ve echo $XDG_CURRENT_DESKTOP
Unity
gösterdi.
Yeni bir Ubuntu 15.10'da, eski bir dizüstü bilgisayarda Ubuntu desktop
yazılımının yüklenmesi, wmctrl -m
'sindeki ilk çıktı satırı: Name: Compiz
DESKTOP_SESSION
ve XDG_CURRENT_DESKTOP
değeri ubuntu
ve Unity
Linux sistemlerinde ortam değişkenlerini XDG_CURRENT_DESKTOP
ve GDMSESSION
test ettim ve aşağıdaki sonuçları aldım.
Çı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
Tüm ortam değişkenlerini görmek için terminal türünde env
. Bazıları:
XDG_CURRENT_DESKTOP - Hangi masaüstü ortamını kullandığınızı söyler
GDMSESSION - Lightdm selamlayıcısından oturum açmak için hangi seçeneği belirlediğinizi size söyler.
Bunları kullanmak için terminale gidin ve şunu yazın:
echo $XDG_CURRENT_DESKTOP
(Unity'yi kullanıyorsanız, örneğin 'birlik' çıkışı olacak)
veya
echo $GDMSESSION
(Girişte ubuntu'yu veya 'ubuntu-2d'yi seçtiyseniz' ubuntu 'çıktısını alırsınız.)
env
DESKTOP_SESSION ve COMPIZ_CONFIG_PROFILE
Aradığınız şey, Window Manager'ın kullanımda olduğu ad olduğundan, bunu nasıl alacağımı görebilmemin tek yolu işlem listesine bakmaktır. Bunu yapmak için pgrep
adlı bir komut vardır ( Wikipedia ). Parametre -l işlem kimliğini eklediğinden beri adı almak için aşağıdakileri yaptım:
pgrep -l compiz |cut -d " " -f2
sudo parçasının ön ekine gerek yoktur. Bunu, daha sonra Window Manager'a dayalı bir eylem gerçekleştiren bir komut dosyası oluşturmak için kullanabilirsiniz.
Diğer türleri aramak için, compiz
kelimesini başka bir mutter
, kwin
vb. gibi değiştirin.
pstree
öğesinin büyük bir yardımcı olduğunu buldum.
sudo apt-get install pstree
Sahip olduğum şey bu.
├─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 '=="_NET_SUPPORTING_WM_CHECK:"{print }') -notype -f _NET_WM_NAME 8t
KDE ile de test ediyorum ve sonuç şudur:
a) HardInfo ile grafiksel yol: cevap normalde "İşletim Sistemi" & gt; "Masaüstü Ortamı", ancak "Ortam değişkenleri" ne bakabilirsiniz. HardInfo, KDE olanı hariç tüm test edilmiş dağıtımlarla hazırdır, ancak kolay ve hızlı bir şekilde kurulabilir (Linux Mint 13'te yalnızca 2 paket).
b) Komut satırı, bu komutla: ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"
. Daha fazla satırda görünen öğe, cevap olmalıdır (eğer bir çizim varsa "oturum" öğesinin çözümü olmalıdır).
Yukarıdakilerin hiçbiri benim için işe yaramadı. Gnome'un şu andaki masaüstü oturumu olarak çalışıp çalışmadığımı bilmek istedim.
Çalışılan, bir terminal açma
lsb_release -a
(UBUNTU makinemde hangi lezzeti veya sürümü yüklediğimi kontrol etmek için)
ls /usr/bin/*session
(şu anda kullanılan masaüstü oturumunu / masaüstü ortamını başlatır)
gnome-shell --version
(gnome'un hangi sürümünün yüklü olduğunu öğrenmek için)
Aşağıdaki komut dosyası, benzer bir unix.se adresinden gönderdiğim soruya en iyi yanıt olarak verilmişti . Ayrıca Unity ve LXDE ile harika çalışıyor.
if [ "$XDG_CURRENT_DESKTOP" = '' ]
then
desktop=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*//')
else
desktop=$XDG_CURRENT_DESKTOP
fi
desktop=${desktop,,} # convert to lower case
echo "$desktop"
Bu, dbus ve Accounts Service ile (her ikisi de Ubuntu'da varsayılan olarak) mümkündür.
$ qdbus --system org.freedesktop.Accounts \
> /org/freedesktop/Accounts/User1000 \
> org.freedesktop.Accounts.User.XSession
ubuntu
Bunu, lightdm (grafiksel giriş ekranı) aracılığıyla oturum açarak test ettiğime dikkat çekerek, blackbox gibi klasik bir masaüstünü tespit etti ve açıkça Unity'yi tespit etti. Bunun, oturum açma oturumunda kullanıcının seçtiği şeyin bir değeri olduğundan şüpheleniyorum. Bu yüzden, işlemleri kontrol etmenin biraz daha kolay olduğunu
Sadece çalışan işlemlerde bilinen pencere yöneticilerini kontrol etmeyi düşünüyorum. Önceden tercih edilen pencere yöneticisine ayarlanmış bir gconf anahtarı vardı, ancak Gnome 2.12'den beri kullanımdan kaldırıldı.
Yani, eğer bu bir programlama amacına yönelikse, tüm linux pencere yöneticileri için araştırma yapmanızı öneririm; bazı popüler:
pgrep -l $WINDOW_MANAGER
komutuyla her biri için bir kontrol çalıştırmanız gerekir. Burada $WINDOW_MANAGER
, kontrol etmek istediğiniz pencere yöneticisinin adıdır. % Co_de% komutu, çalışan işlemleri denetler.
Gnome Kabuğu bir pencere yöneticisi olarak kabul edilirse% 100 emin değilim; pgrep
komut dosyasında bir listeden aldığım pencere yöneticilerinin geri kalanı. Bu betik aslında kullanılabilir olmalıdır (çünkü temiz yüklemede mevcut) ama benim durumumda, varsayılan pencere yöneticim olmayan /usr/bin/gnome-wm
dosyasını çalıştırmayı deniyor (Gnome oturumımda değil).
DÜZENLEME:
Eh @Anarci'nin yorumu daha doğru görünüyor. Benim durumumda compiz
gösterdiler.
Etiketlerdeki diğer soruları oku xorg window-manager