在.desktop文件中设置变量


75

有没有一种方法可以在.desktop文件中设置环境变量?我正在尝试使用自定义gtk样式运行应用程序(日食),因此基本上我想通过运行.desktop文件获得以下结果:

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

我尝试将其放在bash脚本中并从.desktop文件运行,但是随后它与Unity启动器集成得不好。

Answers:


111

您可以通过编辑应用程序的.desktop文件来向应用程序添加环境变量。例如,要使用环境变量运行“ digiKam” APPMENU_DISPLAY_BOTH=1,找到相应的digikam.desktop文件,然后通过env命令将变量的设置添加到条目“ Exec”:

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

在您的情况下:

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

1
如何设置包含用户的env变量$HOME?既Exec=env MYVAR="$HOME/foo"没有Exec=env MYVAR="~/foo"扩大。相反,它们按字面传递。
400猫


9

修改.desktop文件的另一种方法是将包装器脚本放入例如~/bin

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

这样,下次更新应用程序包时,自定义设置将不会被覆盖。

编辑:

您可以通过检查PATH变量包含的内容来了解​​有关其工作原理的提示。就我而言:

$ 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是列表中的第一个文件夹,因此在之前被查看/usr/bin


如果仅将.desktop文件放入本地设置,则无论如何它都不会被覆盖。
Auspex

@Auspex:是的。但是同时,如果您使用本地副本,则无法从包拥有的.desktop文件的可能更新中受益。
Gunnar Hjalmarsson,

我看不到如何使用包装器~/bin来解决这个问题。软件包拥有的.desktop文件永远不会看到该包装器!您还需要使用update-alternatives
Auspex

@Auspex:该.desktop文件不需要“查看”包装器。它只是执行eclipse,并且由于选择PATH了包装而不是/usr/bin/eclipse。我编辑了答案以弄清楚。
Gunnar Hjalmarsson

是的,.desktop文件确实需要查看包装器。我以为普通的.desktop文件指定了完整路径,但是在进一步检查时,我认为大多数系统文件仅指定了命令名,因此看到您的包装器。但是,我仅有的Eclipse桌面文件具有问题中指定的格式-提供了Eclipse二进制文件的完整路径。
Auspex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.