ฉันจะลบไอคอนที่ซ้ำกันสำหรับโปรแกรม Java“ เรียกใช้” ในตัวเรียกใช้งานได้อย่างไร?


45

เมื่อเรียกใช้โปรแกรมจาวา (เช่น IntelliJ IDEA และ Crashplan) ในตัวเรียกใช้งาน Unity ของ Natty ไอคอนที่ซ้ำกันจะแสดงขึ้น (ดูภาพ) สำหรับ IntelliJ ฉันสร้างไฟล์ .desktop สำหรับ Crashplan ไฟล์ .desktop นั้นมาพร้อมกับแอปพลิเคชัน มีบางสิ่งที่สามารถเปลี่ยนแปลงได้ในไฟล์ .desktop (หรือที่อื่น ๆ ) ที่สามารถป้องกันสิ่งนี้ได้หรือไม่? ฉันไม่พบรายงานข้อผิดพลาดเพื่อความเป็นเอกภาพ แต่โปรแกรมอย่าง Gnome-Do / Docky มีรายงานข้อผิดพลาด และต้องทำการเปลี่ยนแปลงภายในแอปพลิเคชันเพื่อป้องกันสิ่งนี้

ไอคอนที่ซ้ำกันในภาพนี้ไอคอนที่ 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 ใน Unity
Marco Ceppi

2
ขอบคุณพระเจ้าที่ปัญหาส่งผลกระทบต่อผู้ใช้หลัก (ซึ่งเคยเป็นปัญหาสำหรับ AWN และผู้ที่ชื่นชอบท่าอื่น ๆ เท่านั้น) ในที่สุด ฉันหวังว่านักพัฒนาแอปพลิเคชั่น Java (และไม่เพียง แต่ Java) จะพิจารณาแก้ไขในตอนนี้ อย่างไรก็ตามดูเหมือนว่า Eclipse จะไม่มีปัญหาเช่นนี้ในขณะที่ฉันไม่เคยจัดการกับ MySQL Workbench และ OpenOffice.org (พยายามเมื่อฉันใช้ AWN ก่อนที่ LibreOffice จะเกิดขึ้น)
Ivan

ปัญหาเกี่ยวกับแอปพลิเคชันที่ใช้ชื่อ WM_CLASS ที่ไม่ระบุตัวตนเท่าที่ฉันจำได้
Ivan

หากไม่มีปัญหาดังกล่าวฉันจะใช้ Unity หรือ AWN อย่างแน่นอน แต่ตราบใดที่ไม่ใช่ทุกแอปพลิเคชันรองรับพวกเขาอย่างสมบูรณ์ฉันชอบทาสก์บาร์แบบดั้งเดิม (เพราะฉันเกลียดการแก้ปัญหาครึ่งทาง)
Ivan

คำตอบ:


47

เพิ่มสตริงStartupWMClassลงในไฟล์. desktop ของคุณ ใช้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
สิ่งนี้ใช้งานได้ดีสำหรับ Crashplan StartupWMClass=CrashPlanแต่ IntelliJ ต้องการความเชื่อมั่นเพิ่มขึ้นเล็กน้อย ฉันต้องใช้ข้อมูลจากสิ่งนี้ ( blog.jteam.nl/2011/01/09/… ) เพื่อให้มันทำงานได้อย่างถูกต้อง
ทิม

เล็ก ๆ น้อย ๆ ในการอัปเดต IntelliJ ฉันได้ปรับเปลี่ยนไอเท็ม idea.vmoptions ไม่ใช่สคริปต์ idea.sh โดยตรง เพิ่ม-javaagent:agent.jar=IntelliJ_IDEAไปยังไฟล์
ทิม

1
ด้วย IntelliJ 11 ทำให้ agent.jar ไม่จำเป็นอีกต่อไป StartupWMClass = jetbrains-idea
ทิม

และjetbrains-idea-ceสำหรับ Community Edition ป.ล. ขอบคุณมากทิม 451F
Synesso

