web-dev-qa-db-fra.com

Comment inclure la variable d'environnement dans launcher for icon

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?

3
Jonas

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.

4
Mike Miller

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:

%kstands le chemin du fichier .desktop

  1. mv %k %k-bak crée un fichier de sauvegarde

  2. 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

  3. chmod +x %k rendre le nouveau fichier .desktop exécutable

  4. 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

0
TuKsn