web-dev-qa-db-fra.com

Icône manquante au lancement de l'application

J'ai créé un lanceur d'application dans /usr/share/applications qui 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 dresse ensuite le lanceur dans la barre des tâches et le lanceur portant le logo correct est visible dans la barre des tâches. Cependant, lorsque je lance 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ù, afin que la barre des tâches affiche l'icône correcte pour l'application au lancement?

Le contenu du fichier .desktop:

 [Entrée du bureau] 
 Version = 1.0 
 Terminal = false 
 Icon = mswindows 
 Type = Application 
 Catégories = Réseau; 
 Exec = rdesktop win7shared1 -g 1680x1000 
 
 Nom = win7shared1 
 GenericName = rdesktop 
 Comment = Ouvrir le bureau Windows 
 
 Mots-clés = Windows 
 StartupNotify = false 
12
clayton

Ce qui va probablement résoudre votre problème est de faire ce qui suit:

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

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

  4. La sortie ressemblera à (exemple geditname__):

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

    StartupWMClass=<string>
    

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

Maintenant, 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 programme de lancement (fichier .desktop), 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 de l'application et le programme de lancement ne se connectent pas. Pour une raison quelconque, le lanceur ne reconnaît pas la fenêtre de l'application comme étant "sa". C'est souvent le cas lorsqu'un script ou une application non standard (-command) est utilisé. Dans ces cas, la ligne StartupWMClass= est souvent la solution.
14
Jacob Vlijm

pour moi xprop|grep WM_CLASS a donné WM_CLASS(STRING) = "Sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce" (je rencontrais ce problème avec pycharm pour python)

C'était le Sun-awt-X11-XFramePeer dont j'avais besoin comme chaîne dans mon fichier .desktop (sans guillemets) - Merci!

2
user245936

Après avoir placé les icônes au bon endroit, vous devez simplement redémarrer xserver (déconnecter et vous reconnecter).
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
0
Frostheart