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

kic*_*omy 11 xdg

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

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

roa*_*dmr 15

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

Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"
Run Code Online (Sandbox Code Playgroud)

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


dob*_*bey 4

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

#!/bin/sh

(cd /where/you/want/it/to/be && exec your_program)
Run Code Online (Sandbox Code Playgroud)

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