web-dev-qa-db-fra.com

Comment puis-je supprimer les icônes en double pour les programmes "lancés" Java dans le lanceur?

Lors du lancement des programmes Java (tels que IntelliJ IDEA et Crashplan) dans le lanceur Unity de Natty, des icônes en double sont affichées (voir l'image). Pour IntelliJ, j'ai créé le fichier .desktop. Pour Crashplan, le fichier .desktop est fourni avec l'application. Y a-t-il quelque chose qui peut être changé dans les fichiers .desktop (ou ailleurs) qui peut empêcher cela de se produire? Je ne pouvais pas trouver de rapport de bogue pour l'unité elle-même, mais des programmes comme Gnome-Do/Docky ont boguerapports et ont dû apporter des modifications internes à leurs applications pour empêcher cela.

Duplicate Icons Dans cette image, la première icône est celle créée à partir du fichier .desktop et la deuxième après son lancement. La seconde icône disparaît lors de la fermeture de l'application.

Fichier IntelliJ .desktop personnalisé

#!/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 fournit un fichier .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]=
45
Tim

Ajoutez une chaîne StartupWMClass dans votre fichier .desktop. Utilisez la commande xproppour obtenir cette classe. Par exemple :

$ 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

Plus de détails dans this thread (ceci concerne AWN, mais fonctionne également pour Unity)

46
451F

Pour Intellij Idea 11 sous Ubuntu 11.10, il est nécessaire d’ajouter à la ligne suivante du fichier .desktop de l’idée:

StartupWMClass=jetbrains-idea
8
topr

J'ai pu résoudre ce problème pour SQLDeveloper, qui est un programme Java:

En utilisant xprop (puis en cliquant sur la fenêtre SQLDeveloper), j'ai trouvé la ligne de sortie suivante:

WM_CLASS(STRING) = "Sun-awt-X11-XFramePeer", "Oracle-ide-boot-Launcher"

Sur la base des commentaires trouvés ci-dessus et dans https://bugs.launchpad.net/unity/+bug/757991 , j'ai ajouté la ligne suivante à mon fichier sqldeveloper.desktop local:

StartupWMClass=Oracle-ide-boot-Launcher
3
Corey

J'ai documenté le correctif pour Eclipse 4.x et 3.x ici .

Cette solution est pour glx-dock, alias Cairo-dock, mais fonctionne pour toutes les barres de tâches reposant sur WM_CLASS.

Dans le cas d'Eclipse, le lancement est également un processus en deux étapes.

enter image description here

En gros, vous devez identifier le plugin.xml de la marque Eclipse applicable à votre version d'Eclipse et modifier la propriété application name. Lorsque la fenêtre principale du plan de travail est créée, Jface appelle le SWT Display.setName et définit WM_CLASS. S'il s'agit du WM_CLASS déclaré pour votre programme de lancement, les instances en cours d'exécution trouveront leur programme de lancement dans le dock.

N'oubliez pas de faire Eclipse -clean la première fois.

La tabulation est également beaucoup améliorée.

enter image description here

1
Delete

Après avoir installé IntelliJ IDEA 2017.2.5 sous Ubuntu 17.04 (avec les icônes Numix), je devais changer la ligne StartupWMClass=jetbrains-idea en StartupWMClass=jetbrains-idea-ce dans le fichier .desktop du programme pour que l'icône en double disparaisse.

J'imagine que "ce" correspond à Community Edition que j'ai, alors je ne sais pas pourquoi la valeur de cette propriété dans le fichier .desktop n'avait pas à l'origine le suffixe "ce".

0
tom

Aucune des autres réponses n'a fonctionné pour moi, mais j'ai finalement trouvé une solution encore plus simple.

Ouvrez Intellij-Idea et, dans la barre supérieure, recherchez le menu déroulant outils. Ensuite, sélectionnez le bouton Créer une entrée de burea. Cela créera une entrée .desktop fonctionnant correctement dans votre dossier .local/share/applications, qui devrait être reconnue par l’environnement de bureau que vous utilisez. Cela ne crée pas une icône en double et vous pouvez même changer l'icône si vous le souhaitez.

Malheureusement, l'utilisation de l'argument nosplash ramène le problème de l'icône de duplication, je ne sais donc pas comment résoudre ce problème.

0
rusins

Pour CrashPlan, vous pouvez essayer de déplacer votre fichier d'application CrashPlan.desktop vers/usr/share/applications. Seules les applications qui y résident peuvent être verrouillées dans le lanceur.

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

Ensuite, essayez d’utiliser le tiret pour exécuter CrashPlan.

Vous pourrez peut-être faire quelque chose de similaire avec IntelliJ IDEA, mais comme il exécute un script, je ne sais pas s'il fonctionnera correctement.

0
idbrii

IntelliJ IDEA est lancé par un script ($ IDEA_HOME/bin/idea.sh). Lorsque le lanceur est cliqué, le script est exécuté. Il lance un exécutable Java et se ferme immédiatement. Unity remarque que l'application que vous avez démarrée (le script) est déjà terminée - c'est pourquoi il n'y a pas d'indicateur sur la première icône IDEA. Cependant, une autre application (à partir de l'exécutable démarré par le programme de lancement) est en cours d'exécution - et c'est pourquoi la deuxième icône IDEA est affichée.

J'espère que la solution à ce problème sera bientôt mise en œuvre - mais ce n'est pas très simple. Cela devrait impliquer une liste maintenue à la main des associations entre les fenêtres et les lanceurs auxquels ils devraient être associés.

0
Weirdfellow