Я скачал Arduino IDE v. 1.8.13 для Linux 64-bit. Это архив, который вы распаковываете и запускаете бинарный файл. Чтобы иметь к нему легкий доступ, я создал файл .desktop
под ~/.local/share/applications/
названием 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
Чтобы отобразить логотип Arduino, я скачал файл PNG с именем arduino2.png
и поместил его в ту же папку, а также сослался на него в указанном выше файле, как вы можете видеть.
Примерно в то же время я также скачал программу SAOimage для астрономической визуализации. Мне также пришлось создать .desktop
файл для этой программы:
$ 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
Здесь файл значка находится в той же папке, что и программа. Теперь, когда я нажимаю клавишу super и начинаю вводить "ard...", я вижу значок Arduino, и он запускает Arduino:
Аналогично, когда я нажимаю клавишу Super и начинаю вводить «sao...», я вижу значок SAOimage, и он запускает SAOimage.
Но как только программы запущены, при нажатии ALT+TAB между приложениями Arduino отображается значком SAOimage, а у SAOimage значка нет!
Кроме того, если я сначала запущу SAOimage изатемArduino, они запускаются в этом порядке. Но если я сначала запущу Arduino, а затем нажму super key, введу sao и запущу SAOimage, программа не запустится; вместо этого фокус просто переместится на Arduino.
Почему так? Я что-то не так сделал? Есть ли какой-то механизм, который я не понимаю? Насколько я могу судить, нет причин — основываясь на файлах .desktop — что Ubuntu путает эти два...?
решение1
Держу пари, что это связано с StartupWMClass
последней строкой обоих файлов рабочего стола; в частности, путаница возникает из-за того, что их значения идентичны.
Из этого постамы видим, что StartupWMClass
используется для описания того, какое приложение отвечает за окно (в случае, если приложение создает несколько разных видов окон).
Теперь, если в вашем сценарии есть два отдельных приложения, вам, возможно, даже не нужно это StartupWMClass
объявление; или, по крайней мере, оно определенно не будет иметь идентичных значений в обоих файлах рабочего стола.