मैं लांचर में "लॉन्च" जावा प्रोग्राम के लिए डुप्लिकेट आइकन कैसे हटा सकता हूं?


45

नेटी के एकता लांचर में जावा प्रोग्राम (जैसे इंटेलीज आईडीईए और क्रैशप्लेन) लॉन्च करते समय, डुप्लिकेट आइकन दिखाए जाते हैं (छवि देखें)। IntelliJ के लिए मैंने Crashplan .desktop फ़ाइल के लिए .desktop फ़ाइल बनाई है, जो एप्लिकेशन के साथ आपूर्ति की जाती है। क्या ऐसी कोई चीज़ है जिसे .desktop फ़ाइलों (या कहीं और) में बदला जा सकता है जो इसे होने से रोक सकती है? मैं स्वयं एकता के लिए एक बग रिपोर्ट नहीं ढूँढ सका, लेकिन ग्नोम-डो / डॉक जैसे कार्यक्रमों में बग रिपोर्ट है और इसे रोकने के लिए अपने अनुप्रयोगों में आंतरिक परिवर्तन करना पड़ा।

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

कस्टम IntelliJ .desktop फ़ाइल

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/opt/idea/bin/idea128.png
Name[en_US]=IntelliJ IDEA
Exec=/opt/idea/bin/idea.sh
Name=IntelliJ IDEA
Icon=/opt/idea/bin/idea128.png
StartupNotify=true

Crashplan .desktop फ़ाइल प्रदान करते हैं

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=CrashPlan
Categories=;
Comment=CrashPlan Desktop UI
Comment[en_CA]=CrashPlan Desktop UI
Exec=/usr/local/crashplan/bin/CrashPlanDesktop
Icon=/usr/local/crashplan/skin/icon_app_64x64.png
Hidden=false
Terminal=false
Type=Application
GenericName[en_CA]=

1
जब एकता में Minecraft की शुरूआत मैं एक ऐसी ही समस्या का सामना
मार्को Ceppi

2
धन्यवाद भगवान समस्या मुख्यधारा के उपयोगकर्ताओं को प्रभावित करती है (यह केवल AWN और अन्य गोदी उत्साही के लिए एक समस्या हुआ करती थी) आखिरकार। मुझे आशा है कि जावा (और न केवल जावा) एप्लिकेशन डेवलपर्स अब इसे ठीक करने पर विचार करेंगे। वैसे, ग्रहण को ऐसी कोई समस्या नहीं है, जबकि मैंने MySQL कार्यक्षेत्र और OpenOffice.org के लिए इसे ठीक करने में कभी कामयाब नहीं हुआ (कोशिश की जब मैं AWN का उपयोग कर रहा था, इससे पहले कि लिब्रे ऑफिस सामने आया है)।
इवान

समस्या बेवकूफों की पहचान न करने वाले WM_CLASS नामों का उपयोग करने के बारे में है जहां तक ​​मुझे याद है।
इवान

अगर ऐसी कोई समस्या नहीं थी, तो मैं निश्चित रूप से एकता या एडब्ल्यूएन का उपयोग करने के लिए कहूंगा। लेकिन अब तक हर आवेदन पूरी तरह से उनका समर्थन नहीं करता है, मैं एक पारंपरिक टास्कबार पसंद करता हूं (क्योंकि मुझे आधे समाधानों से नफरत है)।
इवान

जवाबों:


47

अपने .desktop फ़ाइल में एक StartupWMClass स्ट्रिंग जोड़ें । xpropइस वर्ग को प्राप्त करने के लिए कमांड का उपयोग करें । उदाहरण के लिए :

$ xprop|grep WM_CLASS
 WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread"

$ cat /usr/share/applications/PHPStorm.desktop | grep StartupWM
StartupWMClass=sun-awt-X11-XFramePeer

इस थ्रेड में अधिक deatils (यह AWN के बारे में है, लेकिन एकता के लिए भी काम करता है)


1
यह क्रैशप्लान के लिए बहुत अच्छा काम करता है, StartupWMClass=CrashPlanलेकिन इंटेलीज को थोड़ा और समझाने की जरूरत है। मुझे इसे ठीक से काम करने के लिए ( blog.jteam.nl/2011/01/09/… ) से जानकारी का उपयोग करना पड़ा ।
टिम

