Wodurch wird bestimmt, welches Symbol für ein laufendes Programm angezeigt wird?

Wodurch wird bestimmt, welches Symbol für ein laufendes Programm angezeigt wird?

Ich habe die Arduino IDE v. 1.8.13 für Linux 64-Bit heruntergeladen. Es handelt sich um ein komprimiertes Archiv, das Sie entpacken und die Binärdatei ausführen können. Um leicht darauf zugreifen zu können, habe ich eine .desktopDatei mit ~/.local/share/applications/dem Namen erstellt 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

Um das Arduino-Logo anzuzeigen, habe ich eine PNG-Datei mit dem Namen heruntergeladen arduino2.png, sie im selben Ordner abgelegt und, wie Sie sehen, auf die obige Datei verwiesen.

Etwa zur gleichen Zeit lud ich auch ein Programm namens SAOimage für astronomische Fotografie herunter. Auch .desktopfür dieses Programm musste ich eine Datei erstellen:

$ 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

Hier befindet sich die Symboldatei im selben Ordner wie das Programm. Wenn ich jetzt die Supertaste drücke und anfange, „ard...“ einzugeben, sehe ich das Arduino-Symbol und Arduino wird gestartet:

Bildbeschreibung hier eingeben

Ebenso wird das SAOimage-Symbol angezeigt, wenn ich die Supertaste drücke und anfange, „sao...“ einzugeben, und SAOimage wird gestartet.

Bildbeschreibung hier eingeben

Aber sobald die Programme laufen und ich mit ALT+TAB zwischen den Anwendungen wechsele, wird Arduino durch das SAOimage-Symbol dargestellt, und SAOimage hat kein Symbol!

Bildbeschreibung hier eingeben

Wenn ich SAOimage zum ersten Mal starte undDannArduino, sie starten in dieser Reihenfolge. Aber wenn ich zuerst Arduino starte und dann die Supertaste drücke, sao eingebe und SAOimage starte, startet das Programm nicht; stattdessen wird der Fokus einfach auf Arduino verschoben.

Warum ist das so? Habe ich etwas falsch gemacht? Gibt es einen Mechanismus, den ich nicht verstehe? Soweit ich das sehe, gibt es – basierend auf den .desktop-Dateien – keinen Grund dafür, dass Ubuntu die beiden verwechselt...?

Antwort1

Ich vermute, es hat mit StartupWMClassder letzten Zeile beider Desktopdateien zu tun. Die Verwirrung rührt insbesondere daher, dass ihre Werte identisch sind.

Aus diesem Beitragwir können sehen, dass es StartupWMClassverwendet wird, um zu beschreiben, welche Anwendung für ein Fenster verantwortlich ist (falls eine Anwendung mehrere verschiedene Arten von Fenstern erstellt).

Wenn Sie in Ihrem Szenario nun zwei separate Anwendungen haben, benötigen Sie die Deklaration möglicherweise nicht einmal StartupWMClass; oder zumindest definitiv nicht, wenn die Werte in beiden Desktopdateien identisch sind.

verwandte Informationen