2
@Ivan: คุณไม่จำเป็นต้องใช้ทั้งคู่คุณสามารถใช้อย่างใดอย่างหนึ่งได้ ดังนั้นถ้าjetbrains-ideaเป็นคนที่ไม่ซ้ำกันที่คุณต้องการใช้มันแทนของsun-awt-X11-XFramePeer
MestreLion

9

สำหรับ Intellij Idea 11 ภายใต้ Ubuntu 11.10 จำเป็นต้องเพิ่มที่ไฟล์ .desktop ของแนวคิดดังต่อไปนี้:

StartupWMClass=jetbrains-idea

4

ฉันสามารถแก้ไขสิ่งนี้สำหรับ SQLDeveloper ซึ่งเป็นโปรแกรม java:

ใช้ 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 เปลี่ยนเป็น "sun-awt-X11-XFramePeer", "oracle-ide-osgi-boot-OracleIdeLauncher" ดังนั้นพารามิเตอร์. desktop ควรเปลี่ยนเป็น: StartupWMClass = oracle-ide-osgi-boot-OracleIdeLauncher
Pisu

2

ฉันได้รับการบันทึกการแก้ไขสำหรับ Eclipse 4.x และ 3.x ที่นี่

วิธีการแก้ปัญหานี้สำหรับ GLX ท่าเรือ aka ไคโรท่าเรือ WM_CLASSแต่ทำงานสำหรับทุกงานบาร์อาศัย

ในกรณีของ eclipse การเปิดใช้เป็นกระบวนการสองขั้นตอนเช่นกัน

        ป้อนคำอธิบายรูปภาพที่นี่

โดยทั่วไปสิ่งที่คุณต้องทำคือการระบุ Eclipse plugining plugin.xml ที่ใช้กับเวอร์ชัน Eclipse ของคุณและแก้ไขapplication nameคุณสมบัติ เมื่อหน้าต่างหลักของ workbench ถูกสร้างขึ้น Jface จะเรียก SWT Display.setNameและสิ่งนี้จะตั้งค่าให้คุณเป็น WM_CLASS หากนี่คือประกาศ WM_CLASS สำหรับตัวเรียกใช้ของคุณการใช้งานอินสแตนซ์จะค้นหาตัวเรียกใช้งานแท่นวาง

อย่าลืมที่จะทำeclipse -cleanในครั้งแรก

การแท็บผ่านยังได้รับการปรับปรุงให้ดีขึ้นมาก

ป้อนคำอธิบายรูปภาพที่นี่


0

IntelliJ IDEA เริ่มต้นโดยสคริปต์ ($ IDEA_HOME / bin / idea.sh) เมื่อคลิกที่ตัวเรียกใช้งานสคริปต์จะถูกเรียกใช้งานซึ่งจะเริ่มต้นการทำงานของจาวาและสามารถออกได้ทันที เอกภาพแจ้งว่าแอปพลิเคชันที่คุณเริ่ม (สคริปต์) ได้ออกไปแล้ว - นั่นเป็นสาเหตุที่ไม่มีตัวบ่งชี้บนไอคอน IDEA แรก อย่างไรก็ตามมีแอปพลิเคชั่นอื่น (จากตัวเรียกทำงานที่เริ่มต้นโดยตัวเรียกใช้งาน) ที่ทำงานอยู่ในขณะนี้และนั่นเป็นสาเหตุที่ไอคอนไอเดียที่สองแสดงขึ้น

ฉันหวังว่าการแก้ไขสำหรับพฤติกรรมนี้จะถูกนำไปใช้ในเร็ว ๆ นี้ - แต่มันก็ไม่ได้ตรงไปตรงมามาก มันจะต้องเกี่ยวข้องกับการเชื่อมโยงรายการบำรุงรักษามือระหว่าง windows และ launchers ที่พวกเขาควรจะเกี่ยวข้องกับ


0