IntelliJ को अपडेट करने के लिए एक छोटी सी बात के रूप में मैंने idea.vmoptions को संशोधित किया। idea.sh स्क्रिप्ट को सीधे नहीं। -javaagent:agent.jar=IntelliJ_IDEAफ़ाइल में जोड़ें ।
टिम

1
IntelliJ 11 के साथ Agent.jar अब आवश्यक नहीं है। StartupWMClass = जेटब्राइन्स-विचार
टिम

और jetbrains-idea-ceकम्युनिटी एडिशन के लिए। पुनश्च, धन्यवाद एक गुच्छा टिम, 451F।
सायेंसो

2
@ इवान: आपको दोनों का उपयोग करने की आवश्यकता नहीं है, आप दोनों में से किसी एक का उपयोग कर सकते हैं । तो अगर jetbrains-ideaअद्वितीय एक, एक तुम चाहते हो, इसका इस्तेमाल है बजाय कीsun-awt-X11-XFramePeer
MestreLion

9

Intellij Idea 11 के लिए Ubuntu 11.10 के तहत विचार की .desktop फ़ाइल को निम्नलिखित पंक्ति में जोड़ना आवश्यक है:

StartupWMClass=jetbrains-idea

4

मैं SQLDeveloper के लिए इसे ठीक करने में सक्षम था, जो एक जावा प्रोग्राम है:

Xprop का उपयोग करना (और फिर SQLDeveloper विंडो पर क्लिक करना), मुझे आउटपुट की निम्न पंक्ति मिली:

WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "oracle-ide-boot-Launcher"

ऊपर और https://bugs.launchpad.net/unity/+bug/757991 पर प्राप्त टिप्पणियों के आधार पर , मैंने अपनी स्थानीय sqldeveloper.desktop फ़ाइल में निम्न पंक्ति जोड़ी:

StartupWMClass=oracle-ide-boot-Launcher

1
SQLDeveloper संस्करण 4 में WM_CLASS "धूप में AWT-X11-XFramePeer" करने के लिए बदल गया है, "दैवज्ञ-आईडीई-OSGi-बूट-OracleIdeLauncher", इसलिए .desktop पैरामीटर के लिए बदल दिया जाना चाहिए: StartupWMClass = ओरेकल-आईडीई-OSGi-बूट-OracleIdeLauncher
पिस्सु

2

मैंने यहाँ 4.x और 3.x के लिए फिक्स का दस्तावेज दिया है

यह समाधान glx-dock उर्फ ​​काहिरा-गोदी के लिए है, लेकिन सभी कार्य सलाखों के लिए निर्भर करता है WM_CLASS

ग्रहण के मामले में, लॉन्च एक दो चरण की प्रक्रिया है।

        यहाँ छवि विवरण दर्ज करें

मूल रूप से, आपको जो करने की आवश्यकता है वह आपके ग्रहण संस्करण पर लागू होने वाले ग्रहण ब्रांडिंग plugin.xml को पहचानने और application nameसंपत्ति को संशोधित करने के लिए है। जब कार्यक्षेत्र मुख्य विंडो बनाई जाती है, तो Jface SWT को कॉल करेगा Display.setNameऔर यह आपको WM_CLASS सेट करेगा। यदि यह आपके लॉन्चर के लिए घोषित WM_CLASS है, तो चल रहे इंस्टेंस उनके डॉक लॉन्चर को ढूंढेंगे।

eclipse -cleanपहली बार में करने के लिए मत भूलना ।

के माध्यम से टैबिंग भी बहुत सुधार हुआ है।

यहाँ छवि विवरण दर्ज करें


0

IntelliJ IDEA एक स्क्रिप्ट ($ IDEA_HOME / bin / idea.sh) द्वारा शुरू किया गया है। जब इसके लॉन्चर पर क्लिक किया जाता है, तो स्क्रिप्ट निष्पादित होती है, जो एक जावा निष्पादन योग्य शुरू होती है और तुरंत बाहर निकल जाती है। एकता ने नोटिस किया कि आपके द्वारा शुरू किया गया आवेदन (स्क्रिप्ट) पहले से ही बाहर हो गया है - यही कारण है कि पहले आईडिया आइकन पर कोई संकेतक नहीं है। हालांकि, इस समय एक अन्य (लॉन्चर द्वारा शुरू किया गया निष्पादन योग्य) एप्लिकेशन चल रहा है - और इसीलिए दूसरा आईडिया आइकन दिखाया गया है।

