我已经尝试过这个问题的其他答案,但没有成功。我使用的是 Ubuntu 16.04。我只是想为 Terminator 创建一些自定义操作,但我决定回到基础,看看是否能让某些东西发挥作用。以下是我尝试过的:
- 复制并粘贴示例桌面条目文件https://standards.freedesktop.org/desktop-entry-spec/latest/apa.html进入名为
$HOME/foo.desktop
- 跑了
desktop-file-validate $HOME/foo.desktop
。没有输出。 - 冉
desktop-file-install --dir=$HOME/.local/share/applications $HOME/foo.desktop
chmod 755 $HOME/.local/share/applications/foo.desktop
- 已退出并重新登录。
新启动器没有出现。我遗漏了什么?是否有一些日志可以解释为什么桌面文件没有出现?
答案1
这是示例桌面条目文件:
[Desktop Entry]
Version=1.0
Type=Application
Name=Foo Viewer
Comment=The best viewer for Foo objects available!
TryExec=fooview
Exec=fooview %F
Icon=fooview
MimeType=image/x-foo;
Actions=Gallery;Create;
[Desktop Action Gallery]
Exec=fooview --gallery
Name=Browse Gallery
[Desktop Action Create]
Exec=fooview --create-new
Name=Create a new Foo!
Icon=fooview-new
https://specifications.freedesktop.org/desktop-entry-spec/latest/apa.html
注意TryExec=fooview
字段。以下是桌面入门标准说:
TryExec
磁盘上可执行文件的路径,用于确定程序是否实际安装。如果路径不是绝对路径,则在 $PATH 环境变量中查找该文件。如果文件不存在或不可执行,则可能会忽略该条目(例如,不在菜单中使用)。
我们注意到这fooview
不是绝对路径,因此让我们看看它是否在$PATH
:
$ type -P fooview
$ type -a fooview
bash: type: fooview: not found
以下是另一种测试方法:
$ gtk-launch foo.desktop
gtk-launch: no such application foo.desktop
与例如进行比较gtk-launch eog.desktop
。
由于没有fooview
可执行文件,这意味着“该条目可能会被忽略(例如,不能在菜单中使用)”,这就是为什么 Unity 没有在菜单中显示它的原因;它认为该应用程序尚未安装。
要修复此问题,您必须将TryExec
密钥替换为绝对路径或某处的可执行文件$PATH
。
有关的: