Что определяет, какой значок отображается для запущенной программы?

Я загрузил Arduino IDE v. 1.8.13 для 64-разрядной версии Linux. Это заархивированный архив, который вы распаковываете и запускаете двоичный файл. Чтобы сделать его доступным, я создал файл .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

Здесь файл значка находится в той же папке, что и программа. Теперь, когда я нажимаю супер-клавишу и начинаю набирать «ard ...», я вижу значок Arduino, и он запускает Arduino:

enter image description here

Аналогичным образом, когда я нажимаю супер-клавишу и начинаю печатать «sao ...», я вижу значок SAOimage, и он запустит SAOimage.

enter image description here

Но когда программы запущены, когда я нажимаю ALT + TAB между приложениями, Arduino отображается значком SAOimage, а SAOimage не имеет значка!

enter image description here

Кроме того, если я сначала запускаю SAOimage и , а затем Arduino, они запускаются в этом порядке. Но если я сначала запускаю Arduino, а затем нажимаю супер-клавишу, набираю sao и запускаю SAOimage, программа не запускается; вместо этого фокус просто переносится на Arduino.

Почему это? Я сделал что-то не так? Есть какой-то механизм, который я не понимаю? Насколько я понимаю, на основе файлов .desktop нет причин, по которым Ubuntu путает эти два ...?

1
задан 25 April 2021 в 14:00

1 ответ

Держу пари, это связано с StartupWMClass , последней строкой обоих файлов рабочего стола; в частности, путаница возникает из-за идентичности их ценностей.

Из этого сообщения мы видим, что StartupWMClass используется для описания того, какое приложение отвечает за окно (в случае, если приложение создает несколько разных типов окон).

Теперь, если в вашем сценарии есть два отдельных приложения, возможно, вам даже не понадобится объявление StartupWMClass ; или, по крайней мере, определенно не с одинаковыми значениями в обоих файлах рабочего стола.

1
ответ дан 26 April 2021 в 23:07

Другие вопросы по тегам:

Похожие вопросы: