Sincronizar ícones entre .desktop e dock

Jun 02 2020

Eu criei uma entrada personalizada .desktop em meu diretório inicial ~/.local/share/applications/startMyApp.desktoppara que usasse um xterm em vez do gnome-terminal. Eu quero que ele tenha uma aparência diferente no dock dos meus terminais gnome que eu uso interativamente.

Os startMyApp.desktopparece:

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

Eu criei um arquivo de ícone em ~/.icons/myIcon.png

O ícone aparece corretamente no navegador de arquivos padrão. Quando aberto em um navegador de arquivos, ele executa o script em um xterm conforme o esperado; no entanto, o ícone no dock aparece como algum outro ícone xterm genérico. De onde vem esse ícone? Está embutido no binário?

Como eu posso mudar isso? Quero que o ícone no dock seja igual ao especificado no .desktoparquivo. Os aplicativos incluídos no Ubuntu têm o mesmo ícone no dock quando iniciados (além dos pontos vermelhos que indicam quantas janelas estão abertas).

Respostas

pomsky Jun 01 2020 at 22:18

Você precisa adicionar uma StartupWMClassentrada adequada ao seu .desktoparquivo. Para fazer isso, siga as etapas abaixo.

  1. Inicie o aplicativo em questão.
  2. Abra uma janela separada do Terminal e execute xprop WM_CLASS.
  3. Coloque o cursor sobre a janela do aplicativo aberto em questão. O cursor deve se transformar em uma cruz agora. Clique. Você deve obter uma WM_CLASSstring para o aplicativo na janela Terminal.
  4. No .desktoparquivo, adicione a seguinte linha

    StartupWMClass=OBTAINED-VALUE
    

    Em vez de OBTAINED-VALUEcolocar um valor obtido na etapa 3, sem aspas.


Atualização do OP:

também parece que eu precisei fornecer um nome para a instância xterm. A linha exec agora parecexterm -name myApp -e myScript.sh