Вопрос или проблема
Я намерен перейти с 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
, нет смысла делать его исполняемым. После исправления вышеупомянутых ошибок он должен отображаться и работать корректно в лаунчере. (с учетом того, что скрипт работает 🙂 )
- Разрешите его выполнение как исполняемого (щелкнув правой кнопкой мыши > свойства) :
Или
-
Разрешите его выполнение как исполняемого (в командной строке) :
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
Основные моменты:
- Секция
[Desktop Entry]
: Начинайте конфигурационный файл с[Desktop Entry]
, используя заглавные буквы. - Поле
Type
: ИспользуйтеType=Application
, также с заглавной буквы. - Путь к иконке: Убедитесь, что путь в поле
Icon
не содержится в кавычках, даже если в нём присутствуют пробелы.
Возможные проблемы и рекомендации:
-
Отсутствие иконки из-за файлового пути:
- Убедитесь, что путь к файлу иконки полон и корректен. Обратите внимание, что использование сокращённого пути (
~
) может быть неправильно интерпретировано. Замените его на полный путь, например:/home/user/icons/ico_account.png
.
- Убедитесь, что путь к файлу иконки полон и корректен. Обратите внимание, что использование сокращённого пути (
-
Пробелы и несколько строк:
- Если путь в
Exec
слишком длинный, вы можете разделить его на несколько строк с использованием обратной косой черты (\
).
- Если путь в
-
Ошибка прав доступа:
- Убедитесь, что у файла
.desktop
есть разрешения на выполнение, используя команду:sudo chmod +x /usr/share/applications/account.desktop
- Убедитесь, что у файла
-
Удаление лишних пробелов и комментариев:
- Любые лишние пробелы или комментарии в строках могут вызвать ошибки в интерпретации файла. Убедитесь, что строка
Icon
не содержит лишних символов.
- Любые лишние пробелы или комментарии в строках могут вызвать ошибки в интерпретации файла. Убедитесь, что строка
-
Попробуйте
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, всегда обращайте внимание на точность синтаксиса и будьте внимательны к путям файлов. Это часто является ключом к решению многих проблем с пользовательскими настройками.