Utilisation de StartupWMClass pour les applications s'exécutant dans un terminal
En 18.04, j'avais un lanceur dans le tableau de bord pour exécuter une application dans un terminal avec le tableau de bord affichant un point indicateur pour le lanceur lorsqu'il était en cours d'exécution, plutôt qu'un indicateur pour le lanceur de terminal générique (de cette façon, j'ai pu le trouver si les autres fenêtres du terminal sont ouvertes). J'ai pu utiliser l'option --class dans l'entrée Exec avec StartupWMClass pour y parvenir.
En 20.04, le lanceur ne fonctionne pas en ce sens qu'un terminal est ouvert, l'application tente de se lancer puis le terminal se ferme. J'ai googlé ceci et il y a des discussions sur la dépréciation de l'option --class. Si je supprime l'option --class, le lanceur fonctionne, mais le point indicateur est attaché au lanceur de terminal générique.
Voici le fichier .desktop avant de supprimer l'option --class
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Encoding=UTF-8
StartupNotify=true
Icon[en_US]=sage-terminal
Icon=sage-terminal
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal
StartupWMClass=SageTerminal
Name=SageTerminal
Name[en_US]=SageTerminal
Actions=SageDocumentation;
[Desktop Action SageDocumentation]
Name=Sage Documentation
Exec=firefox /home/rquint/Sage/SageMath/local/share/doc/sage/html/en/index.html
Réponses
Ce n'est pas une solution parfaite, mais pour l'instant cela fonctionne. En cherchant sur Google, j'ai trouvé ce qui suit
https://itectec.com/ubuntu/ubuntu-how-to-make-a-custom-launcher-for-terminal-applications/
qui montre comment lancer une application dans un terminal bien que le lanceur utilise Terminal = false. En bref, vous lancez un émulateur de terminal qui exécute ensuite l'application. Il y a deux pièges possibles avec cette méthode. Premièrement, il appelle spécifiquement un émulateur de terminal particulier; deuxièmement, l'option --class est dépréciée et peut ne pas fonctionner à l'avenir.
Donc, pour l'instant (Ubuntu 20.04.1 et Gnome 3.36.3), j'ai remplacé les lignes
Terminal=true
Exec=/home/rquint/Sage/SageMath/sage --class=SageTerminal
avec
Terminal=false
Exec=gnome-terminal --class=SageTerminal -e /home/rquint/Sage/SageMath/sage
et avoir le comportement que je voulais.