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


11

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

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


我遇到了这个问题。我发现了变通办法,尽管有时根据您的工作情况非常复杂。您目前正在使用替代方法吗?如果没有,我也许可以提供帮助。我还没有找到xdg文档来对此进行解释。
bambuntu 2012年

OP,您还在寻找答案吗?如果是这样,您可能需要重新发布您的问题,因为这已标记为已结束。问候,
Ringtail

Answers:


3

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


14

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

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

%k将替换为桌面文件本身的路径。该dirname命令将删除文件名部分,仅保留目录。像这样设置PATH后,your_command无需完整路径即可调用它。


1
我单击快速并投票选错了一个,但您的解决方案是完美的。
CrandellWS 2014年

1
这可以与其他问题/答案结合使用stackoverflow.com/a/3464561/1815624
CrandellWS 2014年

2

我用这个:

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

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



0

这对我有用的Ubuntu 14.04:

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

最新规范说,%k指向桌面文件的位置:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.