जब एप्लिकेशन लॉन्च किया जाता है तो आइकन गायब हो जाता है


12

मैंने एक एप्लिकेशन लॉन्चर बनाया है, /usr/share/applicationsजिसमें लॉन्च किया गया है। फ़ाइल एक आइकन नाम निर्दिष्ट करती है और मैंने इसमें आइकन जोड़े हैं:

/usr/share/icons/HighContrast/48x48/apps
/usr/share/icons/HighContrast/22x22/apps
/usr/share/icons/HighContrast/256x256/apps
/usr/share/icons/HighContrast/32x32/apps
/usr/share/icons/HighContrast/scalable/apps-extra
/usr/share/icons/HighContrast/24x24/apps
/usr/share/icons/HighContrast/16x16/apps
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/16x16/apps

मैं फिर लॉन्चर को टास्कबार पर ड्रग देता हूं और सही लोगो वाला लॉन्चर टास्कबार में दिखाई देता है। हालांकि, जब मैं कार्य शुरू करता हूं, तो टास्कबार में एक नया आइकन बनाया जाता है, केंद्र में एक प्रश्न चिह्न वाला एक वर्ग।

मुझे कौन से आइकन की आवश्यकता है और कहां, ताकि टास्कबार एप्लिकेशन के सही आइकन को लॉन्च होने पर प्रदर्शित करे?

.Desktop फ़ाइल सामग्री:

[डेस्कटॉप एंट्री]
संस्करण = 1.0
टर्मिनल = false
चिह्न = mswindows
प्रकार = आवेदन
श्रेणियाँ = नेटवर्क;
Exec = rdesktop win7sared1 -g 1680x1000

नाम = win7shared1
GenericName = rdesktop
टिप्पणी = विंडोज़ डेस्कटॉप खोलें

कीवर्ड = विंडोज
StartupNotify = false

जवाबों:


15

आपकी समस्या का समाधान करने के लिए सबसे अधिक संभवतया निम्नलिखित कार्य करना होगा:

  1. एप्लिकेशन खोलें
  2. जब यह चल रहा हो, तो एक टर्मिनल खोलें और टाइप करें:

    xprop WM_CLASS
    
  3. इसके बाद ओपन एप्लीकेशन विंडो पर क्लिक करें।

  4. आउटपुट जैसा लगेगा (उदाहरण gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. geditअपनी .desktopफ़ाइल में एक पंक्ति लिखने के लिए पहले भाग का उपयोग करें (इस स्थिति में होगा ) :

    StartupWMClass=<string>
    

    (की जगह <string>की वास्तविक (पहला भाग) के साथ के उत्पादन में xprop WM_CLASS, उदाहरण के लिए StartupWMClass=gedit)

अब फिर से प्रयास करें (आपको लॉग आउट / इन करना पड़ सकता है), सबसे अधिक संभावना है कि एप्लिकेशन अपने स्वयं के आइकन के तहत लॉन्चर में दिखाई देगा।

व्याख्या

  • जब कोई एप्लिकेशन लॉन्चर ( .desktopफ़ाइल) से सही तरीके से शुरू होता है , लेकिन एक अन्य आइकन केवल जेनेरिक आइकन (प्रश्न चिह्न) के साथ दिखाई देता है , तो सबसे अधिक संभावना है कि एप्लिकेशन विंडो और लॉन्चर किसी कारण से कनेक्ट नहीं होता है, और लॉन्चर नहीं होता है एप्लिकेशन की विंडो को "उसके" के रूप में पहचानें। यह अक्सर ऐसा होता है जब कोई स्क्रिप्ट या गैर-मानक एप्लिकेशन (-कैंड) का उपयोग किया जाता है। उन मामलों में StartupWMClass=लाइन अक्सर समाधान है।

धन्यवाद जैकब। इससे समस्या का समाधान हो गया। रिकॉर्ड के लिए, WM_CLASS स्ट्रिंग "रडस्कटॉप", "रेडस्कोप" थी।
क्लेटन

@ क्लेटन सही, खुशी से यह काम किया।
जैकब वल्जिम

1
आपका चरण 2 कम किया जा सकता है, क्योंकि xprop आपको उस परमाणु से गुजरने देता है जिसे आप वापस चाहते हैं, चलाना xprop WM_CLASSपर्याप्त है
johndrinkwater

@ जोंड्रिंकवाटर बिल्कुल, संकेत के लिए धन्यवाद। यह एक साल पहले की तुलना में अधिक है, 14 महीने से अधिक ऐसा है जैसे किसी अन्य व्यक्ति ने इसे लिखा है :)। संपादित करेंगे ...
याकूब Vlijm

@ जकोब- vlijm :) एक अजीब xprop व्यवहार पर शोध करते समय बस भर में आया
johndrinkwater

2

मेरे लिए xprop|grep WM_CLASSदिया WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(मैं अजगर के लिए pycharm के साथ इस मुद्दे पर था)

यह था sun-awt-X11-XFramePeerकि मैं अपने .desktop फ़ाइल (उद्धरण के बिना) में स्ट्रिंग के रूप में की जरूरत है - धन्यवाद!


मैंने अपना जोड़ा StartupWMClass=sun-awt-X11-XFramePeerऔर कुछ नहीं हुआ! क्या .desktopफाइल होम फोल्डर में स्थित है?
एनॉन

0

आइकन को सही जगह पर रखने के बाद, आपको बस xserver (लॉगआउट और लॉगिन बैक) को पुनरारंभ करना चाहिए।
आइकन कैश को अपडेट करने का प्रयास करें (बस टर्मिनल में नीचे कोड पेस्ट करें):

for d in ~/.icons/*; do gtk-update-icon-cache -f $d; done
for d in /usr/share/icons/*; do sudo gtk-update-icon-cache -f $d; done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.