2010-08-10 53 views
12

Para una de mis aplicaciones Linux, tengo la aplicación binaria, un script launcher.sh (para LD_LIBRARY_PATH) y un archivo .desktop, todos en la misma carpeta.¿Cómo puedo especificar un icono con una ruta RELATIVA para un archivo de entrada de escritorio de Linux?

Me gustaría utilizar una ruta relativa en lugar de una ruta absoluta para el icono.

He intentado:

Icon=app.svg 
Icon=./app.svg 
Icon=$PWD/app.svg 
Icon=$(dirname %k)/app.svg 

pero ninguno de estos trabajos (sólo Icon=/path/to/app.svg). Si no es posible especificar una ruta relativa y debo usar una solución alternativa, estaba pensando que podría regenerar la ruta del icono en el archivo .desktop cada vez que se ejecuta el script launcher.sh.

¿Cuál sería la mejor manera de hacerlo? ¿Usando sed o alguna otra utilidad de reemplazo con un pseudo-regex como Icon=([valid path chars]+)\n quizás?

Respuesta

13

Después de investigar un poco más, parece que no es posible especificar rutas relativas para un icono en un archivo de entrada de escritorio, hasta donde puedo ver.

La solución que utilicé fue añadir el siguiente código al final de mi guión launcher.sh:

mv myapp.desktop myapp.desktop-bak 
sed -e "s,Icon=.*,Icon=$PWD/app.svg,g" myapp.desktop-bak > myapp.desktop 
rm myapp.desktop-bak 

Esto actualizará la ruta del icono cada vez que se ejecuta el script lanzador, y dado que la El archivo .desktop apunta al script del iniciador, al hacer clic en el archivo .desktop, actualiza su icono de forma efectiva.

Sé que podría usar cat o la opción -i para acortar el código anterior, pero he leído que la solución que utilicé es más confiable. Si alguien tiene más información al respecto, publique un comentario.

+0

Gracias por esto ... aún así, eso es una especificación sucky. –

+0

Claro que ... No puedo creer que nadie haya pensado en agregar compatibilidad de ruta relativa (aparentemente). –

+0

Bueno, leí en otro lado que era un problema de seguridad: ¿qué pasaría si movieras el archivo .desktop y abrieras accidentalmente un ejecutable diferente del que pensabas ... y supongo que ese es un punto justo. Pero entonces otro método para especificar íconos hubiera sido agradable. –

Cuestiones relacionadas