¿Qué determina qué icono se muestra para un programa en ejecución?

¿Qué determina qué icono se muestra para un programa en ejecución?

Descargué Arduino IDE v. 1.8.13 para Linux de 64 bits. Es un archivo comprimido, que se descomprime y ejecuta el binario. Para que sea fácilmente accesible, creé un .desktoparchivo ~/.local/share/applications/llamado 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 que se muestre el logotipo de Arduino, descargué un archivo PNG llamado arduino2.png, lo puse en la misma carpeta y le hice referencia al archivo anterior, como puede ver.

Aproximadamente al mismo tiempo, también descargué un programa llamado SAOimage para imágenes astronómicas. También tuve que crear un .desktoparchivo 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

Aquí, el archivo del icono está en la misma carpeta que el programa. Ahora, cuando presiono la supertecla y empiezo a escribir "ard..." veo el icono de Arduino y se inicia Arduino:

ingrese la descripción de la imagen aquí

Del mismo modo, cuando presiono la supertecla y empiezo a escribir "sao..." veo el icono de SAOimage y se inicia SAOimage.

ingrese la descripción de la imagen aquí

Pero una vez que los programas se están ejecutando, cuando presiono ALT+TAB entre aplicaciones, Arduino está representado por el ícono SAOimage, ¡y SAOimage no tiene ícono!

ingrese la descripción de la imagen aquí

Además, si inicio SAOimage por primera vez yentoncesArduino, empiezan en ese orden. Pero si inicio Arduino primero y luego presiono la tecla super, escribo sao e inicio SAOimage, el programa no se inicia; en cambio, el enfoque simplemente se desplaza a Arduino.

¿Por qué es esto? ¿Hice algo malo? ¿Hay algún mecanismo que no entiendo? Por lo que puedo ver, no hay ninguna razón, según los archivos .desktop, por la que Ubuntu confunda los dos...

Respuesta1

Apuesto a que tiene que ver con StartupWMClass, la última línea de ambos archivos de escritorio; específicamente, la confusión surge de cómo sus valores son idénticos.

De esta publicaciónPodemos ver que StartupWMClassse usa para describir qué aplicación es responsable de una ventana (en caso de que una aplicación esté creando varios tipos diferentes de ventanas).

Ahora bien, si tiene dos aplicaciones separadas en su escenario, es posible que ni siquiera necesite la StartupWMClassdeclaración; o al menos, definitivamente no con valores idénticos en ambos archivos de escritorio.

información relacionada