Вопрос или проблема
Большинство приложений, запускаемых из терминала, отображают красивую иконку или ставят точку под основной иконкой в интерфейсе (я использую Dash to Dock в Ubuntu 24.10). Некоторые просто добавляют значок шестеренки. Некоторые, такие как arduino-ide, раньше отображали иконку, но теперь показывают только шестеренку. Это может вносить путаницу, когда открыто три или более шестеренок.
Как я могу заменить шестеренку на подходящую иконку? Я пробовал добавить StartupWMClass=ArduinoIDE;
в стартовый скрипт для arduino-ide, но это не решает проблему.
.
Ответ или решение
Для решения проблемы, описанной в вашем вопросе, важно понять, как операционная система Ubuntu и её интерфейс Dash to Dock управляют отображением иконок для запущенных приложений. Когти, которые вы видите вместо ожидаемых иконок, возникают из-за того, что система не может правильно сопоставить конкретное приложение с его иконкой. Это может произойти по нескольким причинам:
Теория:
-
WM_CLASS и файлы .desktop: В системах на основе Linux отображение иконок приложений часто связано с параметрами WM_CLASS и файлами .desktop. Эти файлы содержат информацию о приложении, включая команду запуска, категорию, иконку и название. Они могут быть найдены в директориях вроде
/usr/share/applications
или~/.local/share/applications
. -
Процесс определения иконок: Когда приложение запускается, среда рабочего стола использует свойство окна
WM_CLASS
для сопоставления запущенного процесса с соответствующим файлом .desktop. Если класс окна приложения не совпадает с ожидаемым, система вместо этого отображает иконку по умолчанию, зачастую в виде шестеренки. -
Настройки и потенциал кэширования: Система может кэшировать информацию об иконках и файлах .desktop, что делает исправления несразу заметными. Это также может влиять на отображение, если кеш не обновляется.
Пример:
Предположим, что у вас есть приложение arduino-ide
, которое раньше отображалось корректно, но теперь показывает только значок-шестеренку. Причиной может быть то, что WM_CLASS
этого приложения изменился или конфликтует с другими записями, или ваша версия Dash to Dock не может правильно распознать обновленный WM_CLASS
.
Применение:
-
Проверка и изменение WM_CLASS:
-
Откройте терминал и запустите ваше приложение. Затем запустите команду
xprop
и кликните по окну приложения, чтобы получить информацию о его свойствах. Обратите особое внимание на строку, начинающуюся сWM_CLASS
. Она может выглядеть как:WM_CLASS(STRING) = "arduino-ide", "arduino-ide"
. -
Если класс отличается от ожидаемого, вам нужно внести изменения в соответствующий файл .desktop. Например, если
WM_CLASS
показываетArduino
, то в файле .desktop добавьте или измените строкуStartupWMClass=Arduino
.
-
-
Редактирование файла .desktop:
-
Откройте файл .desktop для вашего приложения. Это можно сделать с помощью текстового редактора от имени администратора. Например:
sudo nano /usr/share/applications/arduino-ide.desktop
. -
Убедитесь, что поле
Exec
правильно указывает на команду запуска приложения, аIcon
– на корректную иконку. Попробуйте также изменить или добавить параметрStartupWMClass
в соответствии с полученной информацией оWM_CLASS
.
-
-
Очистка кэша и перезапуск интерфейса:
-
После внесения изменений нужно очистить кеш иконок:
sudo gtk-update-icon-cache /usr/share/icons/hicolor
. -
Перезапустите графическую оболочку командой
gnome-shell --replace
.
-
-
Перезапуск системы:
- В некоторых случаях может потребоваться полный перезапуск системы, чтобы все изменения вступили в силу.
-
Использование других инструментов:
- Если проблема сохраняется, рассмотрите возможность использования инструментов как
Menulibre
илиAlacarte
, которые упрощают процесс редактирования записей приложений и иконок.
- Если проблема сохраняется, рассмотрите возможность использования инструментов как
-
Обновление Dash to Dock:
- Убедитесь, что у вас установлена последняя версия Dash to Dock. Это можно сделать через менеджер расширений GNOME или через Software Updater.
Эти шаги помогут вам устранить проблему отображения иконок-шестеренок в Dash to Dock и улучшить общий пользовательский опыт.