Вопрос или проблема
Я создал файл .desktop для приложения PyQt5, иконка отображается на рабочем столе, но когда я открываю его и оно начинает работать, иконка не показывается на панели задач, вместо этого отображается иконка шестеренки. Спасибо за вашу помощь.
Файл .desktop:
[Desktop Entry]
StartupWMClass=esmeralda_suites.py
Version=1.0
Type=Application
Name=Esmeralda Software
Comment=
Exec="/home/cattivellio/Documents/Esmeralda BETA 9/esmeralda_suites.py"
Icon=/home/cattivellio/Documents/Esmeralda BETA 9/img/minilogo.png
Path=/home/cattivellio/Documents/Esmeralda BETA 9
Terminal=false
StartupNotify=true
Вам нужно будет указать правильный wmclass в файле .desktop.
-
Найдите wmclass для вашего окна: для стандартного рабочего стола Ubuntu откройте диалог выполнения (lt+F2), пока приложение работает. Введите
lg
, затем нажмите Enter и найдите wmclass приложения в списке. -
Затем добавьте или отредактируйте ключ
StartupWMClass
в .desktop файле так, чтобы он упоминал правильный wmclass.StartupWMClass=<wmclass>
Первый ответ верен, если иконка не отображается. Однако, если вы видите шестеренку, посмотрите где-нибудь еще в вашем представлении приложений, и вы, вероятно, найдете иконку шестеренки с похожим названием.
Когда вы запускаете из представления приложений, вместо этого, видимо, загружается запись .desktop с иконкой шестеренки. Найдите эту запись .desktop, вероятно, в /usr/share/applications, удалите ее, убедитесь, что вы следовали инструкциям по настройке выше, и все будет работать.
Ваш файл запуска (.desktop) не содержит записи StartupWMClass. Сначала найдите ваш файл рабочего стола. Скорее всего, он находится в
- ~/.local/share/applications ИЛИ
- /usr/share/applications (нужен доступ sudo для этого)
Используйте лупу (Alt+F2, а затем введите lg), чтобы найти WM Class для вашего приложения (вы можете попробовать запустить приложение после того, как начали использовать лупу, чтобы легко идентифицировать новую запись. Закройте лупу, нажав клавишу Esc).
Теперь отредактируйте ваш .desktop файл и добавьте строку
StartupWMClass=информация из лупы как есть без кавычек.
В нескольких случаях мне также пришлось удалить права на выполнение у файла (chmod -x app.desktop), а затем обратно их добавить (chmod +x app.desktop). Но я сам в этом не уверен. Скорее всего, это могло вызвать какое-то обновление или что-то подобное. Написываю это здесь только как еще одну вещь, которую стоит попробовать.
Надеюсь, это сработает. Удачи.
Ответ или решение
Если в задачной панели вместо значка вашего приложения отображается значок шестеренки, это обычно указывает на проблему с конфигурацией .desktop файла, который отвечает за то, как приложение представляется в графической оболочке рабочего стола. В вашей ситуации, наиболее вероятной причиной может быть неправильное указание параметра StartupWMClass
в вашем .desktop файле. Давайте рассмотрим, как правильно исправить эту ошибку.
Шаг 1: Определение WM Class приложения
- Запустите приложение: Убедитесь, что ваше приложение (в данном случае
esmeralda_suites.py
) запущено. - Используйте инструмент "Looking Glass": Нажмите
Alt + F2
, затем введите командуlg
и нажмитеEnter
. Это откроет инструмент для просмотра окон. - Найдите WM Class: В списке активных окон найдите ваше приложение и запомните или скопируйте значение
WMClass
. Это может выглядеть, например, какesmeralda_suites
или что-то похожее.
Шаг 2: Обновление .desktop файла
Теперь, когда у нас есть правильное значение WM Class, давайте обновим ваш .desktop файл:
[Desktop Entry]
Version=1.0
Type=Application
Name=Esmeralda Software
Comment=
Exec="/home/cattivellio/Documents/Esmeralda BETA 9/esmeralda_suites.py"
Icon=/home/cattivellio/Documents/Esmeralda BETA 9/img/minilogo.png
Path=/home/cattivellio/Documents/Esmeralda BETA 9
Terminal=false
StartupNotify=true
StartupWMClass=<ваше значение WMClass>
Замените <ваше значение WMClass>
на реальное значение, которое вы нашли на предыдущем шаге.
Шаг 3: Проверка расположения .desktop файла
Убедитесь, что ваш .desktop файл находится в правильной директории. Обычно они размещаются по следующим путям:
- Личное хранилище:
~/.local/share/applications
- Общее хранилище:
/usr/share/applications
(для доступа потребуется привилегия sudo).
Если ваш .desktop файл находится в /usr/share/applications
, убедитесь, что у вас достаточно прав для его редактирования.
Шаг 4: Убрать конфликтующие записи
Иногда может существовать другой .desktop файл с похожим именем, который может загружать другой значок (например, шестеренки). Проверьте также в /usr/share/applications
на наличие конфликтующих файлов, которые могут вызывать неправильное отображение значка. Если найдете такой файл, удалите его или переименуйте.
Шаг 5: Проверка прав доступа
Как последняя проверка, можно попробовать изменить права на ваш .desktop файл. Откройте терминал и выполните следующие команды:
chmod -x /path/to/your/app.desktop
chmod +x /path/to/your/app.desktop
Это может помочь в случае, если проблема была связана с кэшированием или обновлением статуса файла.
Заключение
После того как вы внесли все изменения, перезапустите вашу графическую оболочку или перезагрузите компьютер, чтобы изменения вступили в силу. Если все сделано правильно, ваш значок приложения должен отобразиться корректно в задачной панели, заменив значок шестеренки. Если проблема сохраняется, рекомендуется проверить наличие ошибок в логе системы или обратиться к более детальной документации по вашей системе рабочего стола.