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

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

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

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

答案1

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

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

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

答案2

您无法在 .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。这样,您可以使用相同的脚本来包装您想要在该目录中启动的任何程序。

答案3

我用的是这个:

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

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

答案4

这对我有用的Ubuntu 14.04:

Exec=bash -c "cd %k && ./app.run"

最新的规格%千指向桌面文件的位置:

%k - 桌面文件的位置,可以是 URI(例如从 vfolder 系统获取)或本地文件名,如果不知道位置则为空。

相关内容