
J’ai récemment installé une nouvelle application de recettes de cuisine, j’ai nommé Anymeal, celle que j’utilisais auparavant (Gourmand, un fork de Gourmet en Python 3) ne démarrant plus sur Debian 13, et le projet semblant plus ou moins abandonné.
Anymeal est présent dans les dépôts Debian, et s’installe donc très facilement. Il est de plus maintenu, puisque j’ai été en contact avec le dev lorsque j’ai remarqué que le dash de Gnome (la barre du Dock en bas de l’écran) n’affichait pas l’icône de l’application, alors que l’icône apparaissait bien quand on lançait l’application :

Mais une fois lancée, plus d’icône :

Le fichier .desktop
Comme toujours dans ce type de problème, il faut commencer par aller voir le fichier .desktop
de l’application. Celui-ci était bien présent dans /usr/share/applications/de.wedesoft.anymeal.desktop
, tout comme une icône dans /usr/sahre/icons/hicolor/64x64/apps/anymeal.png
.
pascal$ cat /usr/share/applications/de.wedesoft.anymeal.desktop
[Desktop Entry]
Name=anymeal
GenericName=Recipe Manager
Comment=Free recipe management software
Keywords=recipes;cooking;database;
Exec=anymeal
Terminal=false
Type=Application
Icon=anymeal
Categories=Qt;Utility;Viewer;
Tout avait l’air correct, et après avoir bidouillé un peu (en renommant le fichier en anymeal.desktop
, cela fonctionnait), j’ai préféré créer un bug, et le développeur a été très réactif : il a créé une VM pour pouvoir reproduire le problème, puis a trouvé la solution dans ce billet de blog, ma foi fort intéressant. Il s’agit en fait de définir la fenêtre de l’application d’une autre manière, plus efficace manifestement que par son nom, et c’est toujours bon à savoir et surtout à retenir (d’où cet article).
Pour ce faire, on va lancer l’application, puis appuyer sur Alt-F2 afin de lancer le debugger de GNOME Shell appelé Looking Glass, en tapant « lg » :

Il suffit alors de cliquer sur « Windows » pour voir s’afficher la valeur de wmclass
pour l’application anymeal :

Et voilà, il ne reste qu’à renseigner ce paramètre dans le fichier .desktop
indiqué plus haut pour le paramètre StartupWMClass
:
pascal$ cat /usr/share/applications/de.wedesoft.anymeal.desktop
[Desktop Entry]
Name=anymeal
GenericName=Recipe Manager
Comment=Free recipe management software
Keywords=recipes;cooking;database;
Exec=anymeal
Terminal=false
Type=Application
Icon=anymeal
Categories=Qt;Utility;Viewer;
StartupWMClass=anymeal
À ce stade, l’icône s’affiche bien dans le Dash, le but recherché est donc atteint. Mais un autre problème est apparu : l’icône mettait plus de 10 secondes à apparaître dans le Dash ! 😡 Par contre, si on lançait l’application via le terminal, elle apparaissait bien immédiatement.
On trouve un bug à ce sujet ici, qui est fermé en indiquant qu’il est lié à celui-ci, également fermé, mais avec des explications. La remarque intéressante à retenir est :
This only seems to happen when I start the applications from the launcher and not directly from a terminal, so it may be related to the startup notifications.
Le plus simple dès lors est de désactiver les notifications pour l’application en ajoutant un autre paramètre StartupNotify=false
à la fin du fichier ci-dessus.
pascal$ cat /usr/share/applications/de.wedesoft.anymeal.desktop
[Desktop Entry]
Name=anymeal
GenericName=Recipe Manager
Comment=Free recipe management software
Keywords=recipes;cooking;database;
Exec=anymeal
Terminal=false
Type=Application
Icon=anymeal
Categories=Qt;Utility;Viewer;
StartupWMClass=anymeal
StartupNotify=false
Et voilà tout fonctionne ! Et comme je n’aime pas l’icône d’Anymeal, j’en ai fait une autre en partant d’icônes libres de droit (ici) avec l’aide de GIMP :

Bon, je reviendrai sur ce nouveau logiciel de recettes dans un autre article, je ne suis pas encore certain de l’utiliser, même si le développeur a montré qu’il était très réactif.