Chemin d'icône dans le fichier .desktop

11

Sur mon bureau, j'ai un fichier .desktop. Si je tape:

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

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

Mais si je tape:

Icon=~/Pictures/myLogo.png

ça ne marche pas.

N'est-ce pas ~/un raccourci pour /home/$USER?

Jacob Vlijm
la source
1
~ est l'abréviation de votre répertoire personnel uniquement dans un shell.
user253751
@JacobVlijm: désolé, je me suis endormi, je programme jour et nuit :-)
1
@IanBell Haha Je connais le sentiment :)
Jacob Vlijm
/ home / $ USER ne fonctionnera pas. Il semble que vous recherchiez - / home / $ (whoami). Voir mes commentaires ci-dessous.
Ajay Kumar

Réponses:

10

L'utilisation de chemins dans un fichier .desktop

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

C'est une erreur courante :)

Les exceptions concernant les icônes sont également décrites 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 la spécification de thème d'icône sera utilisé pour localiser l'icône.

et ici :

Le champ d'icône est l'icône qui doit être utilisée par le lanceur et représente l'application. Toutes les icônes qui se trouvent dans le répertoire /usr/share/pixmapsn'ont pas besoin d'avoir leur chemin d'accès complet spécifié, mais leur nom de fichier sans l'extension. Par exemple, si le fichier d'icônes est /usr/share/pixmaps/wallch.png, le champ d'icônes doit être simplement «wallch». Toutes les autres icônes doivent avoir leur chemin d'accès complet spécifié.

Plus d'information

Dans un .desktopfichier:

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

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

c'est bien.

toutefois

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

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

échouera, tandis que

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

ou

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

fonctionnera bien

Jacob Vlijm
la source
Alors, comment puis-je référencer un chemin relatif au "répertoire personnel des utilisateurs"?
Aaron Franke
Aaron Franke, vous pouvez utiliser $ (whoami) pour obtenir le nom d'utilisateur actuel. Je n'ai pas essayé mais cela devrait fonctionner - pour le répertoire personnel de l'utilisateur actuel - / home / $ (whoami).
Ajay Kumar
J'ai essayé et ça marche Aaron.
Ajay Kumar
4

En bref, .desktople Icon=chemin du fichier comprend les chemins absolus, mais pas l'expansion tilde, en raison de la spécification qui définit le fonctionnement des .desktopfichiers.

Expansion de Tilde

  • L'endroit où vous verriez l' ~extension tilde ( ) vers la $HOMEvariable d'environnement est souvent par exemple dans bash, qui est le shell de connexion habituel avec lequel vous interagissez à l'invite de commande
  • bash, et d'autres shells compatibles POSIX, font une extension tilde-to-$ HOME cohérente avec la spécification POSIX pour les shells

fichiers .desktop

  • Cependant, un .desktopfichier n'est pas la même chose qu'un shell, c'est un fichier de configuration en texte brut donc il ne fonctionnerait pas nécessairement de la même manière, même si les .desktopfichiers et les shells peuvent tous deux être trouvés sur Linux
  • comment un .desktopfichier est censé fonctionner, est défini dans la spécification d' entrée de bureau de Freedesktop

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

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

C'est pourquoi vous avez pu utiliser des chemins absolus, car il est couvert par la spécification

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

Lorsque nous vérifions la spécification du thème de l' icône , rien ne dit qu'elle doit suivre l'expansion du tilde de POSIX.

Sommaire

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

clarity123
la source