Исправить отсутствующий значок приложения в левой док-станции/панели в Ubuntu 24.04
Есть окна приложений, значки которых не отображаются на левой (или нижней) панели закрепления? Это руководство может помочь решить проблему в Ubuntu 24.04.
Значки приложений, которые вы видите в средстве запуска системных приложений, обрабатываются файлами .desktop
. Файл конфигурации такого типа обычно включает строку Icon=app-icon-name
, поэтому Ubuntu и многие другие Linux могут находить и отображать изображение значка приложения в меню «Пуск» (или меню приложения).
Если файл значка отсутствует как в системном каталоге значков (обычно /usr/share/icons
и /usr/share/pixmaps
), так и в локальной папке значков пользователя ( .loca/share/icons
), то вместо этого отображается универсальный значок исполняемого файла (значок шестеренки на сером квадратном фоне, см. изображение выше).
В Ubuntu 24.04 приложение (в моем случае Transmission) может отображать значок своего приложения в сетке приложения и результатах поиска при попытке его запуска. Это означает, что файл значка приложения правильно установлен в вашей системе. Однако после запуска окна приложения в Ubuntu Dock вместо этого отображается значок шестеренки.
Если закрепить приложение в доке, а затем запустить его, то для него будет 2 значка. Один правильно отображает значок приложения, другой отображает значок шестеренки, что означает, что файл значка не найден.
Это связано с тем, что окно, созданное приложением, не связано с ярлыком, используемым для запуска приложения. В Ubuntu 22.04 и более ранних версиях на доке будут дублироваться значки приложений. Однако в Ubuntu 24.04 вместо этого используется значок исполняемого файла (значок шестеренки).
В этом случае пользователь может добавить строку StartupWMClass в файл конфигурации .desktop
и установить в качестве значения имя класса открытых окон.
Шаг 1. Узнайте имя класса окна приложения.
Сначала вам нужно запустить окно приложения. Затем нажмите Alt + F2, чтобы открыть диалоговое окно «Выполнить команду». Когда откроется диалоговое окно, введите lg и нажмите Enter.
В этом окне нажмите кнопку Windows и найдите имя класса для целевого окна приложения. В моем случае это:
- Передача:
com.transmissionbt.transmission_66310_4225300
- VirtualBox: Машина Virtualbox
Для рабочих столов, отличных от GNOME, с сеансом Xorg, откройте терминал (Ctrl+Alt+T) и выполните команду xprop WM_CLASS. Курсор мыши превратится в перекрестие, затем просто щелкните окно приложения, и имя его класса будет выведено на вывод терминала.
Шаг 2. Добавьте строку StartupWMClass.
Получив имя класса, отредактируйте соответствующий файл .desktop
и добавьте строку StarupVMClass.
Файл .desktop
обычно находится в следующих каталогах:
/usr/share/applications
для приложений Deb и Snap..local/share/applications
для пользователя, созданного вручную или автоматически созданного приложения./var/lib/flatpak/exports/share/applications/
для приложений Flatpak.
Проверьте предыдущие каталоги, чтобы найти соответствующий файл .desktop для вашего приложения, а затем отредактируйте его.
В моем случае я выполнил команду ниже, чтобы отредактировать файл конфигурации .desktop для передачи:
sudo gnome-text-editor /usr/share/applications/transmission-gtk.desktop
И добавьте строку StartupWMClass=com.transmissionbt.transmission_66310_4225300 в разделе «[запись рабочего стола]». После сохранения файла просто перезапустите Transmission, и значок наконец отобразится правильно.
Аналогично отредактируйте файл org.gnome.TextEditor.desktop
в разделе /usr/share/applications/
и добавьте StartupWMClass=gnome-text-editor
. текстовый редактор, запускаемый из терминала, будет правильно отображать значок приложения на доке.
Для Virtualbox в системном пакете НЕТ файла .desktop
для создания окон виртуальных машин, поскольку они запускаются из окна VM Manager. Вам необходимо создать его вручную, выполнив команду:
gnome-text-editor ~/.local/share/applications/virtualvm.desktop
Затем напишите следующие строки и сохраните их. Вы можете изменить Icon=virtualbox на любой файл значка по вашему желанию.
[Desktop Entry]
Version=1.0
Name=Oracle VM VirtualBox
GenericName=Virtual Machine
Type=Application
Exec=VirtualBoxVM %U
TryExec=VirtualBoxVM
Keywords=virtualization;
Icon=virtualbox
Categories=Emulator;System;
Actions=Manager;
StartupWMClass=VirtualBox Machine
Comment=Run the virtual machine
NoDisplay=true
[Desktop Action Manager]
Exec=VirtualBoxVM
Name=Run the Virtual Machine