Синхронизация значков между .desktop и док-станцией

Jun 02 2020

Я создал пользовательскую запись .desktop в моем домашнем каталоге. ~/.local/share/applications/startMyApp.desktopЯ создал ее, чтобы она использовала xterm вместо gnome-terminal. Я хочу, чтобы он выглядел в доке иначе, чем мои терминалы gnome, которые я использую в интерактивном режиме.

В startMyApp.desktopвыглядит следующим образом :

[Desktop Entry]
Type=Application
Name=MyScript
Terminal=false
Exec=xterm -e myScript.sh
Icon=myIcon.png

Я создал файл значка в ~/.icons/myIcon.png

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

Как я могу это изменить? Я хочу, чтобы значок в доке выглядел таким же, как тот, который указан в .desktopфайле. Приложения, входящие в комплект Ubuntu, при запуске имеют такой же значок в доке (кроме красных точек, указывающих, сколько окон открыто).

Ответы

pomsky Jun 01 2020 at 22:18

Вам нужно добавить правильную StartupWMClassзапись в свой .desktopфайл. Для этого выполните следующие действия.

  1. Запустите соответствующее приложение.
  2. Запустить отдельное окно Терминала и запустить xprop WM_CLASS.
  3. Наведите курсор на открытое окно интересующего вас приложения. Курсор к этому моменту должен превратиться в перекрестие. Щелкните. Вы должны получить WM_CLASSстроку для приложения в окне Терминала.
  4. В .desktopфайле добавьте следующую строку

    StartupWMClass=OBTAINED-VALUE
    

    Вместо OBTAINED-VALUEвведите значение, полученное на шаге 3, без кавычек.


Обновление из OP:

также кажется, что мне нужно было указать имя для экземпляра xterm. Строка exec теперь выглядит какxterm -name myApp -e myScript.sh