Ruta del icono en el archivo .desktop

11

En mi escritorio tengo un archivo .desktop. Si escribo:

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

el icono del archivo .desktop cambia (el resultado esperado).

Pero, si escribo:

Icon=~/Pictures/myLogo.png

No funciona.

¿No es ~/un atajo para /home/$USER?

Jacob Vlijm
fuente
1
~ es la abreviatura de su directorio personal solo en un shell.
user253751
@JacobVlijm: lo siento, me quedé dormido, estoy programando noche y día :-)
1
@IanBell Jaja Sé el sentimiento :)
Jacob Vlijm
/ home / $ USER no funcionará. Parece que estás buscando - / home / $ (whoami). Ver mis comentarios a continuación.
Ajay Kumar

Respuestas:

10

El uso de rutas en un archivo .desktop

En un .desktoparchivo, debe usar rutas absolutas y completas . Por ~lo tanto no se expande.

Este es un error común :)

Aquí se describen excepciones relacionadas con los iconos :

Icono para mostrar en el administrador de archivos, menús, etc. Si el nombre es una ruta absoluta, se utilizará el archivo dado. Si el nombre no es una ruta absoluta, el algoritmo descrito en la Especificación del tema del icono se utilizará para ubicar el icono.

y aqui :

El campo de icono es el icono que debe usar el iniciador y representa la aplicación. /usr/share/pixmapsNo es necesario que todos los íconos que se encuentran en el directorio tengan especificada su ruta completa, sino su nombre de archivo sin la extensión. Por ejemplo, si el archivo del ícono es /usr/share/pixmaps/wallch.png, entonces el campo del ícono debería ser 'wallch'. Todos los demás iconos deben tener su ruta completa especificada.

Más información

En un .desktoparchivo:

En la Icon=línea, que está permitido a los espacios de uso:

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

está bien.

sin embargo

En la Exec=línea, no puede usar espacios, a menos que se trate de un argumento . En todos los demás casos, debe citar los pasos de la ruta con un espacio:

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

fallará, mientras

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

o

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

funcionará bien

Jacob Vlijm
fuente
Entonces, ¿cómo hago referencia a una ruta relativa al "directorio de inicio de los usuarios"?
Aaron Franke
Aaron Franke, puedes usar $ (whoami) para obtener el nombre de usuario actual. No lo he intentado, pero esto debería funcionar, para el directorio de inicio para el usuario actual, / home / $ (whoami).
Ajay Kumar
Lo intenté y funciona Aaron.
Ajay Kumar
4

En resumen, .desktopla Icon=ruta del archivo comprende rutas absolutas, pero no la expansión de tilde, debido a la especificación que define cómo .desktopse supone que funcionan los archivos.

Expansión Tilde

  • Donde vería la ~expansión tilde ( ) a la $HOMEvariable de entorno es, por ejemplo, en bash, que es el shell de inicio de sesión habitual con el que interactúa en el símbolo del sistema
  • bash, y otros shells compatibles con POSIX , hacen una expansión de tilde a $ HOME consistente con la especificación POSIX para shells

archivos de escritorio

  • Sin embargo, un .desktoparchivo no es lo mismo que un shell, es un archivo de configuración de texto sin formato, por lo que no necesariamente funcionaría de la misma manera, incluso si los .desktoparchivos y los shells se pueden encontrar en Linux
  • cómo .desktopse supone que funciona un archivo, se define en la Especificación de entrada de escritorio de Freedesktop

La especificación de entrada de escritorio, con respecto Icons, dice:

Si el nombre es una ruta absoluta, se utilizará el archivo dado.

Es por eso que pudo usar rutas absolutas, ya que está cubierto por la especificación

Si el nombre no es una ruta absoluta, el algoritmo descrito en la Especificación del tema del icono se utilizará para ubicar el icono.

Cuando verificamos la Especificación del tema del icono , no hay nada que diga que tiene que seguir la expansión de tilde de POSIX.

Resumen

Por lo tanto, debido a las especificaciones de Freedesktop con respecto a .desktopla Icon=configuración de, las rutas absolutas son compatibles, pero como descubrió, las expansiones POSIX tilde-to- $ HOME no lo son.

clarity123
fuente