Как получить файл *.desktop для запуска приложения и отображения имени и значка приложения на рабочем столе и в /usr/share/applications/?

Как получить файл *.desktop для запуска приложения и отображения имени и значка приложения на рабочем столе и в /usr/share/applications/?

Ubuntu Bionic Beaver 18.04.3 Nautilus 3.26.4 (Файлы)

Файлы *.desktop на рабочем столе или в ~/bin отображаются сприложениезначок, а имя файла заменяется значением ключа Name файла. Нажатие на значок запускает связанное приложение.

У меня есть два файла — free42dec.desktop и free42bin.desktop — для запуска эмуляции Free42 калькулятора HP42s Reverse Polish. Но в Nautilus (Файлы) эти файлы по-прежнему отображаются как полные имена файлов и стандартные текстовые значки, а не как Free42 Decimal и Free42 Binary, с соответствующими значками калькулятора. Еще одна странность заключается в том, что при открытии свойств этих файлов на вкладке Basic отображается только plain-vanilla, но другие правильно работающие файлы *.desktop показывают значение ключа Exec на вкладке Basic.

Я не первый, у кого возникла эта проблема с файлами *.desktop, но ни одна комбинация поисковых терминов не даст мне ответа. Я пробовал различные предложенные средства, но ни одно не работает. Итак, в отчаянии, вот текст одного из этих файлов (другой похож):

[Desktop Entry]
Version=2.5.17
Name=Free42 Decimal
GenericName=Calculator
Comment=HP42s calculator using decimal number calculations.
Exec=free42dec -skin Realistic
Path=/usr/local/bin
Icon=/usr/share/icons/free42/free42dec.png
Terminal=false
Type=Application
Categories=Utility;Application;

##Define Actions
Actions=Quit;Free42_Binary;

[Desktop Action Quit]
Name=Quit
# Kill all free42bin or free42dec instances currently running
# Exec=pkill free42*
# Kill only free42dec instances
Exec=pkill free42dec
OnlyShowIn=Unity;

[Desktop Action Free42_Binary]
Name=Free42 Binary
# You can start the alternative calc from the right-click menu
Exec=free42bin -skin KD0GLS_Full
OnlyShowIn=Unity;

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

решение1

После еще более углубленного исследования я узнал о команде CLI desktop-file-validate, которая проверяет синтаксис и структуру *.desktopфайлов.

.../usr/share/applications$ desktop-file-validate free42dec.desktop
free42dec.desktop: error: file contains line "?[Desktop Entry]", which is not a comment, a group or an entry

Посмотрите на "?[Desktop Entry]". Это ?указывает на то, что есть скрытый символ, предшествующий [, который оказывается меткой порядка байтов (BOM), которая указывает, как этот файл UTF-8 должен читаться системами BigEndian и LittleEndian. Дальнейший поиск дает dos2unix, утилиту, которая преобразует текстовые файлы Windows в формат UNIX, который вы можете получить с помощью

$ sudo apt install dos2unix

Теперь сделайте это:

.../usr/share/applications$dos2unix free42dec.desktop
dos2unix: converting file free42dec.desktop to Unix format...

Ура! Теперь free42dec.desktopфайл отображается в Nautilus /usr/share/applicationsс Nameключом Free42 Decimal вместо имени файла, а текстовый значок меняется на значок Free42 Decimal. Этот ярлык теперь отображается в Launcher Dash и в Applications Dash (Обзор). Скопировав его на рабочий стол, вы можете нажать на него и там, чтобы запустить приложение Free42 Decimal.

Формат, структура и синтаксис *,desktopфайлов (запуска, ярлыков) документированы по адресуТехнические характеристики начального уровня рабочего стола.

Связанный контент