मुझे उम्मीद है कि इस व्यवहार के लिए जल्द ही लागू किया जाएगा - लेकिन यह बहुत सीधा नहीं है। इसमें उन खिड़कियों और लॉन्चरों के बीच हाथ से बनाए जाने वाले सूची संघों को शामिल करना होगा, जिनके साथ उन्हें संबद्ध होना चाहिए।


0

CrashPlan के लिए, आप अपनी ऐप फ़ाइल CrashPlan.desktop को / usr / share / एप्लिकेशन पर ले जाने का प्रयास कर सकते हैं। केवल ऐप जो वहां रहते हैं, उन्हें लॉन्चर में लॉक किया जा सकता है।

sudo mv ~/Desktop/CrashPlan.desktop /usr/share/applications/.

फिर क्रैश का उपयोग करके CrashPlan चलाने का प्रयास करें।

हो सकता है कि आप IntelliJ IDEA के साथ कुछ ऐसा ही कर पाएं, लेकिन चूंकि यह एक स्क्रिप्ट चला रहा है, मुझे यकीन नहीं है कि यह सही ढंग से काम करेगा।


मेरे पास दोनों .desktop फाइलें ~ / .लोकल / शेयर / एप्लिकेशन में हैं और इन्हें लॉन्चर में लॉक करने में कोई समस्या नहीं है। मैं मान रहा हूं कि आपका मतलब है कि लॉन्चर से लॉन्च होने के लिए उपलब्ध है, लेकिन जब आप कहते हैं कि अभी तक लॉन्च नहीं हुआ है ...
टिम

हम्म। मैं उन्हें लॉन्चर में जगह नहीं दे पा रहा हूं। मैंने अल्केर्ट (मेनू संपादक) के साथ मेरा बनाया। शायद यह इसलिए है क्योंकि मेरे पास ~ / .Local कहीं और से जुड़ा हुआ है ... क्या आपके ऐप्स रनिंग ट्राइएंगल (लेफ्ट साइड) और एक्टिव ट्रायएंगल (राइट साइड) दिखाते हैं?
इडबरी

आइकन के "लॉन्च" संस्करण के लिए, हां। आप पहले शॉट में रनिंग त्रिकोण देख सकते हैं। मैंने कुछ और शोध किए और मुझे लगता है कि मेरे पास डुप्लिकेट आइकनों के लिए काम करने का तरीका है। यहाँ एक उत्तर पोस्ट करेंगे।
टिम

@ 451F ने मुझे जवाब में हरा दिया, मैंने अपनी टिप्पणियों में उनके जवाब में थोड़ा सा जोड़ा कि इंटेलीजे को बेहतर काम करने के लिए कैसे प्राप्त किया जाए।
टिम

0

अन्य उत्तरों में से किसी ने भी मेरे लिए काम नहीं किया, लेकिन अंत में मुझे वास्तव में एक सरल समाधान मिला।

Intellij-Idea खोलें, और शीर्ष पट्टी पर टूल ड्रॉपडाउन मेनू ढूंढें । फिर, डेस्कटॉप एंट्री बटन बनाएँ का चयन करें। यह आपके .local/share/applicationsफ़ोल्डर में एक ठीक से काम कर रहे .desktop प्रविष्टि बनाएगा , जिसे आपके द्वारा उपयोग किए जा रहे डेस्कटॉप वातावरण द्वारा पहचाना जाना चाहिए। यह डुप्लिकेट आइकन नहीं बनाता है, और यदि आप चाहें तो आप आइकन को बदल भी सकते हैं।

दुर्भाग्य से, nosplashतर्क का उपयोग करने से डुप्लिकेट आइकन समस्या वापस आ जाती है, इसलिए मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए।


0

Ubuntu 17.04 के तहत IntelliJ IDEA 2017.2.5 स्थापित करने के बाद (Numix आइकनों के साथ) मुझे प्रोग्राम की -desktop फ़ाइल में लाइन StartupWMClass=jetbrains-ideaको बदलना पड़ा StartupWMClass=jetbrains-idea-ceताकि डुप्लिकेट आइकन गायब हो जाए।

मुझे लगता है कि "CE" सामुदायिक संस्करण के लिए है जो मेरे पास है, इसलिए मुझे नहीं पता कि .desktop फ़ाइल में इस संपत्ति का मूल्य मूल रूप से "CE" प्रत्यय क्यों नहीं था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.