Ícone ausente quando o aplicativo é iniciado

12

Eu criei um iniciador de aplicativos /usr/share/applicationsque inicia o rdesktop. O arquivo especifica um nome de ícone e eu adicionei os ícones a:

/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

Droga o iniciador na barra de tarefas e o iniciador com o logotipo correto fica visível na barra de tarefas. No entanto, quando inicio a tarefa, um novo ícone é criado na barra de tarefas, um quadrado com um ponto de interrogação no centro.

De que ícones eu preciso e onde, para que a barra de tarefas exiba o ícone correto para o aplicativo quando ele é iniciado?

O conteúdo do arquivo .desktop:

[Entrada na área de trabalho]
Versão = 1.0
Terminal = false
Icon = mswindows
Tipo = Aplicação
Categorias = Rede;
Exec = rdesktop win7shared1 -g 1680x1000

Nome = win7shared1
GenericName = rdesktop
Comment = Abrir área de trabalho do Windows

Palavras-chave = Windows
StartupNotify = false
clayton
fonte

Respostas:

15

O que provavelmente resolverá seu problema é fazer o seguinte:

  1. Abra a aplicação
  2. Quando estiver em execução, abra um terminal e digite:

    xprop WM_CLASS
    
  3. Em seguida, clique na janela aberta do aplicativo.

  4. A saída será parecida com (exemplo gedit):

    WM_CLASS(STRING) = "gedit", "Gedit"
    
  5. Use a primeira parte (neste caso seria gedit), para compor uma linha no seu .desktoparquivo:

    StartupWMClass=<string>
    

    (substitua <string>pela saída real (primeira parte da) de xprop WM_CLASS, por exemplo StartupWMClass=gedit)

Agora tente novamente (talvez seja necessário sair / entrar), provavelmente o aplicativo aparecerá no iniciador com seu próprio ícone.

Explicação

  • Quando um aplicativo inicia corretamente a partir de um iniciador ( .desktoparquivo), mas outro ícone aparece apenas com um ícone genérico (ponto de interrogação), é mais provável que a janela do aplicativo e o iniciador não se conectem por algum motivo, e o iniciador não reconhecer a janela do aplicativo como "dele". Geralmente, esse é o caso quando um script ou aplicativo não-padrão (comando) é usado. Nesses casos, a StartupWMClass=linha geralmente é a solução.
Jacob Vlijm
fonte
Obrigado Jacob. Isso resolveu o problema. Para o registro, a sequência WM_CLASS era "rdesktop", "rdesktop".
Clayton12
@clayton perfeito, feliz que funcionou.
Jacob Vlijm
1
Seu passo 2 pode ser reduzido, como xprop permite que você passe no átomo pretende devolvidos, correndo xprop WM_CLASSé suficiente
johndrinkwater
@johndrinkwater Absolutamente, obrigado pela dica. É mais de um ano atrás, mais de 14 meses é como outra pessoa escreveu :). Irá editar ...
Jacob Vlijm
@ jacob-vlijm :) apenas veio em frente, enquanto pesquisava um comportamento estranho xprop
johndrinkwater
2

para mim xprop|grep WM_CLASSdeu WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "jetbrains-pycharm-ce"(eu estava tendo esse problema com pycharm para python)

Era o sun-awt-X11-XFramePeerque eu precisava como a string no meu arquivo .desktop (sem aspas) - Obrigado!

user245936
fonte
Eu adicionei StartupWMClass=sun-awt-X11-XFramePeerao meu e nada aconteceu! O .desktoparquivo está localizado na pasta inicial?
precisa saber é o seguinte
0

Depois de colocar os ícones no lugar certo, você deve simplesmente reiniciar o xserver (sair e fazer login novamente).
Tente também atualizar o cache do ícone (basta colar o código abaixo no terminal):

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
fonte