如何从终端(或 dmenu)启动“.desktop”文件

如何从终端(或 dmenu)启动“.desktop”文件

我想.desktop从终端和 dmenu 运行文件。从终端,理想情况下应该使用./app.desktop或运行它/path/to/app.desktop,并将app.desktop其放在一个$PATH目录中。我宁愿不必使用像gtk-launch app.desktop.

此外,我发现gtk-launch使用 启动应用程序并不总是有效gtk-launch app.desktop,即使它确实有效,当我使用它的可执行文件运行时,将其放在#!/path/to/gtk-launch顶部会.desktop返回错误。gtk-launch: no such application ./app.desktop./app.desktop

我使用 bspwm 并且通常更喜欢从终端或 with 启动内容,dmenu_run因此我没有可以单击.desktop文件来启动它们的桌面。

如何使.desktop文件可执行?

答案1

答案2

如果它们是可执行的 ( chmod u+x /path/to/app.desktop),您可以在顶部添加此 shebang:

#!/usr/bin/env xdg-open

从那时起,您可以使用以下方式调用您的应用程序:

/path/to/app.desktop

例如,这个 .desktop 文件将启动xeyes.

#!/usr/bin/env xdg-open
[Desktop Entry]
Name=Xeyes
Exec=xeyes
Terminal=false
Type=Application

答案3

您可以尝试解析该文件,并执行该Exec=行所说的应该执行的任何内容。这应该可以做到:

$(awk '/^Exec=/{sub(/^Exec=/, ""); print}' file.desktop)

无论里面有什么,file.desktop都会启动。

您还可以扩展它并创建一个脚本,该脚本接受参数 APP 并在file.desktop其中包含“Name=APP”的文件上运行该命令。

答案4

如果已经gtk-launch安装,则可以运行:

gtk-launch example.desktop

相关内容