O que determina qual ícone é mostrado para um programa em execução?

O que determina qual ícone é mostrado para um programa em execução?

Baixei o Arduino IDE v. 1.8.13 para Linux de 64 bits. É um arquivo compactado, que você descompacta e executa o binário. Para facilitar o acesso, criei um .desktoparquivo ~/.local/share/applications/chamado arduino.desktop:

$ cat arduino.desktop 
[Desktop Entry]
Type=Application
Name=Arduino IDE
GenericName=Arduino IDE
Comment=Open-source electronics prototyping platform
Exec=/home/steen/Programmer/Arduino/arduino
Icon=/home/steen/.local/share/applications/arduino2.png
Terminal=false
Categories=Development;IDE;Electronics;
MimeType=text/x-arduino;
Keywords=embedded electronics;electronics;avr;microcontroller;
StartupWMClass=processing-app-Base

Para exibir o logotipo do Arduino, baixei um PNG chamado arduino2.pnge coloquei na mesma pasta, e referenciei o arquivo acima, como você pode ver.

Aproximadamente ao mesmo tempo, também baixei um programa chamado SAOimage para imagens astronômicas. Também tive que criar um .desktoparquivo para este programa:

$ cat saoimage.desktop 
[Desktop Entry]
Type=Application
Name=SAOImage DS9
GenericName=SAOImage DS9
Comment=Astronomical Fits File Editor
Exec=/home/steen/Programmer/SAOImage/ds9
Icon=/home/steen/Programmer/SAOImage/saoimage.png
Terminal=false
Categories=Graphics
MimeType=image/svg+xml;
Keywords=
StartupWMClass=processing-app-Base

Aqui, o arquivo do ícone está na mesma pasta do programa. Agora, quando pressiono a tecla super e começo a digitar "ard...", vejo o ícone do Arduino e ele inicia o Arduino:

insira a descrição da imagem aqui

Da mesma forma, quando pressiono a tecla super e começo a digitar "sao...", vejo o ícone SAOimage e ele inicia o SAOimage.

insira a descrição da imagem aqui

Mas uma vez que os programas estão em execução, quando eu uso ALT+TAB entre os aplicativos, o Arduino é representado pelo ícone SAOimage, e o SAOimage não tem ícone!

insira a descrição da imagem aqui

Além disso, se eu iniciar primeiro o SAOimage eentãoArduino, eles começam nessa ordem. Mas se eu iniciar o Arduino primeiro e depois pressionar a tecla super, digitar sao e iniciar o SAOimage, o programa não inicia; em vez disso, o foco é apenas mudado para o Arduino.

Por que é isso? Fiz algo errado? Existe algum mecanismo que eu não entendo? Pelo que posso ver, não há razão - com base nos arquivos .desktop - para que o Ubuntu confunda os dois ...?

Responder1

Aposto que tem a ver com StartupWMClassa última linha de ambos os arquivos da área de trabalho; especificamente, a confusão decorre de como seus valores são idênticos.

Desta postagempodemos ver que StartupWMClassé usado para descrever qual aplicativo é responsável por uma janela (caso um aplicativo esteja criando vários tipos diferentes de janelas).

Agora, se você tiver dois aplicativos separados em seu cenário, possivelmente nem precisará da StartupWMClassdeclaração; ou pelo menos definitivamente não com valores idênticos em ambos os arquivos da área de trabalho.

informação relacionada