Imposta la variabile nel file .desktop


75

C'è un modo per impostare la variabile di ambiente nel file .desktop? Sto cercando di eseguire l'applicazione (eclipse) con stile gtk personalizzato, quindi sostanzialmente voglio ottenere il seguente risultato eseguendo un file .desktop:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

Ho provato a inserirlo in uno script bash ed eseguirlo dal file .desktop, ma poi non si integra bene con il programma di avvio di Unity.

Risposte:


111

È possibile aggiungere una variabile di ambiente a un'applicazione modificandone il .desktopfile. Ad esempio, per eseguire "digiKam" con la variabile d'ambiente APPMENU_DISPLAY_BOTH=1, trova il digikam.desktopfile corrispondente e aggiungi l'impostazione della variabile, tramite il envcomando, alla voce "Exec":

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

Nel tuo caso:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

1
come posso impostare la variabile env contenente l'utente $HOME? Né Exec=env MYVAR="$HOME/foo"Exec=env MYVAR="~/foo"viene espanso. Invece, sono passati letteralmente.
400 il Cat

a quanto pare si può fare, come descritto nella stackoverflow.com/a/8980518/1446479
Peedee

9

Un'alternativa per modificare il .desktopfile è inserire uno script wrapper in es ~/bin.

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

In questo modo la personalizzazione non verrà sovrascritta al prossimo aggiornamento del pacchetto dell'applicazione.

Modificare:

Un suggerimento sul perché funziona è possibile vedere controllando cosa PATHcontiene la variabile. Nel mio 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

~/binè la prima cartella dell'elenco e quindi viene esaminata prima /usr/bin.


Se hai appena messo il tuo file .desktop nelle tue impostazioni locali, non verrà comunque ignorato.
Auspex,

@Auspex: True. Allo stesso tempo, se usi una copia locale, non trarrai vantaggio da eventuali aggiornamenti del .desktopfile di proprietà del pacchetto .
Gunnar Hjalmarsson,

Non vedo come mettere un wrapper ~/binpossa essere d'aiuto. Il .desktopfile di proprietà del pacchetto non vedrà mai quel wrapper! Dovresti anche usareupdate-alternatives
Auspex l'

@Auspex: il .desktopfile non deve "vedere" il wrapper. Si esegue eclipsee, a causa PATHdel wrapper, viene scelto invece di /usr/bin/eclipse. Ho modificato la risposta per chiarire.
Gunnar Hjalmarsson,

Sì, il file .desktop non ha bisogno di vedere l'involucro. Stavo pensando che il file .desktop media specifica un percorso completo, ma su un'ulteriore ispezione Credo che la maggior parte di quelli del sistema si limitano a specificare un nome-e il comando in modo sarà vedere il tuo involucro. Tuttavia, gli unici file desktop Eclipse che ho sono nel formato specificato nella domanda, fornendo un percorso completo al binario Eclipse.
Auspex,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.