স্টার্টআপ ডাব্লুএমক্লাসের জন্য একাধিক মান সেট করুন (ইউনিটিতে একই লঞ্চারের অধীনে গ্রুপে)


20

এটি জেনেরিক সমস্যার একটি নির্দিষ্ট উদাহরণ আমি এখনও কোনও সমাধান খুঁজে পাচ্ছি না।

আমার একটি প্রোগ্রাম রয়েছে (অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইস ম্যানেজার) যা নিজের মধ্যে থেকেই 'সাব-প্রোগ্রাম' (যথা ইমুলেটর বা ভার্চুয়াল ডিভাইস) চালু করে (অন্য কোথা থেকেও চালু করা যেতে পারে)। আমি চাই যে এই প্রোগ্রামগুলির EITHER এর কোনও উদাহরণ একই ইউনিটি আইকনের অধীনে গ্রুপবদ্ধ করা হোক।

.desktopএটি চেষ্টা করার জন্য এবং এটি সম্পাদন করার জন্য আমি একটি ফাইল তৈরি করেছি তবে কীভাবে এটি করা যায় তা ঠিক জানি না। ডেস্কটপ ফাইলটি নিম্নরূপ:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Android Virtual Device
Icon=/home/ben/.icons/android.svg
Exec=/home/ben/usr/bin/android avd
StartupWMClass=Android Virtual Device Manager

আমি যা বুঝতে StartupWMClassপেরেছি তা থেকে এটি সঠিকভাবে অর্জনের জন্য আমার কী সেট করা দরকার। আমি xprop WM_CLASSরেসিস্টিভ উইন্ডো ব্যবহার করে দুটি শ্রেণীর নাম ('অ্যান্ড্রয়েড ভার্চুয়াল ডিভাইস ম্যানেজার' এবং 'এমুলেটর 64 -আর্ম') পেয়েছি। উভয়ই স্বতন্ত্রভাবে কাজ করে (প্রবর্তক আইকনটি কোনওভাবেই চালু করা হোক না কেন প্রোগ্রামটির সাথে এটি সঠিকভাবে সংযুক্ত) তবে আমি এটি উভয়ের পক্ষে কাজ করতে পারি না।

আমি ধরে নিচ্ছি যে একরকমের জন্য আমার দুটি মান নির্ধারণ করা দরকার StartupWMClassতবে এটি সঠিকভাবে করতে সক্ষম হয়নি (বা এটি একটি বৈধ ক্রিয়াকলাপ কিনা তা জানি)। আমি চেষ্টা করেছি, এনভায়রনমেন্ট ভেরিয়েবল, কমা বিচ্ছিন্ন, কোট ইত্যাদির মতো কোলন পৃথক হয়ে গেছে এবং অফিসিয়াল ডকুমেন্টেশনে আমি কোনও ইঙ্গিত পাই না ।

কোনও পরামর্শ?

সম্পাদনা করুন:

আরেকটি, আরও পেডেন্টিক তবে সম্ভবত আরও সনাক্তযোগ্য উদাহরণ রয়েছে Matlab। আমি 2013a চালিয়ে যাচ্ছি এবং স্প্ল্যাশ স্ক্রিন যা প্রারম্ভিকভাবে প্রদর্শিত হয় এবং প্রোগ্রামটির সম্পূর্ণ আলাদা WM_CLASSমান রয়েছে। এর অর্থ, আমি যখন StartupWMClass=com-mathworks-util-PostVMInitএটিতে আমার লঞ্চারটি ক্লিক করি তখন স্প্ল্যাশ স্ক্রিনটি একটি ভিন্ন (ডিফল্ট অজানা) Unityআইকন নিয়ে আসে, যখন বাকী অংশগুলি আমার লঞ্চারের নীচে গোষ্ঠীভূত হয়।

xprop WMCLASSপ্রথম স্প্ল্যাশ স্ক্রিনটি ব্যবহার করে এবং ক্লিক করে, তারপরে একটি সক্রিয় Matlabসেশনের সাথে পুনরাবৃত্তি করে আমি নিম্নলিখিত টার্মিনাল আউটপুটটি পাই:

ben@ben-OptiPlex-9010:~$ xprop WM_CLASS
WM_CLASS(STRING) = "MATLAB", "MATLAB"
ben@ben-OptiPlex-9010:~$ xprop WM_CLASS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"

আমি যদি লাইন দিয়ে কিছু নির্দিষ্ট করতে পারি:

StartupWMClass=com-mathworks-util-PostVMInit&&MATLAB

এটি নিখুঁতভাবে কাজ করবে (যেহেতু উভয়ই পৃথকভাবে কাজ করে) তবে আমার সিনট্যাক্স সম্পর্কে ধারণা নেই, এমনকি যদি এটি বিদ্যমান থাকে। আমি এখন পর্যন্ত জানি না যে আমি চেষ্টা করেছি এতদূর কাজ করে নি।

যে কোনও সহায়তা বা একটি নির্দিষ্ট উত্তর যে কোনও উপায়ে দুর্দান্ত হবে কারণ আমি বিশ্বাস করি এটি একটি ভাল কার্যকারী ডেস্কটপের একটি মৌলিক উপাদান।


1
আপনি কি ড্রয়ারদের থেকে কিছু ইঙ্গিত পেতে সক্ষম হবেন ?

