Значок отсутствует при запуске приложения

12

Я создал /usr/share/applicationsпанель запуска приложений, которая запускает rdesktop. В файле указано имя иконки, и я добавил иконки в:

/usr/share/icons/HighContrast/48x48/apps
/usr/share/icons/HighContrast/22x22/apps
/usr/share/icons/HighContrast/256x256/apps
/usr/share/icons/HighContrast/32x32/apps
/usr/share/icons/HighContrast/scalable/apps-extra
/usr/share/icons/HighContrast/24x24/apps
/usr/share/icons/HighContrast/16x16/apps
/usr/share/icons/hicolor/scalable/apps
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/16x16/apps

Затем я добавляю панель запуска на панель задач, и панель запуска с правильным логотипом отображается на панели задач. Однако, когда я запускаю задачу, на панели задач создается новый значок, квадрат с вопросительным знаком в центре.

Какие значки мне нужны и где, чтобы на панели задач отображался правильный значок приложения при его запуске?

Содержимое файла .desktop:

[Desktop Entry]
Version = 1,0
Terminal = ложь
Icon = MSWindows
Type = Application
Категории = Сеть;
Exec = rdesktop win7shared1 -g 1680x1000

Name = win7shared1
GenericName = RDesktop
Комментарий = Открыть рабочий стол Windows

Ключевые слова = Windows,
StartupNotify = ложь
Клейтон
источник

Ответы:

15

Что, скорее всего, решит вашу проблему, так это:

  1. Откройте приложение
  2. Когда он работает, откройте терминал и введите:

    xprop WM_CLASS
    
  3. Затем нажмите на открытое окно приложения.

  4. Вывод будет выглядеть так (пример gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Используйте первую часть (в этом случае будет gedit), чтобы создать строку в вашем .desktopфайле:

    StartupWMClass=<string>
    

    (заменить <string>на фактическую (первую часть) вывод xprop WM_CLASS, например StartupWMClass=gedit)

Теперь попробуйте еще раз (вам может потребоваться выйти из системы), скорее всего, приложение появится в панели запуска под собственным значком.

объяснение

  • Когда приложение запускается правильно из средства запуска ( .desktopфайла), но появляется другой значок только с общим значком (знак вопроса), наиболее вероятно, что окно приложения и средство запуска по какой-то причине не соединяются, а средство запуска не признать окно приложения как «его». Это часто тот случай, когда используется скрипт или нестандартное приложение (-команда). В этих случаях StartupWMClass=линия часто является решением.
Якоб Влейм
источник
Спасибо Джейкоб. Это решило проблему. Для записи, строка WM_CLASS была "rdesktop", "rdesktop".
Клейтон
@clayton отлично, рад, что это сработало.
Джейкоб Влейм
1
Ваш шаг 2 может быть уменьшен, так как xprop позволяет вам передать атом, который вы хотите вернуть, работы xprop WM_CLASSдостаточно
johndrinkwater
@johndrinkwater Абсолютно, спасибо за подсказку. Это больше года назад, более 14 месяцев, как будто это написал другой человек :).
Отредактирую
@ jacob-vlijm :) только что натолкнулся на это во время исследования неуклюжего поведения
xprop
2

для меня xprop|grep WM_CLASSдали WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(у меня была эта проблема с pycharm для python)

Это было то, sun-awt-X11-XFramePeerчто мне было нужно в качестве строки в моем файле .desktop (без кавычек) - Спасибо!

user245936
источник
Я добавил StartupWMClass=sun-awt-X11-XFramePeerв мой, и ничего не произошло! Находится ли .desktopфайл в домашней папке?
anon58192932
0

После размещения значков в нужном месте, вы должны просто перезапустить xserver (выйти из системы и войти обратно).
Также попробуйте обновить кеш иконок (просто вставьте код ниже в терминал):

for d in ~/.icons/*; do gtk-update-icon-cache -f $d; done
for d in /usr/share/icons/*; do sudo gtk-update-icon-cache -f $d; done
Frostheart
источник