Establecer variable en archivo .desktop

75

¿Hay alguna manera de establecer la variable de entorno en el archivo .desktop? Estoy tratando de ejecutar la aplicación (eclipse) con un estilo gtk personalizado, por lo que básicamente quiero obtener el siguiente resultado ejecutando un archivo .desktop:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

Intenté ponerlo en un script bash y ejecutarlo desde el archivo .desktop, pero luego no se integra bien con el lanzador Unity.

dotintegral
fuente

Respuestas:

111

Puede agregar una variable de entorno a una aplicación editando su .desktoparchivo. Por ejemplo, para ejecutar "digiKam" con la variable de entorno APPMENU_DISPLAY_BOTH=1, busque el digikam.desktoparchivo correspondiente y agregue la configuración de la variable, mediante el envcomando, a la entrada "Exec":

Exec=env APPMENU_DISPLAY_BOTH=1 digikam -caption "%c" %i

En tu caso:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse
jazmines
fuente
1
¿Cómo puedo configurar la variable env que contiene el usuario $HOME? Ni Exec=env MYVAR="$HOME/foo"tampoco Exec=env MYVAR="~/foo"se expande. En cambio, se pasan literalmente.
400 el gato
parece que puede hacerlo como se describe en stackoverflow.com/a/8980518/1446479
peedee
9

Una alternativa para modificar el .desktoparchivo es poner una secuencia de comandos de contenedor en, por ejemplo ~/bin.

$ cat ~/bin/eclipse
#!/bin/sh
export GTK2_RC_FILES=gtkrc.custom
exec /usr/bin/eclipse "$@"

De esta forma, la personalización no se sobrescribirá la próxima vez que se actualice el paquete de la aplicación.

Editar:

Puede ver una pista sobre por qué funciona esto al ver qué PATHcontiene la variable. En mi caso:

$ echo $PATH
/home/gunnar/bin:/home/gunnar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

~/bines la primera carpeta de la lista y, por lo tanto, se mira antes /usr/bin.

Gunnar Hjalmarsson
fuente
Si solo coloca su archivo .desktop en su configuración local, de todos modos no se anulará.
Auspex
@Auspex: cierto. Pero al mismo tiempo, si usa una copia local, no se beneficiará de posibles actualizaciones del .desktoparchivo propiedad del paquete .
Gunnar Hjalmarsson
No veo cómo poner un envoltorio ~/binayudará con eso. ¡El .desktoparchivo propiedad del paquete nunca verá ese contenedor! También necesitarías usarupdate-alternatives
Auspex
@Auspex: el .desktoparchivo no necesita "ver" el contenedor. Simplemente se ejecuta eclipse, y debido al PATHcontenedor se selecciona en lugar de /usr/bin/eclipse. Edité la respuesta para aclarar.
Gunnar Hjalmarsson
Sí, el archivo .desktop no necesita ver la envoltura. Estaba pensando que el archivo .desktop promedio especifica una ruta completa, pero en una inspección más creo que la mayoría de los sistemas de hacer precisamente especificar un nombre y comandos para se vea a su envoltura. Sin embargo, los únicos archivos de escritorio de Eclipse que tengo están en el formato especificado en la pregunta, dando una ruta completa al binario de Eclipse.
Auspex