Définir la variable dans le fichier .desktop


75

Est-il possible de définir la variable d'environnement dans un fichier .desktop? J'essaie d'exécuter une application (eclipse) avec un style gtk personnalisé. Je souhaite donc obtenir le résultat suivant en exécutant un fichier .desktop:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

J'ai essayé de le mettre dans un script bash et de l'exécuter à partir du fichier .desktop, mais il ne s'intègre pas bien avec le programme de lancement Unity.

Réponses:


111

Vous pouvez ajouter une variable d'environnement à une application en modifiant son .desktopfichier. Par exemple, pour exécuter "digiKam" avec la variable d'environnement APPMENU_DISPLAY_BOTH=1, recherchez le digikam.desktopfichier correspondant et ajoutez le paramètre de la variable, via la envcommande, à l'entrée "Exec":

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

Dans ton cas:

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

1
comment puis-je définir la variable env contenant utilisateur $HOME? Ni Exec=env MYVAR="$HOME/foo"ni Exec=env MYVAR="~/foo"est élargi. Au lieu de cela, ils sont passés littéralement.
400 le chat

il semble que vous puissiez le faire comme décrit dans stackoverflow.com/a/8980518/1446479
peedee

9

Une alternative pour modifier le .desktopfichier est de mettre un script wrapper dans eg ~/bin.

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

Ainsi, la personnalisation ne sera pas écrasée lors de la mise à jour du package d'application.

Modifier:

Vous pouvez voir pourquoi cela fonctionne en vérifiant le contenu de la PATHvariable. Dans mon cas:

$ 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

~/binest le premier dossier de la liste, et est donc examiné avant /usr/bin.


Si vous placez simplement votre fichier .desktop dans vos paramètres locaux, il ne sera pas remplacé, de toute façon.
Auspex

@Auspex: Vrai. Mais en même temps, si vous utilisez une copie locale, vous ne bénéficierez pas des éventuelles mises à jour du .desktopfichier appartenant au paquet .
Gunnar Hjalmarsson

Je ne vois pas comment la mise en place d'une enveloppe ~/binpeut aider à résoudre ce problème. Le .desktopfichier appartenant au paquet ne verra jamais ce wrapper! Vous devez également utiliserupdate-alternatives
Auspex

@Auspex: Le .desktopfichier n'a pas besoin de "voir" le wrapper. Il s'exécute simplement eclipse, et en raison de PATHl'emballage est choisi à la place de /usr/bin/eclipse. J'ai édité la réponse pour clarifier.
Gunnar Hjalmarsson

Oui, le fichier .desktop ne doit voir l'emballage. Je pensais que le fichier .desktop moyen spécifie un chemin complet, mais une inspection plus poussée , je pense que la plupart de ceux du système ne précisent qu'un nom et commande donc va voir votre emballage. Cependant, les seuls fichiers de bureau Eclipse que je possède sont au format spécifié dans la question, ce qui donne un chemin d'accès complet au fichier binaire Eclipse.
Auspex le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.