สำหรับ CrashPlan คุณสามารถลองย้ายไฟล์แอพ CrashPlan.desktop ไปที่ / usr / share / applications เฉพาะแอพที่มีอยู่เท่านั้นที่สามารถล็อคเข้าสู่ตัวเรียกใช้งานได้

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

จากนั้นลองใช้เส้นประเพื่อเรียกใช้ CrashPlan

คุณอาจจะสามารถทำสิ่งที่คล้ายกับ IntelliJ IDEA แต่เนื่องจากมันใช้สคริปต์ฉันไม่แน่ใจว่ามันจะทำงานได้อย่างถูกต้องหรือไม่


ฉันมีไฟล์ .desktop ทั้งสองใน ~ / .local / share / applications และไม่มีปัญหาใด ๆ ที่ล็อคไฟล์เหล่านั้นไปที่ตัวเรียกใช้งาน ฉันสมมติว่าคุณหมายถึงพร้อมที่จะเปิดตัวจากตัวเรียกใช้ แต่ยังไม่ได้เปิดตัวเมื่อคุณพูดว่าถูกล็อค ...
ทิม

ฮึ่ม ฉันไม่สามารถวางไว้ในตัวเรียกใช้งาน ฉันสร้างของฉันด้วย alacarte (ตัวแก้ไขเมนู) อาจเป็นเพราะฉันมี ~ / .local เชื่อมโยงกับที่อื่น ... แอปของคุณแสดงรูปสามเหลี่ยมวิ่ง (ด้านซ้าย) และรูปสามเหลี่ยมที่ใช้งานอยู่ (ด้านขวา) หรือไม่
idbrii

สำหรับไอคอนเวอร์ชัน "เปิดตัว" ใช่ คุณสามารถเห็นรูปสามเหลี่ยมวิ่งได้ในนัดแรก ฉันทำการค้นคว้าเพิ่มเติมและคิดว่าฉันมีวิธีแก้ปัญหาสำหรับไอคอนที่ซ้ำกัน จะโพสต์คำตอบที่นี่
ทิม

@ 451F เอาชนะฉันให้ได้คำตอบฉันเพิ่มคำตอบของเขาลงในความคิดเห็นของฉันเกี่ยวกับวิธีทำให้ IntelliJ ทำงานได้ดีขึ้น
ทิม

0

ไม่มีคำตอบอื่นใดที่เหมาะกับฉัน แต่ในที่สุดฉันก็พบวิธีที่ง่ายกว่า

เปิด Intellij-Idea และบนแถบด้านบนจะพบเมนูดร็อปดาวน์เครื่องมือ จากนั้นเลือกสร้างสก์ท็อปเข้าปุ่ม มันจะสร้างรายการ. desktop ที่ทำงานได้อย่างถูกต้องใน.local/share/applicationsโฟลเดอร์ของคุณ มันไม่ได้สร้างไอคอนซ้ำกันและคุณยังสามารถเปลี่ยนไอคอนได้หากต้องการ

น่าเสียดายที่การใช้nosplashอาร์กิวเมนต์นำปัญหาไอคอนที่ซ้ำกันกลับมาดังนั้นฉันไม่แน่ใจว่าจะแก้ไขได้อย่างไร


0

หลังจากติดตั้ง IntelliJ IDEA 2017.2.5 ภายใต้ Ubuntu 17.04 (พร้อมไอคอน Numix) ฉันต้องเปลี่ยนบรรทัดStartupWMClass=jetbrains-ideaไปStartupWMClass=jetbrains-idea-ceเป็นไฟล์ .desktop ของโปรแกรมดังนั้นไอคอนที่ซ้ำกันจะหายไป

ฉันเดาว่า "ce" ย่อมาจาก Community Edition ที่ฉันมีดังนั้นฉันไม่รู้ว่าทำไมค่าของคุณสมบัตินี้ในไฟล์. desktop แต่เดิมนั้นไม่มีส่วนต่อท้าย "ce"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.