如何将.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