क्या एक साधारण लिनक्स कमांड है जो मुझे बताएगा कि मेरा डिस्प्ले मैनेजर क्या है?
मैं Xfce का उपयोग कर रहा हूं। क्या अलग-अलग डेस्कटॉप वातावरण आमतौर पर अलग-अलग डिस्प्ले मैनेजर से संबद्ध होते हैं?
क्या एक साधारण लिनक्स कमांड है जो मुझे बताएगा कि मेरा डिस्प्ले मैनेजर क्या है?
मैं Xfce का उपयोग कर रहा हूं। क्या अलग-अलग डेस्कटॉप वातावरण आमतौर पर अलग-अलग डिस्प्ले मैनेजर से संबद्ध होते हैं?
जवाबों:
दुर्भाग्य से कॉन्फ़िगरेशन प्रत्येक वितरण के लिए भिन्न होता है:
Debian / Ubuntu
/etc/X11/default-display-manager
रेडहैट (फेडोरा पर भी लागू होना चाहिए)
/etc/sysconfig/desktop
openSUSE
/etc/sysconfig/displaymanager
cat
।
/usr/bin/xdm
- इसका मतलब है कि xdm मेरा डिस्प्ले मैनेजर है?
वहाँ नहीं है प्रदर्शन प्रबंधक आवश्यक रूप से उसी एक्स सर्वर पर चलने वाली किसी अन्य चीज़ से संबंधित नहीं है। आपके द्वारा लॉग इन करने से पहले डिस्प्ले मैनेजर चलता है; इसे सिस्टम एडमिनिस्ट्रेटर द्वारा चुना जाता है। बाकी सब कुछ (खिड़की प्रबंधक, सत्र प्रबंधक, डेस्कटॉप वातावरण, ...) उपयोगकर्ता द्वारा चुना जाता है। वहाँ भी एक प्रदर्शन प्रबंधक होने की जरूरत नहीं है: यदि आप पाठ मोड में लॉग इन करते हैं और GUI के साथ शुरू करते हैं startx
, तो कोई प्रदर्शन प्रबंधक शामिल नहीं है।
आप जांच सकते हैं कि आपके सिस्टम पर कौन सा डिस्प्ले मैनेजर डिफ़ॉल्ट है । यह केवल कुछ सामान्य लेकिन सार्वभौमिक मान्यताओं के तहत सही उत्तर देगा। यदि आप किसी भी कारण से मैन्युअल रूप से एक अलग प्रबंधक चलाते हैं, तो यह विधि आपको नहीं बताएगी।
एक्स सर्वर की प्रक्रिया आईडी का पता लगाने के लिए एक अच्छी शर्त है: इसकी मूल प्रक्रिया शायद एक डिस्प्ले मैनेजर है, यदि कोई है। इसके लिए आवश्यक है कि आपके क्लाइंट X सर्वर के समान मशीन पर चल रहे हों। lsof /tmp/.X11-unix/X${DISPLAY#:}
एक्स सर्वर प्रक्रिया दिखाएगा (एक्स सॉकेट्स को लाइव मानते हुए /tmp/.X11-unix
)।
x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
(स्पष्टीकरण: lsof -F ''
जैसे आउटपुट प्रिंट करता है p1234
। -F
विकल्प का अर्थ है एक मशीन-पार्स करने योग्य आउटपुट स्वरूप, और ''
इसका मतलब है कि केवल पीआईडी को प्रिंट करें, p
इससे पहले x=${x#p}
पत्र p
। ( ps -o ppid -p $x
), और ps
उस मूल प्रक्रिया के बारे में जानकारी दिखाने के लिए कॉल करता है।)
कुछ वितरण कई प्रदर्शन प्रबंधकों को स्थापित करने की अनुमति देते हैं। जब तक आपके पास एक मल्टीसैट सिस्टम नहीं होता है, तब तक केवल एक ही चालू रहेगा। डेबियन और डेरिवेटिव्स के तहत सभी इंस्टॉल किए गए डिस्प्ले मैनेजर पैकेजों को सूचीबद्ध करने के लिए:
aptitude -F %p search '~i ~P^x-display-manager$'
या
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
यदि आप systemd आधारित वितरण का उपयोग कर रहे हैं । यह कमांड वर्तमान में कॉन्फ़िगर किए गए डिस्प्ले मैनर का नाम देगा क्योंकि आपके पास एक से अधिक डिस्प्ले मैनेजर स्थापित हो सकते हैं।
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
OUTPUT कुछ इस तरह होगा
ExecStart=/usr/bin/mdm
ऐसा लगता है कि मैं टकसाल प्रदर्शन प्रबंधक का उपयोग कर रहा हूं।
grep '/usr/bin' /etc/systemd/system/display-manager.service
। (और, सख्ती से बोलना, क्योंकि /usr/bin
इसमें कोई भी वर्ण नहीं है जो शेल के लिए विशेष हैं, आपको इसे उद्धृत करने की आवश्यकता नहीं है - लेकिन यह चोट नहीं पहुंचाता है।)
cat <file> | grep <searchterm>
दूसरे स्ट्रिंग के बजाय एक दूसरे को संपादित करता हूं grep <searchterm> <file>
जब grepping करता हूं।
प्रदर्शन प्रबंधक का नाम DESKTOP_SESSION में होना चाहिए
echo $DESKTOP_SESSION
मेरे लिए "सूक्ति" देता है।
संपादित करें
आप सही हैं। वे आगे और पीछे उस पर XFCEs पर जा रहे हैं बगजिला तो यह शायद बहुत विश्वसनीय नहीं है।
$DESKTOP_SESSION
है unknown
।
जैसे @Gilles ने कहा, डिस्प्ले मैनेजर आपके डेस्कटॉप वातावरण को शुरू करेगा।
डेबियन विकी के अनुसार , ज्यादातर ये खत्म होते हैं dm
, केवल अपवाद है slim
।
तो यह लोगों की अधिकांश जरूरतों के लिए पर्याप्त होना चाहिए:
ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$
या यह सुनिश्चित करने के लिए, यह एक मूल प्रक्रिया के रूप में मौजूद है, और कांटा नहीं है (init सिस्टम को छोड़कर):
ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$"
lightdm
। शीर्ष उत्तर से RedHat / Fedora समाधान काम नहीं किया, कॉन्फ़िगरेशन स्थानांतरित हो गया है।
कुछ मामलों में, wmctrl मदद कर सकता है। यह उपयोगिता बहुत सारे विंडोज़ प्रबंधकों के साथ संगत है।
wmcrt -m
वर्तमान में उपयोग किए गए विंडो प्रबंधक का नाम प्रदर्शित करना चाहिए।
जैसा कि पहले ही उल्लेख किया गया है, इस धागे में बहुत भ्रम है। मूल प्रश्न यह है कि डिस्प्ले मैनेजर, डेस्कटॉप मैनेजर या विंडो मैनेजर नहीं है। मैं वर्तमान में Xfwm4 चला रहा हूं जो Xfce विंडो मैनेजर है, और lxdm जो कि हल्के X11 डिस्प्ले मैनेजर है (LXDE से, एक्सएफसी से नहीं)। आपको यह देखने में सक्षम होना चाहिए कि आप htop के माध्यम से किस प्रदर्शन प्रबंधक का उपयोग कर रहे हैं। आप पिछले 4 वर्षों में उत्तर की खोज करने के बाद से शायद लंबे समय तक हैं :)
आप इसे तीसरे पक्ष की स्क्रिप्ट के माध्यम से कर सकते हैं जिसे स्क्रीनफच कहा जाता है
स्क्रीनफैच लिनक्स के लिए उपलब्ध एक बैश स्क्रिप्ट है जो सिस्टम के लिनक्स वितरण लोगो के ASCII संस्करण के साथ सिस्टम जानकारी प्रदर्शित करता है।
पैकेज मैनेजर के माध्यम से स्थापित करें
sudo apt-get install screenfetch
(यह मानते हुए कि आप डेबियन वेरिएंट पर हैं)
और बस
screenfetch
अपने टर्मिनल में चलाएं
प्रोजेक्ट लिंक https://github.com/KittyKatt/screenFetch
एक्स अत्यधिक मॉड्यूलर है इसलिए यदि आप वास्तव में यह चाहते थे, हां, आप डेस्कटॉप वातावरण और विंडोज़ मैनेजर को मिला सकते हैं। सब के बाद एक खिड़की प्रबंधक सिर्फ खिड़कियों को पेंट करने का एक तरीका है (यह सरल दृश्य है)।
इसलिए यदि आप सूक्ति लेते हैं, तो मेटासिटी विंडोज़ प्रबंधक हुआ करती थी, लेकिन अब इसे मुटर द्वारा बदल दिया गया है।
मिश्रण के साथ मुद्दा आधुनिक डेस्कटॉप वातावरण में है, डेस्कटॉप और विंडो मैनेजर अत्यधिक एक दूसरे से बंधे हैं। बहुत अधिक मिश्रण कम कार्यक्षमता में समाप्त हो सकता है।
जैसा कि उल्लेख $ DESKTOP_SESSION काम करता है लेकिन अगर आप अपने X11 सर्वर से पूछना चाहते हैं, तो आप ऐसा कर सकते हैं:
xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME
में विघटित होता है
xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"
जिसे विंडो मैनेजर द्वारा बनाई गई विंडो की आईडी मिलती है। चश्मा कहता है (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.
और फिर आप उक्त विंडो की WM_NAME संपत्ति के लिए पूछें।
WM_NAME किया जा रहा है:
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
विंडो मैनेजर के बारे में जानकारी देता है, डिस्प्ले मैनेजर के बारे में नहीं। यह हमेशा काम भी नहीं करता है; मेरे सिस्टम पर, वह प्रॉपर्टी एक विंडो आईडी पर सेट है, लेकिन विचाराधीन विंडो में नाम नहीं है।