在 .desktop 文件中设置变量

dot*_*ral 98 unity launcher environment-variables

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

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse
Run Code Online (Sandbox Code Playgroud)

我已经尝试将它放在一个 bash 脚本中并从 .desktop 文件中运行它,但是它没有与 Unity 启动器很好地集成。

jas*_*nes 146

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

Exec=env APPMENU_DISPLAY_BOTH=1 digikam -caption "%c" %i
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse
Run Code Online (Sandbox Code Playgroud)

  • 如何设置包含用户`$HOME` 的环境变量?`Exec=env MYVAR="$HOME/foo"` 和 `Exec=env MYVAR="~/foo"` 都不会扩展。相反,它们是按字面传递的。 (2认同)

Gun*_*son 11

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

$ cat ~/bin/eclipse
#!/bin/sh
export GTK2_RC_FILES=gtkrc.custom
exec /usr/bin/eclipse "$@"
Run Code Online (Sandbox Code Playgroud)

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

编辑:

您可以通过检查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
Run Code Online (Sandbox Code Playgroud)

~/bin是列表中的第一个文件夹,因此在/usr/bin.