जाँच के साथ मुख्य समस्या DESKTOP_SESSION
यह है कि यह डेस्कटॉप सत्र के बजाय प्रदर्शन प्रबंधक द्वारा निर्धारित किया गया है और विसंगतियों के अधीन है। के लिए lightdm
डेबियन पर, मूल्यों के अंतर्गत फ़ाइलें के नाम से आते हैं /usr/share/xsessions/
। DESKTOP_SESSION
डेस्कटॉप वातावरण को दर्शाता है यदि लॉग में एक विशिष्ट चयन किया जाता है, हालांकि lightdm-xsession
हमेशा डिफ़ॉल्ट सत्र का उपयोग किया जाता है।
GDMSESSION
एक और विकल्प है, लेकिन ऐसा लगता है कि एक समान विधेय है (यह DESKTOP_SESSION
मेरे लिए उतना ही मूल्य है)।
XDG_CURRENT_DESKTOP
एक अच्छे विकल्प की तरह दिखता है, हालांकि यह वर्तमान में एक्सडीजी मानक में नहीं है और इस तरह हमेशा लागू नहीं होता है। इसकी चर्चा के लिए यहाँ देखें । यह उत्तर अलग-अलग डिस्ट्रो / डेस्कटॉप के लिए अपने मूल्यों को दिखाता है, मैं यह भी पुष्टि कर सकता हूं कि यह वर्तमान में मेरे लिए एक्सएफसीई पर उपलब्ध नहीं है।
XDG_CURRENT_DESKTOP
मौजूदा के लिए उचित वापसी की कोशिश करने के लिए होगा XDG_DATA_DIRS
। बशर्ते डेस्कटॉप वातावरण के लिए डेटा फ़ाइलों को एक निर्देशिका में स्थापित किया गया है जिसका नाम असर है, यह दृष्टिकोण काम करना चाहिए। यह उम्मीद है कि सभी distros / डेस्कटॉप के लिए मामला होगा!
XFCE, केडीई और सूक्ति के लिए निम्नलिखित (GNU grep के साथ) परीक्षण:
echo "$XDG_DATA_DIRS" | grep -Eo 'xfce|kde|gnome'
POSIX संगत:
echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*/\1/'
जाँच के साथ संयोजन करने के लिए XDG_CURRENT_DESKTOP
:
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"