Introduction
Chaque application est associée à une icône dans le menu des applications. Elle permet de la reconnaître ou de l'identifier d'un coup. Sans prendre le temps le lire.
Certaines applications n'affichent pas leur icône dans le gestionnaire de tâches. Soit parce que celle ci n'a pas été intégrée au code de l'appli, soit à cause d'un bogue.
L'icône affichée dans ce cas est l'icône par défaut de X11, bien sûr si votre serveur d'affichage X11.
Un exemple. Dans le menu des applications, l'icône de Xcas, logiciel de calcul formel, du rpm mga9 est
Alors que son icône de fenêtre, et aussi celle dans le gestionnaire de tâches est
Au delà de l'esthétique ou du confort, la confusion s'installe quand plusieurs applications sans icône attitrée affichent toutes cette même icône par défaut dans le gestionnaire des tâches.
Il est toutefois possible d'afficher l’icône de l'application dans le gestionnaire des tâches.
Mise en œuvre
Prenons le cas de Xcas, logiciel de calcul formel sous Mageia 9 qui s'appliquera à toute appli.
- Démarrer Xcas.
- En console, Konsole par exemple, lancer la commande : Code BASH :
xprop
- Une croix , + , apparaît sur l'écran pour sélectionner la fenêtre cible, donc celle de Xcas ici.
- Dans la liste des propriétés renvoyées, repérer la ligne WM_CLASS : WM_CLASS(STRING) = "FLTK", "FLTK". Cf ci-dessous.
Caché :Code TEXT :_NET_WM_ICON_GEOMETRY(CARDINAL) = 559, 0, 38, 30 _NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE _KDE_NET_WM_FRAME_STRUT(CARDINAL) = 0, 0, 29, 0 _NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 29, 0 _NET_WM_DESKTOP(CARDINAL) = 1 _KDE_NET_WM_ACTIVITIES(STRING) = "a0ba8304-51f2-46d6-8060-47919945b56b" WM_STATE(WM_STATE): window state: Normal icon window: 0x0 _NET_WM_STATE(ATOM) = _KDE_NET_WM_USER_CREATION_TIME(CARDINAL) = 3433675 WM_COMMAND(STRING) = { "/usr/bin/xcas" } _NET_WM_ICON(CARDINAL) = WM_HINTS(WM_HINTS): Client accepts input or input focus: True XdndAware(ATOM) = ATOM WM_CLASS(STRING) = "FLTK", "FLTK" _MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x0, 0x1, 0x1, 0x0, 0x0 WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified location: 144, 119 program specified minimum size: 100 by 118 window gravity: Static WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW WM_ICON_NAME(STRING) = "Xcas 1.9.0 (linux64)" _NET_WM_ICON_NAME(UTF8_STRING) = "Xcas 1.9.0 (linux64)" WM_NAME(STRING) = "Xcas 1.9.0 (linux64)" _NET_WM_NAME(UTF8_STRING) = "Xcas 1.9.0 (linux64)" _NET_WM_PID(CARDINAL) = 7307 WM_LOCALE_NAME(STRING) = "fr_FR.UTF-8" WM_CLIENT_MACHINE(STRING) = "bureau"
- Éditer le fichier .desktop de l'appli avec un éditeur de texte : /usr/share/applications/xcas.desktop ; c'est à faire en root.
- Ajouter à la fin du fichier la ligne : StartupWMClass=FLTK
- Sauvegardez.
- Redémarrer l'appli. L'icône est cette fois dans le gestionnaire des tâches
Pour l'icône de fenêtre, ce sera moins simple. Éditer le code et recompiler... ou ceci qui affirme « insérer » l'icône dans la fenêtre. C'est du C venu d'on ne sait où.
Je n'ai pas osé.
Meuz, le 26/11/23