Is there a way to set the enviroment variable in .desktop file? I'm trying to run application (eclipse) with custom gtk style, so basically I want to get the following result by runing a .desktop file:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

I've tryied to put it in a bash script and run it from the .desktop file, but then it does not integrate well with the Unity launcher.

2 Answers 2


You can add an environment variable to an application by editing its .desktop file. For example, to run "digiKam" with the environment variable APPMENU_DISPLAY_BOTH=1, find the corresponding digikam.desktop file and add the setting of the variable, via the env command, to the entry "Exec":

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

In your case:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse
  • 2
    how can I set env variable containing user's $HOME?. Neither Exec=env MYVAR="$HOME/foo" nor Exec=env MYVAR="~/foo" gets expanded. Instead, they are passed literally. Dec 31, 2016 at 9:25
  • 1
    it seems you can do it as described in stackoverflow.com/a/8980518/1446479
    – peedee
    Dec 13, 2017 at 13:58

An alternative to modify the .desktop file is to put a wrapper script in e.g. ~/bin.

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

This way the customization won't be overwritten next time the application package is updated.


A hint about why this works can you see by checking out what the PATH variable contains. In my case:

$ echo $PATH

~/bin is the first folder in the list, and thus is looked at before /usr/bin.

  • If you just put your .desktop file in your local settings, it won't get overridden, anyway.
    – Auspex
    May 31, 2019 at 9:24
  • @Auspex: True. But at the same time, if you use a local copy, you won't benefit from possible updates of the package owned .desktop file. May 31, 2019 at 10:27
  • I'm not seeing how putting a wrapper in ~/bin is going to help with that. The package-owned .desktop file is never going to see that wrapper! You'd need to also use update-alternatives
    – Auspex
    Jun 11, 2019 at 13:11
  • @Auspex: The .desktop file does not need to "see" the wrapper. It just executes eclipse, and due to PATH the wrapper is picked instead of /usr/bin/eclipse. I edited the answer to clarify. Jun 11, 2019 at 16:06
  • 1
    @Auspex: Well, the one which is provided in the Ubuntu archive (up to 18.10) has Exec=eclipse. But I agree, if .desktop specifies a full path, my answer does not apply. Jun 13, 2019 at 1:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.