DESKTOP_SESSION
এটি যাচাইয়ের মূল সমস্যাটি হ'ল এটি ডেস্কটপ সেশনের চেয়ে ডিসপ্লে ম্যানেজার দ্বারা সেট করা এবং অসঙ্গতিগুলির বিষয়। জন্য lightdm
ডেবিয়ান উপর, মান অধীনে ফাইলের নাম থেকে আসা /usr/share/xsessions/
। DESKTOP_SESSION
লগ-ইন করার সময় যদি একটি নির্দিষ্ট নির্বাচন করা হয় তবে ডেস্কটপ পরিবেশকে প্রতিফলিত করে তবে lightdm-xsession
সর্বদা ডিফল্ট সেশনটি ব্যবহৃত হয়।
GDMSESSION
অন্য একটি বিকল্প, তবে এটি একই রকম দুর্দশা বলে মনে হচ্ছে (এটি DESKTOP_SESSION
আমার জন্য একই মান )।
XDG_CURRENT_DESKTOP
দেখতে একটি দুর্দান্ত পছন্দ বলে মনে হচ্ছে, তবে এটি বর্তমানে এক্সডিজি স্ট্যান্ডার্ডে নেই এবং এভাবে সর্বদা বাস্তবায়িত হয় না। এটির একটি আলোচনার জন্য এখানে দেখুন । এই উত্তরটি বিভিন্ন ডিস্ট্রো / ডেস্কটপগুলির জন্য এর মানগুলি দেখায়, আমি এটিও নিশ্চিত করতে পারি যে এটি বর্তমানে এক্সএফসিই-তে আমার জন্য উপলভ্য নয়।
XDG_CURRENT_DESKTOP
বিদ্যমান না থাকার জন্য যুক্তিসঙ্গত ফলব্যাক চেষ্টা করা হবে XDG_DATA_DIRS
। প্রদত্ত ডেস্কটপ পরিবেশের জন্য ডেটা ফাইলগুলির নামের একটি ডিরেক্টরিতে ইনস্টল করা আছে, এই পদ্ধতির কাজ করা উচিত। আশা করা যায় যে সমস্ত ডিস্ট্রো / ডেস্কটপগুলির ক্ষেত্রে এটি ঘটবে!
এক্সএফসিইসি, কেডিএ এবং জিনোমের জন্য নিম্নলিখিত (জিএনইউ গ্রেপ সহ) পরীক্ষা:
echo "$XDG_DATA_DIRS" | grep -Eo 'xfce|kde|gnome'
পসিক্স সামঞ্জস্যপূর্ণ:
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"