Пользовательская иконка для .desktop файла не отображается

Вопрос или проблема

Я намерен перейти с Windows 7 на Ubuntu.

На рабочем столе есть некоторые иконки, которые я хотел бы использовать на Ubuntu.

Я преобразовал эти иконки в формат *.png 64*64 пикселя и поместил в /home/user/icons

Затем я использую терминал:

sudo gedit

для:

[desktop entry]
Name=Account
Exec=/home/user/jameica/jameica.sh
Icon=/home/user/icons/ico_account.png
Terminal=false
Type=application

Я сохраняю этот файл в /usr/share/application с именем account.desktop

Запись рабочего стола создана, но не с желаемой иконкой.

Что не так?

По состоянию на июль 2018 года в Unity, похоже, есть некоторые ошибки в том, как он читает .desktop файлы. В частности, путь, указанный для поля Icon не может быть заключен в кавычки. Даже если путь содержит пробелы, его нельзя заключать в кавычки.

С другой стороны, стоит упомянуть, что путь, указанный для поля Exec, должен быть заключен в кавычки, если он содержит пробелы. Если он не содержит пробелов, кавычки можно опустить. Эта непоследовательность в поведении чрезвычайно запутывает и действительно должна считаться ошибкой.

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

[Desktop Entry]
Name=Firefox Developer Edition
Comment=The developer edition of Firefox Quantum.
Exec="/home/jack/Applications/Firefox Developer Edition/firefox"
Icon=/home/jack/Applications/Firefox Developer Edition/browser/chrome/icons/default/default32.png
Terminal=false
Type=Application

Следующий пример будет выполняться, но не отображать иконку:

[Desktop Entry]
Name=Firefox Developer Edition
Comment=The developer edition of Firefox Quantum.
Exec="/home/jack/Applications/Firefox Developer Edition/firefox"
Icon="/home/jack/Applications/Firefox Developer Edition/browser/chrome/icons/default/default32.png"
Terminal=false
Type=Application

А следующий даже не будет выполняться:

[Desktop Entry]
Name=Firefox Developer Edition
Comment=The developer edition of Firefox Quantum.
Exec=/home/jack/Applications/Firefox Developer Edition/firefox
Icon=/home/jack/Applications/Firefox Developer Edition/browser/chrome/icons/default/default32.png
Terminal=false
Type=Application

Есть несколько проблем с вашим файлом рабочего стола:

[Desktop Entry]: оба должны быть с заглавной буквы (вместо [desktop entry]),

то же самое: Type=Application (вместо Type=application)

С этими ошибками файл рабочего стола не будет работать и не покажет свою иконку, однако:

Обратите внимание, что иногда, даже при правильном файле рабочего стола, вы не видите иконку на самом файле (особенно с .png иконками), но она будет отображаться (с иконкой) и хорошо работать в лаунчере.

Если вы не используете файл рабочего стола с рабочего стола, его не нужно делать исполняемым. Поскольку вы запускаете его из /usr/share/applications, нет смысла делать его исполняемым. После исправления вышеупомянутых ошибок он должен отображаться и работать корректно в лаунчере. (с учетом того, что скрипт работает 🙂 )

  • Разрешите его выполнение как исполняемого (щелкнув правой кнопкой мыши > свойства) :

run as executable

Или

  • Разрешите его выполнение как исполняемого (в командной строке) :

    sudo chmod +x /usr/share/application/account.desktop
    

этот ответ помог мне в моем случае.

Был лишний пробел в конце строки пути, который мешал отображению иконки.

Я запускал файл .desktop с gtk-launch, это решило мою проблему, не знаю почему, но это работает.

Добавляя к тому, что другие сказали о капризных .desktop файлах. Я столкнулся с этой проблемой на Ubuntu 20.04 с существующим пользовательским .desktop файлом, у которого изначально не было ассоциированной иконки. Добавление секции Icon в .desktop файл не сделало иконку видимой. Я обнаружил, что внесение изменения в файл, которое gtk-launch не понравилось, а затем отмена этого изменения, привело к появлению иконки.

