Podczas uruchamiania programów Java (takich jak IntelliJ IDEA i Crashplan) w programie uruchamiającym Natty's Unity wyświetlane są duplikaty ikon (patrz zdjęcie). Dla IntelliJ stworzyłem plik .desktop, dla Crashplan plik .desktop jest dostarczany z aplikacją. Czy jest coś, co można zmienić w plikach .desktop (lub gdzie indziej), co może temu zapobiec? Nie mogłem znaleźć raportu o błędach dla samej jedności, ale programy takie jak Gnome-Do / Docky mają raporty o błędach i musiałem wprowadzić wewnętrzne zmiany w swoich aplikacjach, aby temu zapobiec.
Na tym obrazie pierwsza ikona jest ikoną utworzoną z pliku .desktop, a druga ikona jest po uruchomieniu. Druga ikona znika po zamknięciu aplikacji.
Niestandardowy plik .desktop IntelliJ
#!/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 dostarcza plik .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]=
Odpowiedzi:
Dodaj ciąg StartupWMClass do pliku .desktop. Użyj
xprop
polecenia, aby uzyskać tę klasę. Na przykład :Więcej deatilów w tym wątku (dotyczy AWN, ale działa również dla Unity)
źródło
StartupWMClass=CrashPlan
ale IntelliJ potrzebował nieco bardziej przekonującego. Musiałem użyć informacji z tego ( blog.jteam.nl/2011/01/09/… ), aby działało poprawnie.-javaagent:agent.jar=IntelliJ_IDEA
do pliku.jetbrains-idea-ce
do wydania Community Edition. PS, wielkie dzięki Tim, 451F.jetbrains-idea
jest wyjątkowa, tym którego chcesz używać go zamiast zsun-awt-X11-XFramePeer
W przypadku Intellij Idea 11 pod Ubuntu 11.10 konieczne jest dodanie w pliku .desktop pomysłu następującego wiersza:
źródło
Udało mi się to naprawić dla SQLDeveloper, który jest programem Java:
Za pomocą xprop (a następnie kliknięcia okna SQLDeveloper) znalazłem następujący wiersz danych wyjściowych:
W oparciu o komentarze podane powyżej oraz w https://bugs.launchpad.net/unity/+bug/757991 dodałem następującą linię do mojego lokalnego pliku sqldeveloper.desktop:
źródło
Udokumentowałem poprawkę dla Eclipse 4.xi 3.x tutaj .
To rozwiązanie jest przeznaczone dla glx-dock, czyli Cairo-dock, ale działa dla wszystkich pasków zadań, na których się opiera
WM_CLASS
.W przypadku zaćmienia uruchomienie jest również procesem dwuetapowym.
Zasadniczo musisz zidentyfikować wtyczkę brandingową Eclipse.xml odpowiednią dla twojej wersji Eclipse i zmodyfikować
application name
właściwość. Po utworzeniu głównych okien środowiska roboczego Jface wywoła SWT,Display.setName
a to ustawi ci WM_CLASS. Jeśli jest to zadeklarowany WM_CLASS dla programu uruchamiającego, uruchomione instancje znajdą jego program uruchamiający dok.Nie zapomnij zrobić
eclipse -clean
za pierwszym razem.Wprowadzanie tabulacji również zostało znacznie ulepszone.
źródło
IntelliJ IDEA jest uruchamiany przez skrypt ($ IDEA_HOME / bin / idea.sh). Po kliknięciu programu uruchamiającego skrypt jest uruchamiany, co uruchamia plik wykonywalny Java i natychmiast kończy działanie. Unity zauważa, że uruchomiona aplikacja (skrypt) już się zakończyła - dlatego na pierwszej ikonie IDEA nie ma wskaźnika. Jednak w tej chwili działa inna (z pliku wykonywalnego uruchomionego przez program uruchamiający) aplikacja - i dlatego wyświetlana jest druga ikona IDEA.
Mam nadzieję, że poprawka tego zachowania zostanie wkrótce wdrożona - ale nie jest to bardzo proste. Musiałby obejmować ręcznie obsługiwane powiązania list między oknami i programami uruchamiającymi, z którymi powinny być powiązane.
źródło
W przypadku CrashPlan możesz spróbować przenieść plik aplikacji CrashPlan.desktop do / usr / share / applications. W programie uruchamiającym można zablokować tylko aplikacje, które tam mieszkają.
Następnie spróbuj użyć myślnika, aby uruchomić CrashPlan.
Możesz być w stanie zrobić coś podobnego z IntelliJ IDEA, ale ponieważ uruchamia skrypt, nie jestem pewien, czy zadziała poprawnie.
źródło
Żadna z pozostałych odpowiedzi nie działała dla mnie, ale ostatecznie znalazłem jeszcze prostsze rozwiązanie.
Otwórz Intellij-Idea, a na górnym pasku znajdź menu rozwijane narzędzi . Następnie wybierz przycisk Utwórz wpis na pulpicie . W
.local/share/applications
folderze zostanie utworzony poprawnie działający wpis .desktop , który powinien zostać rozpoznany przez dowolne używane środowisko pulpitu. Nie tworzy duplikatu ikony, a nawet możesz zmienić ikonę, jeśli chcesz.Niestety użycie
nosplash
argumentu przywraca problem z duplikatem ikony, więc nie jestem pewien, jak to naprawić.źródło
Po zainstalowaniu IntelliJ IDEA 2017.2.5 pod Ubuntu 17.04 (z Numix ikon) musiałem zmienić linię
StartupWMClass=jetbrains-idea
doStartupWMClass=jetbrains-idea-ce
w .desktop pliku programu tak duplikat ikona zniknie.Wydaje mi się, że „ce” oznacza Community Edition, które mam, więc nie wiem, dlaczego wartość tej właściwości w pliku .desktop pierwotnie nie miała sufiksu „ce”.
źródło