Icône manquante au lancement de l'application

12

J'ai créé un lanceur d'applications /usr/share/applicationsqui lance rdesktop. Le fichier spécifie un nom d'icône et j'ai ajouté les icônes à:

/usr/share/icons/HighContrast/48x48/apps
/usr/share/icons/HighContrast/22x22/apps
/usr/share/icons/HighContrast/256x256/apps
/usr/share/icons/HighContrast/32x32/apps
/usr/share/icons/HighContrast/scalable/apps-extra
/usr/share/icons/HighContrast/24x24/apps
/usr/share/icons/HighContrast/16x16/apps
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/16x16/apps

Je drogue ensuite le lanceur dans la barre des tâches et le lanceur avec le logo correct est visible dans la barre des tâches. Cependant, lorsque je démarre la tâche, une nouvelle icône est créée dans la barre des tâches, un carré avec un point d'interrogation au centre.

De quelles icônes ai-je besoin et où, pour que la barre des tâches affiche l'icône correcte pour l'application lorsqu'elle est lancée?

Le contenu du fichier .desktop:

[Entrée de bureau]
Version = 1.0
Terminal = faux
Icon = mswindows
Type = Application
Catégories = Réseau;
Exec = rdesktop win7shared1 -g 1680x1000

Nom = win7shared1
GenericName = rdesktop
Commentaire = Ouvrir le bureau Windows

Mots-clés = Windows
StartupNotify = false
Clayton
la source

Réponses:

15

Ce qui résoudra très probablement votre problème, procédez comme suit:

  1. Ouvrez l'application
  2. Lorsqu'il est en cours d'exécution, ouvrez un terminal et saisissez:

    xprop WM_CLASS
    
  3. Cliquez ensuite sur la fenêtre d'application ouverte.

  4. La sortie ressemblera à (exemple gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Utilisez la première partie (dans ce cas serait gedit), pour composer une ligne dans votre .desktopfichier:

    StartupWMClass=<string>
    

    (remplacer <string>par la sortie réelle (première partie de) xprop WM_CLASS, par exemple StartupWMClass=gedit)

Essayez à nouveau (vous devrez peut-être vous déconnecter / vous connecter), l'application apparaîtra probablement dans le lanceur sous sa propre icône.

Explication

  • Lorsqu'une application démarre correctement à partir d'un lanceur ( .desktopfichier), mais qu'une autre icône apparaît avec uniquement une icône générique (point d'interrogation), il est fort probable que la fenêtre d'application et le lanceur ne se connectent pas pour une raison quelconque, et le lanceur ne fonctionne pas reconnaître la fenêtre de l'application comme "la sienne". C'est souvent le cas lorsqu'un script ou une application non standard (-commande) est utilisé. Dans ces cas, la StartupWMClass=ligne est souvent la solution.
Jacob Vlijm
la source
Merci Jacob. Cela a résolu le problème. Pour mémoire, la chaîne WM_CLASS était "rdesktop", "rdesktop".
clayton
@clayton parfait, heureux que cela ait fonctionné.
Jacob Vlijm
1
Votre étape 2 peut être réduite, car xprop vous permet de passer l'atome que vous souhaitez xprop WM_CLASS
récupérer
@johndrinkwater Absolument, merci pour l'astuce. Il y a plus d'un an, plus de 14 mois, c'est comme si une autre personne l'avait écrit :).
Éditera
@ jacob-vlijm :) vient de le rencontrer lors de la recherche d'un comportement xprop maladroit
johndrinkwater
2

pour moi a xprop|grep WM_CLASSdonné WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(j'avais ce problème avec pycharm pour python)

C'était le sun-awt-X11-XFramePeerdont j'avais besoin en tant que chaîne dans mon fichier .desktop (sans guillemets) - Merci!

user245936
la source
J'ai ajouté StartupWMClass=sun-awt-X11-XFramePeerau mien et il ne s'est rien passé! Le .desktopfichier se trouve-t-il dans le dossier de départ?
anon58192932
0

Après avoir placé les icônes au bon endroit, vous devez simplement redémarrer xserver (déconnexion et reconnexion).
Essayez également de mettre à jour le cache des icônes (collez simplement le code ci-dessous dans le terminal):

for d in ~/.icons/*; do gtk-update-icon-cache -f $d; done
for d in /usr/share/icons/*; do sudo gtk-update-icon-cache -f $d; done
Frostheart
la source