Ceci est une extension de la question comment inclure une variable d’environnement dans le lanceur? . Cette question explique comment utiliser la variable d'environnement pour la partie Exec
du fichier .desktop
mais pas pour l'icône.
un exemple:
[Desktop Entry]
Name=My Application name
Comment=a comment
Exec=sh -c '$HOME/.bin/path/to/bin'
Icon= $HOME/.bin/path/to/icon
Ce lanceur fonctionnera mais l’icône n’est pas affichée. Je ne peux pas utiliser quelque chose comme
Icon=sh -c '$HOME/.bin/path/to/icon'
pour l'icône ... que faire à la place?
Honnêtement, la meilleure façon d'utiliser une icône dans un programme de lancement est de s'assurer que le fichier d'icône est dans le chemin de recherche de l'icône. En vous référant aux schéma de répertoires d'icônes freedesktop.org et définitions de répertoires de base , les icônes doivent être recherchées dans au moins les répertoires suivants sur les systèmes Ubuntu:
$HOME/.icons
$HOME/.local/share/icons
/usr/local/share/icons
/usr/share/icons
/usr/share/pixmaps
Donc, si vous voulez utiliser votre propre icône et ne pas avoir les privilèges root, installez-la dans $HOME/.icons
ou $HOME/.local/share/icons
. En utilisant ce dernier, vous pouvez même imiter la structure de répertoires d'icônes système avec des icônes multi-résolutions utilisant le même nom de base sous des répertoires tels que $HOME/.local/share/icons/hicolor/48x48/apps
et $HOME/.local/share/icons/hicolor/256x256/apps
.
Si l’icône se trouve dans l’un de ces répertoires, vous pouvez simplement utiliser Icon=myapp
dans le fichier .desktop
.
Vous pouvez essayer quelque chose comme ça:
[Desktop Entry]
Type=Application
Name=MyApp
Exec=sh -c "mv %k %k-bak && sed -e "s,^Icon=.*,Icon=$HOME/.bin/path/to/icon.png,g" %k-bak > %k && chmod +x %k; rm %k-bak"
Icon=???
Cela ajoutera le chemin d’icône relatif au fichier .desktop après son exécution.
Quelques détails supplémentaires:
%k
stands le chemin du fichier .desktop
mv %k %k-bak
crée un fichier de sauvegarde
sed -e "s,^Icon=.*,Icon=$HOME/.bin/path/to/icon.png,g" ...
remplace l'ancien chemin de l'icône par le chemin actuel de $ HOME ... ("^" -> ligne de départ, est vraiment importé pour ne pas remplacer la commande) et crée le nouveau fichier .desktop
chmod +x %k
rendre le nouveau fichier .desktop exécutable
rm %k-bak
supprime l'ancien fichier de sauvegarde
Vous pouvez ajouter vos propres commandes après le changement du chemin d’icône ou avant.
Inspiré par https://stackoverflow.com/a/3464561 et https://askubuntu.com/a/345123/265974