web-dev-qa-db-fra.com

Chemin de l'icône dans le fichier .desktop

J'ai un fichier .desktop sur mon bureau. Si je tape:

Icon=/home/ianbell/Pictures/myLogo.png

l'icône du fichier .desktop change (résultat attendu).

Mais si je tape:

Icon=~/Pictures/myLogo.png

ça ne marche pas.

~/ n'est-il pas un raccourci pour /home/$USER?

9
user492815

Utilisation de chemins dans un fichier .desktop

Dans un fichier .desktop, vous devez utiliser des chemins absolus et complets . Par conséquent, ~ n'est pas développé.

Ceci est une erreur commune :)

Les exceptions concernant les icônes sont a.o. décrit ici :

Icône à afficher dans le gestionnaire de fichiers, les menus, etc. Si le nom est un chemin absolu, le fichier donné sera utilisé. Si le nom n'est pas un chemin absolu, l'algorithme décrit dans le Spécification du thème d'icône sera utilisé pour localiser l'icône.

et ici :

Le champ Icône est l’icône que le lanceur doit utiliser et représente l’application. Toutes les icônes figurant dans le répertoire /usr/share/pixmaps n'ont pas besoin de spécifier leur chemin complet, mais leur nom de fichier sans l'extension. Par exemple, si le fichier d'icône est /usr/share/pixmaps/wallch.png, le champ Icon doit uniquement être 'wallch'. Toutes les autres icônes doivent avoir leur chemin complet spécifié.

Plus d'information

Dans un fichier .desktop:

Dans la ligne Icon=, vous êtes autorisé à utiliser des espaces:

Icon=/home/jacob/Thema/icon/some folder/some icon.png

c'est bien.

Cependant

Dans la ligne Exec=, vous êtes pas autorisé à utiliser des espaces, sauf dans le cas d'un argument . Dans tous les autres cas, vous devez citer les étapes du chemin avec un espace:

Exec=/home/jacob/Bureaublad/some folder/application

échouera, alors que

Exec="/home/jacob/Bureaublad/some folder/application"

ou

Exec=/home/jacob/Bureaublad/"some folder"/application

fonctionnera bien

9
Jacob Vlijm

En bref, le chemin .desktop du fichier Icon= comprend les chemins absolus, mais pas le développement des tilde, en raison de spécification qui définit le fonctionnement des fichiers .desktop.

Expansion de tilde

  • Où vous verriez l'expansion du tilde (~) vers la variable d'environnement $HOME se fait souvent, par exemple, en bash, qui est le shell de connexion habituel avec lequel vous interagissez avec la commande Invite
  • bash et d'autres shells compatibles POSIX, développent l'extension tilde-to-$ HOME conformément à spécification POSIX pour les shells

fichiers .desktop

  • Cependant, un fichier .desktop n’est pas la même chose qu’un shell, c’est un fichier de configuration en texte brut; il ne fonctionnerait donc pas nécessairement de la même manière, même si des fichiers et des shells .desktop peuvent être trouvés sous Linux.
  • comment un fichier .desktop est supposé fonctionner, est défini dans la spécification de Freedesktop Desktop Entry Specification

La spécification d'entrée de bureau, concernant Iconsname__, dit:

Si le nom est un chemin absolu, le fichier donné sera utilisé.

C'est pourquoi vous avez pu utiliser des chemins absolus, car ils sont couverts par la spécification

Si le nom n'est pas un chemin absolu, l'algorithme décrit dans le Spécification du thème d'icône sera utilisé pour localiser l'icône.

Lorsque nous vérifions le Spécification du thème d'icône , rien n'indique qu'il doit suivre le développement du tilde de POSIX.

Résumé

Ainsi, en raison des spécifications de Freedesktop concernant le paramètre .desktop de Icon=, les chemins absolus sont pris en charge, mais comme vous l'avez constaté, les extensions tilde-to-HOME HOME ne le sont pas.

3
clarity123