Ekran yöneticimin ne olduğunu söyleyecek basit bir linux komutu var mı?
Xfce kullanıyorum. Farklı masaüstü ortamları genellikle farklı ekran yöneticilerine bağlı mı?
Ekran yöneticimin ne olduğunu söyleyecek basit bir linux komutu var mı?
Xfce kullanıyorum. Farklı masaüstü ortamları genellikle farklı ekran yöneticilerine bağlı mı?
Yanıtlar:
Maalesef, yapılandırma her dağıtım için farklıdır:
Debian / Ubuntu
/etc/X11/default-display-manager
RedHat (Fedora için de geçerli olmalıdır)
/etc/sysconfig/desktop
openSUSE
/etc/sysconfig/displaymanager
cat
.
/usr/bin/xdm
- Bu, xdm'nin ekran yöneticim olduğu anlamına mı geliyor?
Yok. Görüntü yöneticisi mutlaka aynı X sunucusunda çalışan başka bir şeyle ilgili değildir. Ekran yöneticisi siz oturum açmadan önce çalışır; sistem yöneticisi tarafından seçilir. Diğer her şey (pencere yöneticisi, oturum yöneticisi, masaüstü ortamı,…) kullanıcı tarafından seçilir. Bir ekran yöneticisi olmak zorunda bile değil: metin modunda giriş yapar ve GUI'yi başlatırsanız, startx
ekran yöneticisi olmaz.
Hangi görüntü yöneticisinin sisteminizde varsayılan olduğunu kontrol edebilirsiniz . Bu, yalnızca bazı yaygın ama evrensel varsayımlar altında değil, doğru cevabı verecektir. Herhangi bir nedenden dolayı farklı bir menajeri manuel olarak çalıştırdıysanız, bu yöntem size söylemez.
İyi bir bahis, X sunucunun işlem kimliğini bulmaktır: ana işlem muhtemelen varsa bir ekran yöneticisidir. Bu, istemcilerinizin X sunucusuyla aynı makinede çalışmasını gerektirir. lsof /tmp/.X11-unix/X${DISPLAY#:}
X sunucu işlemini gösterecektir (X soketlerinin yaşadığını varsayarsak /tmp/.X11-unix
).
x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
(Açıklama: lsof -F ''
çıktıyı basar p1234
. -F
Seçenek, makineye uygun bir çıktı biçimi ''
anlamına gelir ve yalnızca PID'yi, p
önce gelen harfle yazdırmak anlamına gelir . x=${x#p}
İlk harfi çıkarır p
. Son satır, X sunucusunun ebeveyinin PID'sini alır. ( ps -o ppid -p $x
) ve ps
bu üst işlem hakkında bilgi göstermek için arama yapar.)
Bazı dağıtımlar birden fazla ekran yöneticisinin kurulmasına izin verir. Çok-parçalı bir sisteminiz olmadığı sürece sadece bir çalışan olacak. Yüklü tüm ekran yöneticisi paketlerini Debian ve türevleri altında listelemek için:
aptitude -F %p search '~i ~P^x-display-manager$'
veya
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
Systemd tabanlı dağıtım kullanıyorsanız . Bu komut, halihazırda yapılandırılmış ekran yöneticisinin adını verecektir, çünkü kurulu birden fazla ekran yöneticisi olabilir.
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
ÇIKIŞ gibi bir şey olacak
ExecStart=/usr/bin/mdm
Nane ekran yöneticisi kullanıyorum gibi görünüyor.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (Ve kesinlikle konuşursak, /usr/bin
kabuğa özgü herhangi bir karakter içermediğinden, alıntı yapmana gerek yoktur - ama canın yanmaz.)
cat <file> | grep <searchterm>
yerine son dizeyi düzenlemeyi tercih grep <searchterm> <file>
ederim.
Ekran yöneticisi adı DESKTOP_SESSION içinde olmalı
echo $DESKTOP_SESSION
benim için "cüceyi" döndürür.
EDIT
Haklısın. XFCE'lerin bugzilla'sında ileri geri gidiyorlar, bu yüzden muhtemelen çok güvenilir değil.
$DESKTOP_SESSION
bir unknown
.
@Gilles'in dediği gibi, ekran yöneticisi masaüstü ortamınızı başlatacak.
Göre Debian Wiki çoğunlukla bu uç ile dm
, tek istisna slim
.
Bu yüzden bu, insanların ihtiyaçlarının çoğunda yeterli olacaktır:
ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$
Ya da emin olmak için, bir ana süreç olarak var ve çatallanmadı (init sistemi hariç):
ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$"
lightdm
. En iyi cevabın RedHat / Fedora çözümü işe yaramadı, konfigürasyon taşınmış gibi görünüyor.
Bazı durumlarda, wmctrl yardımcı olabilir. Bu yardımcı program, bir çok pencere yöneticisi ile uyumludur.
wmcrt -m
Kullanılmakta olan pencere yöneticisinin adını göstermelidir.
Daha önce de belirtildiği gibi, bu başlıkta çok fazla kafa karışıklığı var. Asıl soru, ekran yöneticisi değil, masaüstü yöneticisi veya pencere yöneticisidir. Şu anda Xfce pencere yöneticisi olan Xfwm4 ve hafif X11 ekran yöneticisi olan lxdm kullanıyorum (LXDE'den, Xfce değil). Hangi ekran yöneticisini kullandığınızı görebilmeniz gerekir. Muhtemelen çok uzun zamandır 4 yıl boyunca cevabı keşfetti :)
Bunu screenfetch adlı üçüncü taraf bir komut dosyası aracılığıyla yapabilirsiniz.
Screenfetch, Linux için kullanılabilir bir bash betiğidir ve sistemin Linux dağıtım logosunun ASCII sürümüyle birlikte sistem bilgilerini görüntüler.
Paket yöneticisi ile kurun
sudo apt-get install screenfetch
(Debian varyantlarında olduğunuzu varsayarak)
ve sadece
screenfetch
terminalinde koş
Proje bağlantısı https://github.com/KittyKatt/screenFetch
X oldukça modülerdir, eğer gerçekten istiyorsan, evet, masaüstü ortamlarını ve Windows yöneticilerini karıştır. Sonuçta bir pencere yöneticisi sadece pencereleri boyamanın bir yoludur (bu basit görünümdür).
Eğer gnome alırsanız, metacity eskiden windows yöneticisi olarak çalışıyordu, ama şimdi yerini Mutter aldı.
Karıştırma sorunu modern masaüstü ortamlarındadır, masaüstü ve pencere yöneticisi birbirine çok bağlıdır. Çok fazla karıştırma, daha az işlevle sonuçlanabilir.
Belirtildiği gibi $ DESKTOP_SESSION çalışıyor ancak X11 sunucunuza sormak istiyorsanız, şunları yapabilirsiniz:
xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME
Hangi ayrıştırır
xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"
Pencere yöneticisi tarafından oluşturulan pencerenin kimliğini alır. Teknik özellikler şöyle diyor (http://standards.freedesktop.org/wm-spec/1.3/ar01s03.html):
_NET_SUPPORTING_WM_CHECK, WINDOW/32
The Window Manager MUST set this property on the root window to be the ID
of a child window created by himself, to indicate that a compliant window
manager is active.
Ardından, söz konusu pencerenin WM_NAME özelliğini isteyin.
WM_NAME şudur:
The WM_NAME property is an uninterpreted string that the client wants the
window manager to display in association with the window (for example, in
a window headline bar).
_NET_SUPPORTING_WM_CHECK
Ekran yöneticisi hakkında değil pencere yöneticisi hakkında bilgi verir. Her zaman işe yaramaz bile; sistemimde, bu özellik bir pencere kimliğine ayarlanmış ancak söz konusu pencerenin bir adı yok.