如何在Linux上创build.desktop文件应用程序启动器?

我在Qt中开发了一个使用启动脚本myapp.sh的应用程序。 我创build了一个启动这个脚本的.desktop文件,并设置:

命令: $PWD/myapp.sh

工作path: $PWD

但是,当我启动.desktop文件时, $PWD打印我的主目录,导致尝试启动~/myapp.sh而不是~/Development/build-directory/bin/myapp.sh (该目录是.desktop文件所在)。 为什么不能正确地将工作目录设置为.desktop文件实际所在的位置?我怎样才能避免在.desktop文件中指定绝对path?

$PWD保存shell的当前工作目录 ,这与.desktop文件的位置无关。你可以这样做的一种方法是:

 Exec=$(dirname %k)/myapp.sh 

根据规范 , %k是“桌面文件的位置,如URI(例如,从vfolder系统获取)或本地文件名,如果没有位置,则为空。 所以这是myapp.sh在同一个目录中。