1
আমি Drawersসেই লিঙ্কটির ভিডিওগুলি দেখেছি এবং তারা যা দেখায় তা থেকে এটি লিঙ্কগুলিকে কেবলমাত্র ভাগ করে দেয়, আপনি যখন কোনও উপ আইটেম ক্লিক করেন তখন এটি Unityলঞ্চটিতে তার নিজস্ব আইকন দিয়ে তৈরি করা হয় যা আমি থামানোর চেষ্টা করছি
বিটি

উত্তর:


8

আমার দ্বিতীয় স্টারক্রাফ্টের একই সমস্যা থ্রো প্লেলনলিনাক্স চালু করেছে। প্রথমে একটি অ্যাপ্লিকেশন লঞ্চার রয়েছে:

  • (WM_CLASS(STRING) = "Blizzard Launcher.exe", "Wine") এবং তারপরে গেমটি নিজেই:

  • (WM_CLASS(STRING) = "SC2.exe", "Wine")

আমার ধারণা, ওয়াইন বাইনারি এক্সিকিউটেবলের সাথে ক্লাস স্থাপন করছে।

আমার বাম্ফ কোড (bamf_matcher.c, _োকানো_ডেস্কটপ_ফाइल_ক্লাস_ইন্টো_সারণযোগ্য () পদ্ধতি) এ এক নজর ছিল:

  • একটি মানচিত্র রয়েছে যা একটি ডেস্কটপ ফাইল এবং এক এবং একমাত্র শ্রেণীর মধ্যে সংযোগ তৈরি করে,
  • কী-স্টার্টআপ ডাব্লুএম ক্লাসটি g_key_file_get_string () দিয়ে পড়া হয় যা স্ট্রিংগুলির একটি তালিকা ফেরত দেওয়ার জন্য ডিজাইন করা হয়নি,
  • g_key_file_get_string_list () এটি করতে পারে তবে বাম্ফ বিকাশকারীরা একক ডেস্কটপ ফাইলে একাধিক ক্লাস সংযুক্ত করতে সক্ষম করার জন্য কাঠামোটি ডিজাইন করেনি।

আমার ক্ষেত্রে আমি একই কীগুলির সাথে 2 ডেস্কটপ ফাইল তৈরি করে প্রতারক করি তবে স্টার্টআপ ডাব্লুএমসি ক্লাস হয়। এটি নিখুঁত নয় কারণ লঞ্চারে থাকা অবস্থায় আমার কাছে এখনও 2 টি ইউনি আইকন রয়েছে তবে গুরুত্বপূর্ণ বিষয়টি আমি কেন জানি :-)।


এটি খুব আশাব্যঞ্জক দেখাচ্ছে, আমি চেষ্টা করে তাদের কাছ থেকে নিশ্চয়তা পেতে একটি প্রশ্ন জিজ্ঞাসা করেছি , তবে এখনও পর্যন্ত কোনও সাড়া পাওয়া যায়নি ...
বিটি

1
এটি মোটেই উত্তর নয়। উত্তরটি "আপনি পারবেন না" কারণ ডেস্কটপ ফাইলের সুনির্দিষ্টকরণটি এই মানটিকে একক স্ট্রিং করে এবং স্ট্রিংগুলির তালিকা তৈরি করে না (এজন্য বামফডেমন get_string () ব্যবহার করে এবং সেই মানটির জন্য get_string_list () ব্যবহার করে না)।
dobey

1

আমি জানি এই প্রশ্নটি আসলেই পুরানো, তবে একই সমস্যাটি কাটিয়ে যাওয়ার পরে, আমি মনে করি অবশেষে আমি এটির জন্য একটি কার্যনির্বাহ তৈরি করেছি এবং এই সমস্যাটির যে কারও সাথে ভাগ করে নেওয়ার সিদ্ধান্ত নিয়েছি:

যেহেতু আমরা একটি একক .ডেস্কটপ ফাইলের জন্য একাধিক ডাব্লুএমক্লাস সেট করতে পারি না, কেন সমস্ত উইন্ডোগুলিকে একটি ডাব্লুএমক্লাসে সেট করবেন না?

আমরা (একথাও ঠিক যে, প্রতিস্থাপন ভালো কিছু করতে পারি না Window 1, Window 2এবং potatoesআপনার উইন্ডোজ নাম এবং আকাঙ্ক্ষিত WMClass সহ):

xprop -name "Window 1" -f WM_CLASS 8s -set WM_CLASS "potatoes"

xprop -name "Window 2" -f WM_CLASS 8s -set WM_CLASS "potatoes"

এবং .ডেস্কটপ ফাইলটিতে আমরা এটি করতে পারি: StartupWMClass=potatoes

Tadam! সমস্ত উইন্ডো এখন গ্রুপ করা হয়েছে।
তবে ওহে, আমরা প্রোগ্রামটি প্রতিবার খোলা থাকলে ম্যানুয়ালি এটি করছি? অবশ্যই না.

আমরা কেবল গিয়ে বাশ স্ক্রিপ্ট তৈরি করতে পারি যা স্বয়ংক্রিয়ভাবে প্রতি অর্ধেক সেকেন্ডে এটি করে:

while true
do
    xprop -name "Window 1" -f WM_CLASS 8s -set WM_CLASS "potatoes"
    xprop -name "Window 2" -f WM_CLASS 8s -set WM_CLASS "potatoes"
    sleep 0.5
done

এবং অবশেষে, ওএস প্রতিবার শুরু হওয়ার পরে চালানোর জন্য আমরা তৈরি করা .sh সেট করুন: স্ক্রিনশট

আশা করি আমার উত্তর যে কেউ এই প্রশ্নটি ব্রাউজ করছে তার পক্ষে সহায়ক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.