у меня есть некоторые приложения, такие как KColorChooser , KBreakOut , MadView3D , которые не отображают значок приложения на док-станции, когда они активны. Отображается только квадрат без значка. Кроме того, при наведении на них курсора вместо имени приложения отображается unknown .
Я использую Gnome в качестве среды рабочего стола в Ubuntu 20.04. Почему это происходит и как это исправить?
Я решил проблему с помощью этого видео: https://youtu.be/xZ_M3Q-U-J0.
Вот краткое изложение:
Gnome (и любой другой рабочий стол) идентифицирует экземпляры приложения и отслеживает их с помощью свойства WM_CLASS.
Некоторые приложения KDE не предоставляют в себе свойство WM_CLASS, и из-за этого отсутствующего свойства WM_CLASS Gnome не может отслеживать приложения и, следовательно, не может связать с ними значки. Каждый раз, когда создается новый экземпляр того же приложения, он показывает новый элемент в доке.
Эта проблема также возникает в плазме KDE: https://forum.kde.org/viewtopic.php?f=289&t=160452
Решение:
xprop WM_CLASS
. Курсор мыши изменится на символ +. Нажмите на это приложение курсором в форме +. Строка WM_CLASS будет распечатана на терминале. .desktop
этого приложения из папки /usr/share/applications/
в локальный каталог ~/.local/share/applications/
папка. Для меня он назывался org.kde.kcolorchooser.desktop.StartupWMClass=
, где StartupWMClass=kcolorchooser
. Общие аспекты
Значки на док-станции и в обзоре приложения соответствуют файлам запуска на рабочем столе. Это небольшие текстовые файлы с расширением .desktop
. Они предоставляют операционной системе информацию о том, как запустить приложение, какой значок использовать ...
Если у приложения нет соответствующего файла .desktop
или некоторых элементов в , Файл рабочего стола
определен неправильно, система может вернуться к универсальному значку и общему имени приложения.
Вы можете найти все файлы .desktop
, содержащие, например, KColorChooser
с помощью команды
find / -name '*.desktop' -exec grep -H $1 "KColorChooser" \; 2>/dev/null
Особенности для приложений привязки KDE
Я не могу полностью воспроизвести проблему, которую вы указали: для двух из трех упомянутых вами приложений я получаю две иконки, одну с правильным значком и одну с общим значком. При запуске в доке используется правильный значок, и отображается правильное имя приложения.
Для некоторых пакетов KDE, которые поставляются как SNAP, могут быть проблемы с упаковкой. При первой установке два разных файла .desktop
устанавливаются в папку / var / lib / snapd / desktop / application /
:
kcolorchooser_kcolorchooser.desktop
kcolorchooser_org.kde.kcolorchooser.desktop
У них разные имена и разные строки Exec =
, поэтому они отображаются в виде двух разных значков. kcolorchooser_kcolorchooser.desktop
указывает полный путь к значку в / snap / kcolorchooser /
и является тем, на котором отображается значок. kcolorchooser_kcolorchooser.desktop
указывает kcolorchooser
, но это явно не входит в нормальный путь поиска значков, и отображается общий значок.
Обходной путь - скрыть «плохое» Файл .desktop
. Скопируйте его в каталог ~ / .local / share / Applications
и добавьте строку Hidden = true
.
/ snap / kcolorchooser /
и является тем, на котором отображается значок. kcolorchooser_kcolorchooser.desktop
указывает kcolorchooser
, но это явно не входит в нормальный путь поиска значков, и отображается общий значок.
Обходной путь - скрыть «плохое» Файл .desktop
. Скопируйте его в каталог ~ / .local / share / Applications
и добавьте строку Hidden = true
.
/ snap / kcolorchooser /
и является тем, на котором отображается значок. kcolorchooser_kcolorchooser.desktop
указывает kcolorchooser
, но это явно не входит в нормальный путь поиска значков, и отображается общий значок.
Обходной путь - скрыть «плохое» Файл .desktop
. Скопируйте его в каталог ~ / .local / share / Applications
и добавьте строку Hidden = true
.
~ / .local / share / Applications
и добавьте строку Hidden = true
. файл рабочего стола . Скопируйте его в каталог ~ / .local / share / Applications
и добавьте строку Hidden = true
.