如何将.desktop文件中的“Path”变量设置为相对于桌面文件所在的位置?

我想在.desktop文件中设置相对于桌面文件所在位置的’Path’变量,我无法做到这一点。

当我不声明它或将其设置为空白时,无论我在哪里运行它,它都默认为我的主文件夹; 并且它不接受相对于文件系统中当前位置的值。

您无法在.desktop文件中设置CWD。 如果您希望应用程序具有特定的CWD,则需要为应用程序编写一个简单的包装器脚本,如下所示:

#!/bin/sh (cd /where/you/want/it/to/be && exec your_program) 

您可以使用$@替换your_program并使用your_program作为参数运行脚本,例如run-in-dir.sh your_program 。 这样,您可以使用相同的脚本来包装要在该目录中启动的任何程序。

您可以在Exec上使用内联bash迷你脚本来解决这个问题。 这将在运行命令之前将.desktop文件的路径添加到PATH。

 Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command" 

%k将被桌面文件本身的路径替换。 dirname命令会删除文件名部分,只留下目录。 一旦PATH设置为这样,就可以在没有完整路径的情况下调用your_command

我用过这个:

 Exec=bash -c 'cd $(dirname %k) && ./SCRIPT_NAME' 

%k是.desktop文件的全名,包括其路径。 然后由dirname使用它来获取位置并将目录更改为该位置。 最后,现在它在正确的位置,它找到脚本并运行它。

对于名称中包含空格的目录名称,这最终对我有用:

 Exec=/bin/bash -c 'cd "$(dirname "$0")"; wine game.exe -windowed' %k 

感谢https://unix.stackexchange.com/a/144428/61349