$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
Новый лаунчер не появляется. Что мне не хватает? Есть ли какой-нибудь журнал, который объясняет, почему файл рабочего стола не появляется?
Это пример файла записи рабочего стола:
[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
Сравните с e.г. gtk-launch eog.desktop
.
Поскольку нет исполняемого файла fooview
,
это означает, что "запись может быть проигнорирована (например, не использована в меню)",
вот почему Unity не показывает его в меню;
он думает, что приложение не было установлено.
Чтобы исправить это, вы должны заменить ключ TryExec
либо абсолютным путем, либо исполняемым файлом где-то в $PATH
.
См. также: