
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
файлов (запуска, ярлыков) документированы по адресуТехнические характеристики начального уровня рабочего стола.