wmctrlকমান্ড টগলটি ব্যবহার করার চেষ্টা করেছি , তবে এটি আমার উবুন্টু সেটআপে কার্যকর হয়নি। টগল টগল চালু হবে, কিন্তু টগল বন্ধ না। (আমি মনে করি এটি সম্ভবত কারণ আমি জিনোম ডেস্কটপ এনভায়রনমেন্ট ব্যবহার করছি, যার wmctrlউপরে সামান্য ভাঙ্গা আফ্রিক))
যাইহোক, ব্যাশে সঠিক কোড লেখার জন্য অনেক গবেষণা করার পরে এবং কাজ করার পরে আমি একটি একক কমান্ড তৈরি করেছি wmctrlযা বর্তমান জিনোম ডেস্কটপে কার্যকরভাবে 'সর্বদা শীর্ষে' টগল করতে লজিকের একটি স্তরের মধ্যে কমান্ড ব্যবহার করে । আমি এই উত্তরটি জিজ্ঞাসা ইউনিক্স / লিনাক্সে পোস্ট করেছি, তবে ভেবেছিলাম যে কারও যদি একই সমস্যা হয় তবে আমি এটি এখানেও পোস্ট করব।
আদেশটি এখানে:
bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'
এটি ব্যবহার করে সক্রিয় উইন্ডো রাষ্ট্রের সম্পত্তি "_NET_WM_STATE" পরীক্ষা করে xpropsএবং এতে যদি "ABOVE" লেখা থাকে তবে তার অর্থ 'সর্বদা উপরে থাকা' বিকল্পটি সক্রিয় রয়েছে। তারপরে এটি wmctrlপ্যারামিটার addবা removeউপযুক্ত হিসাবে কমান্ডটি চালায় ।
কমান্ড ব্রেকডাউন (প্রতিটি কমান্ড পরের মধ্যে ■in োকানো হয়, স্থানধারককে প্রতিস্থাপন করে ):
সক্রিয় উইন্ডো আইডি পান:
xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
xpropআইডি ব্যবহার করা থেকে উইন্ডো স্থিতি পান :
xprop -id $(■) _NET_WM_STATE
রাষ্ট্রটিতে "ABOVE" রয়েছে কিনা তা পরীক্ষা করে উইন্ডোটি "সর্বদা শীর্ষে" সেট থাকে:
[[ $(■) =~ "ABOVE" ]]
সত্য হলে "মুছে ফেলুন" ফিরিয়ে দিন, অন্যথায় "যুক্ত করুন":
■ && echo "remove" || echo "add"
wmctrlপ্যারামিটার হিসাবে প্রত্যাশিত মানটি ব্যবহার করে কমান্ড চালান :
wmctrl -r :ACTIVE: -b $(■),above
পুরো জিনিসটি প্রেরণ করুন bashযাতে আপনি কমান্ড প্রতিস্থাপন ${ ... }, বাশ বুলিয়ান মূল্যায়ন [[ ... ]]এবং রেজেক্স ম্যাচ অপারেটরটি ব্যবহার করতে পারেন =~:
bash -c '■'
বিশেষ করে এই শেষ পদক্ষেপটি আমাকে বের করতে খুব দীর্ঘ সময় নিয়েছিল। আমি যতক্ষণ না বুঝতে পেরেছি যে কীবোর্ড শর্টকাটগুলি ডিফল্টরূপে ব্যাশে চলছে না, ততক্ষণ কমান্ডগুলি কেন পরীক্ষা করে নিচ্ছিলাম তা কন্ডোলটিতে কাজ করছে তবে কীবোর্ড শর্টকাট হিসাবে সরাসরি চালানোর সময় নিঃশব্দে ব্যর্থ হয়েছিলাম আমার কিছুই ধারণা ছিল না। এটি আমাকে যুগ যুগ ধরে দেয়াল পর্যন্ত উড়িয়ে দিয়েছে!
দ্রষ্টব্য: আপনি যে কমান্ডটি বাশ পাঠিয়েছেন তার আশেপাশে আপনার উদ্ধৃতিগুলির প্রয়োজন রয়েছে, তাই কমান্ডটি লেখার সময় আমাকে সতর্কতা অবলম্বন করা উচিত ছিল যে আমি কখনই একাধিক স্তরের (ডাবল কোট ব্যবহার করে) গভীরভাবে যাইনি। কোটগুলিতে স্ট্রিংগুলির আরও কোনও বাসা বাঁধার জন্য উদ্ধৃতিগুলি এড়ানোর জন্য প্রচুর বিভ্রান্তিকর ব্যাকস্ল্যাশগুলির প্রয়োজন হবে।