Başlatıcıdaki "başlatılmış" java programları için yinelenen simgeleri nasıl kaldırabilirim?


45

Natty'nin Birlik fırlatıcıda java programlarını başlatırken (IntelliJ IDEA ve Crashplan gibi) yinelenen simgeler gösteriliyor (resme bakın). IntelliJ için .desktop dosyasını oluşturdum, Crashplan için .desktop dosyası uygulama ile birlikte geliyor. Bunun gerçekleşmesini engelleyebilecek .desktop dosyalarında (veya başka bir yerde) değiştirilebilecek bir şey var mı? Birliğin kendisi için bir hata raporu bulamadım ama Gnome-Do / Docky gibi programlar hata raporlarına sahipti ve bunu önlemek için uygulamalarında dahili değişiklikler yapmak zorunda kaldılar.

Yinelenen SimgelerBu görüntüde 1. simge .desktop dosyasından oluşturulan simgedir ve ikinci simge başlatıldıktan sonradır. Uygulamayı kapatırken ikinci simge kaybolur.

Özel IntelliJ .desktop dosyası

#!/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 sağlamak. Masaüstü dosyası

[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
Birlik Minecraft'ı başlatırken benzer bir sorunla karşılaşıyorum
Marco Ceppi

2
Şükürler olsun ki sorun ana akım kullanıcıları etkiliyor (sonunda sadece AWN ve diğer rıhtım meraklıları için bir problemdi). Umarım Java (ve yalnızca Java değil) uygulama geliştiricileri bunu düzeltmeyi düşünür. Bu arada, Eclipse böyle bir problemi yok gibi gözüküyor, ancak bunu MySQL Workbench ve OpenOffice.org için düzeltmeyi başaramadım (LibreOffice ortaya çıkmadan önce AWN kullanırken denedim).
Ivan

Sorun, hatırlayabildiğim kadarıyla aptal tanımlayıcı olmayan WM_CLASS adlarını kullanma uygulamaları ile ilgilidir.
Ivan

Böyle bir sorun olmasaydı Unity ya da AWN kullanacağım kesin. Ancak her uygulama onları mükemmel şekilde desteklemediği sürece, geleneksel bir görev çubuğunu tercih ediyorum (çünkü yarı çözümlerden nefret ediyorum).
Ivan

Yanıtlar:


47

Bir StartupWMClass dizesini .desktop dosyanıza ekleyin. xpropBu sınıfı almak için komutu kullanın . Örneğin :

$ 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

Bu konudaki daha fazla içerik (bu AWN hakkında, ancak Unity için de geçerli)


1
Bu Crashplan için harika çalışıyor StartupWMClass=CrashPlanancak IntelliJ'in biraz daha ikna edici olması gerekiyordu. Düzgün çalışabilmesi için bu bilgiyi ( blog.jteam.nl/2011/01/09/… ) kullanmak zorunda kaldım .
Tim

IntelliJ'i güncellemek için küçük bir kenara kadar, doğrudan idea.sh komut dosyasını değil idea.vmoptions dosyasını değiştirdim. -javaagent:agent.jar=IntelliJ_IDEADosyaya ekleyin .
Tim

1
IntelliJ 11 ile agent.jar artık gerekli değildir. StartupWMClass = jetbrains-idea
Tim

Ve jetbrains-idea-ceTopluluk Sürümü için. PS, teşekkürler Tim, 451F.
Synesso

2
@Ivan: Her iki kullanmak zorunda değilsiniz, kullanabilir ya biri. Yani eğer jetbrains-ideabenzersiz bir, sizin istediğiniz kullanmak olduğunu yerine aitsun-awt-X11-XFramePeer
MestreLion

9

Intellij Idea 11 için Ubuntu 11.10 altında, fikrin .desktop dosyasına aşağıdaki satırı eklemek gerekir:

StartupWMClass=jetbrains-idea

4

Bunu bir java programı olan SQLDeveloper için çözebildim:

Xprop kullanarak (ve ardından SQLDeveloper penceresine tıklayarak), aşağıdaki çıktı satırını buldum:

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

Yukarıda ve https://bugs.launchpad.net/unity/+bug/757991 de bulunan yorumlara göre , yerel sqldeveloper.desktop dosyama şu satırı ekledim:

StartupWMClass=oracle-ide-boot-Launcher

1
SQLDeveloper sürümü 4'te WM_CLASS "kahin-ide-OSGi önyükleme-OracleIdeLauncher", .desktop parametreye böylece değiştirildi gerektiğini "güneş awt-X11-XFramePeer" olarak değiştirildi: StartupWMClass = kahin-ide-OSGi önyükleme-OracleIdeLauncher
Pisu

2

Buradaki Eclipse 4.x ve 3.x düzeltmelerini belgeledim .

Bu çözüm, glx-dock aka Cairo-dock içindir, ancak güvenilen tüm görev çubukları için çalışır WM_CLASS.

Tutulma durumunda fırlatma iki aşamalı bir işlemdir.

        görüntü tanımını buraya girin

Temel olarak, yapmanız gereken, Eclipse sürümünüz için geçerli olan Eclipse markalama plugin.xml dosyasını tanımlamak ve application nameözelliği değiştirmek . Tezgah ana pencereleri oluşturulduğunda, Jface SWT'yi arayacak Display.setNameve bu sizi WM_CLASS olarak ayarlayacaktır. Bu, başlatıcınız için belirtilen WM_CLASS ise, çalışan örnekler kendi dock başlatıcısını bulur.

eclipse -cleanİlk seferinde yapmayı unutma .

Sekme de ayrıca geliştirilmiştir.

görüntü tanımını buraya girin


0

IntelliJ IDEA bir komut dosyası tarafından başlatılır ($ IDEA_HOME / bin / idea.sh). Başlatıcısı tıklatıldığında, komut dosyası çalıştırılır ve bu bir java çalıştırılabilir başlatır ve hemen çıkar. Birlik, başlattığınız uygulamanın (komut dosyası) zaten çıkıldığını fark eder; bu nedenle ilk IDEA simgesinde gösterge yoktur. Ancak, şu anda çalışan bir başka (başlatıcı tarafından başlatılan yürütülebilir dosyadan) uygulama var - ve bu yüzden ikinci IDEA simgesi gösteriliyor.

Umarım bu davranış düzeltmesi yakında uygulanacaktır - ancak bu çok basit bir davranış değildir. Pencereleri ve başlatıcıları ile ilişkili olması gereken el-tutmalı bir liste ilişkilerini içermesi gerekir.


0

CrashPlan için, uygulama dosyanızı CrashPlan.desktop'a / usr / share / applications'a taşımayı deneyebilirsiniz. Yalnızca orada yaşayan uygulamalar başlatıcıya kilitlenebilir.

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

Ardından CrashPlan'ı çalıştırmak için kısa çizgi kullanmayı deneyin.

IntelliJ IDEA ile benzer bir şey yapabilirsiniz, ancak bir komut dosyası çalıştığından, düzgün çalışıp çalışmadığından emin değilim.


Her iki .desktop dosyam da ~ / .local / share / apps dizininde ve bunları başlatıcıya kilitlemede herhangi bir sorun yaşamadım. Sanırım Launcher’dan başlatılmaya hazırsınız, ancak kilitlendiğinde henüz başlatılmamış demek ...
Tim

Hm. Onları fırlatıcıya yerleştiremiyorum. Benimki alacarte ile yaptım (Menü Editörü). Belki de ~ / .local başka bir yere bağlı olduğum için ... Uygulamalarınız çalışan üçgeni (sol taraf) ve etkin üçgeni (sağ taraf) gösteriyor mu?
idbrii

Simgenin "başlatılan" sürümü için, evet. İlk çekimde koşu üçgenini görebilirsiniz. Daha fazla araştırma yaptım ve yinelenen simgeler için çalışan bir geçici çözümüm olduğunu düşünüyorum. Burada bir cevap gönderir.
Tim

@ 451F beni cevabı yendi, IntelliJ'in daha iyi çalışabilmesi konusundaki yorumlarıma cevabını biraz ekledim.
Tim

0

Diğer cevapların hiçbiri benim için işe yaramadı, ama sonunda aslında daha basit bir çözüm buldum.

Intellij-Idea'yı açın ve üst çubukta araçlar açılır menüsünü bulun . Ardından, Masaüstü Girişi Oluştur düğmesini seçin. Kullandığınız .local/share/applicationsmasaüstü ortamı tarafından tanınması gereken , klasörünüzde düzgün çalışan bir .desktop girişi oluşturur. Yinelenen bir simge yapmaz ve isterseniz simgeyi bile değiştirebilirsiniz.

Ne yazık ki, nosplashargümanı kullanmak yinelenen simge sorununu geri getirir, bu yüzden nasıl düzelteceğimi bilmiyorum.


0

(Numix simgelerle) Ubuntu 17.04 altında IntelliJ IDEA 2017/02/05 kurduktan sonra çizgiyi değiştirmek zorunda StartupWMClass=jetbrains-ideaiçin StartupWMClass=jetbrains-idea-ceyinelenen simge ortadan kalkacaktır böylece programın .desktop dosyasında.

"Ce", sahip olduğum Topluluk Sürümü anlamına geliyor, bu nedenle .desktop dosyasındaki bu özelliğin değerinin neden "ce" sonekine sahip olmadığını bilmiyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.