Какова функция файла .desktop в настольных дистрибутивах Linux?

У меня следующая ситуация: мне нужно изменить файл .desktop, который находится в пакете приложения, над которым я работаю.

У меня странная проблема, которая возникает, когда я пытаюсь открыть содержимое файла. Если я нажму на него, а затем попытаюсь нажать "Открыть", появится сообщение об ошибке, которое на английском языке означает: "НЕНАДЕЖНЫЙ ПУНКТ ЗАПУСКА ПРИЛОЖЕНИЙ"

Единственный способ открыть файл .desktop для меня — запустить следующую команду оболочки:

sudo gedit myApplication.desktop

Почему это так? Почему появляется сообщение об ошибке, когда я пытаюсь нормально открыть файл .desktop?

Содержимое файла .desktop:

[Desktop Entry]
Icon=myApplication
Categories=Utility;
Type=Application
Exec=/usr/share/MyApplication/appl/launcher.sh
Name[en_US]=Connect Data Space
Name=My Application Name
Comment[en_US]=
Comment=
StartupNotify=true
Terminal=false
OnlyShowIn=GNOME;Unity;
StartupWMClass=MyApplication
Actions=CheckUpgrade

[Desktop Action CheckUpgrade]
Name=Verifica Aggiornamenti
Exec=java -jar /usr/share/MyApplication/appl/lib/shellExtBridge.jar -checkupgrade
OnlyShowIn=GNOME;Unity;

И теперь у меня есть некоторые сомнения по этому поводу:

1) Иконка: читая некоторую документацию, мне кажется, что если я помещу иконку с именем myApplication.png в папку /usr/share/pixmaps моего пакета, она будет использовать этот значок, это правильно?

2) Exec: читая некоторую документацию, мне кажется, что это поле указывает путь к файлу, который выполняется при клике на мою иконку, верно? Но в этом случае какой файл выполняется? /usr/share/MyApplication/appl/launcher.sh или /usr/share/MyApplication/appl/lib/shellExtBridge.jar -checkupgrade.

Я думаю, что первый файл выполняется, но тогда какова функциональность файла во втором операторе Exec?

В общем, каков функционал файла .desktop? Мне кажется, что он только добавляет значок моего приложения на панель инструментов Unity, чтобы запустить мое приложение, нажав на него. Это так, или у файла .desktop есть дополнительная функциональность?


person AndreaNobili    schedule 28.10.2013    source источник


Ответы (1)


Файл .desktop — это ярлык, который указывает на исполняемый файл и добавляет значок к этому ярлыку.

вы заметили все файлы .desktop в /user/share/applications Именно там собраны все ярлыки. Вы можете черпать вдохновение оттуда.

  1. это зависит от того, на какой значок вы указываете файл .desktop. (я не уверен насчет этого, но значок также может храниться в /usr/share/icons)

  2. Да, правильно. Поле Exec указывает, какой файл должен быть выполнен. Это [desktop entry], на который вы должны смотреть, так что это /usr/share/MyApplication/appl/launcher.shfile, который выполняется

  3. Как я вижу, он даст вашему ярлыку значок, имя и укажет ярлык на файл /usr/share/MyApplication/appl/launcher.sh. Свойство StartupWMClass сделает так, что ваше приложение на самом деле не создаст новый значок открытого приложения в единстве, вместо этого оно подсветит уже созданный вами ярлык. ознакомьтесь с дополнительной информацией об этом.

    свойство категории Categories=Utility; создано таким образом, чтобы среды рабочего стола gnome2, gnome-fallback, xfce и MATE могли поместить ярлык в правильное положение (поскольку у них есть меню).

    я не могу сказать, что делают последние 4 строки в файле рабочего стола, но я думаю, что они выполняются, когда вы запускаете средство обновления приложения. чтобы ваше Java-приложение обновлялось. Или он создаст запись обновления, когда вы щелкните правой кнопкой мыши значок в средстве запуска Unity, чтобы вы могли обновить его через небольшое контекстное меню (но я не знаю)

Я не уверен во всем этом, так что поправьте меня, если я ошибаюсь. Но немного информации лучше, чем ничего :)

person user69969    schedule 14.11.2013
comment
Последние четыре строки относятся к спискам быстрого доступа, применимым только к средам Destop, которые их поддерживают. см.: wiki.gnome.org/Design/Whiteboards/Jumplists и standards.freedesktop.org/desktop-entry-spec/latest/ - person airtonix; 29.05.2014