Если ваш путь Exec слишком длинный, попробуйте разделить его на несколько строк, используя \

Для меня, Brave Browser не работал.

Вот как я это исправил,

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=New Tab - Brave
Icon=brave-browser
Exec=/opt/brave.com/brave/brave --disable-chrome-google-url-tracking-client --disable-domain-reliability \
 --disable-features=AutofillServerCommunication,TranslateUI,NetworkService,UnifiedConsent --enable-dom-distiller \
 --enable-features=NewExtensionUpdaterService,SimplifyHttpsIndicator --extensions-install-verification=enforce_strict --no-pings
StartupNotify=false
StartupWMClass=Brave-browser
X-BAMFGenerated=true
MimeType=x-scheme-handler/mailto;text/html;

В моем случае, на Ubuntu 18.04 значение Icon не читалось из-за лишнего комментария в конце строки (#…), поэтому просто удалите лишний пробел, комментарии и любые кавычки, и это должно сработать правильно.

В моем случае, похоже, что ~/Desktop мешало отображению иконки.

Я изменил с:

Icon=~/Desktop/Applications/IPMIView/Ipmiview.png

На:

Icon=/home/layla/Desktop/Applications/IPMIView/Ipmiview.png

И тогда это сработало.

.

Ответ или решение

Не отображается пользовательская иконка для файла .desktop

Если у вас возникли проблемы с отображением иконки для .desktop файла в Ubuntu, существуют несколько распространённых причин, которые могут вызвать такую ситуацию. Рассмотрим их более детально и предложим решения.

Проблемы в конфигурационном файле

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

[Desktop Entry]
Name=Account
Exec=/home/user/jameica/jameica.sh
Icon=/home/user/icons/ico_account.png
Terminal=false
Type=Application

Основные моменты:

  1. Секция [Desktop Entry]: Начинайте конфигурационный файл с [Desktop Entry], используя заглавные буквы.
  2. Поле Type: Используйте Type=Application, также с заглавной буквы.
  3. Путь к иконке: Убедитесь, что путь в поле Icon не содержится в кавычках, даже если в нём присутствуют пробелы.

Возможные проблемы и рекомендации:

  1. Отсутствие иконки из-за файлового пути:

    • Убедитесь, что путь к файлу иконки полон и корректен. Обратите внимание, что использование сокращённого пути (~) может быть неправильно интерпретировано. Замените его на полный путь, например: /home/user/icons/ico_account.png.
  2. Пробелы и несколько строк:

    • Если путь в Exec слишком длинный, вы можете разделить его на несколько строк с использованием обратной косой черты (\).
  3. Ошибка прав доступа:

    • Убедитесь, что у файла .desktop есть разрешения на выполнение, используя команду:
      sudo chmod +x /usr/share/applications/account.desktop
  4. Удаление лишних пробелов и комментариев:

    • Любые лишние пробелы или комментарии в строках могут вызвать ошибки в интерпретации файла. Убедитесь, что строка Icon не содержит лишних символов.
  5. Попробуйте gtk-launch:

    • Иногда запуск файла с помощью gtk-launch может решить проблему отображения иконки.

Пример успешного конфигурационного файла

[Desktop Entry]
Name=Приложение
Comment=Описание приложения
Exec=/home/user/app/run.sh
Icon=/home/user/icons/ico_app.png
Terminal=false
Type=Application

SEO Оптимизация:
Находясь в поиске решения проблем с .desktop файлами в Ubuntu, эти советы помогут вам устранить основные ошибки конфигурации и вернут правильное отображение пользовательской иконки на рабочем столе.

Заключение:
Работая с Ubuntu, всегда обращайте внимание на точность синтаксиса и будьте внимательны к путям файлов. Это часто является ключом к решению многих проблем с пользовательскими настройками.

Оцените материал
Добавить комментарий

Капча загружается...