실행 중인 프로그램에 표시되는 아이콘은 어떻게 결정됩니까?

실행 중인 프로그램에 표시되는 아이콘은 어떻게 결정됩니까?

Linux 64비트용 Arduino IDE v. 1.8.13을 다운로드했습니다. 압축을 풀고 바이너리를 실행하는 압축된 아카이브입니다. 쉽게 접근할 수 있도록 다음과 같은 .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가 시작됩니다.

여기에 이미지 설명을 입력하세요

마찬가지로 슈퍼 키를 누르고 "sao..."를 입력하기 시작하면 SAOimage 아이콘이 보이고 SAOimage가 시작됩니다.

여기에 이미지 설명을 입력하세요

그러나 프로그램이 실행된 후 응용 프로그램 간에 ALT+TAB을 누르면 Arduino는 SAOimage 아이콘으로 표시되고 SAOimage에는 아이콘이 없습니다!

여기에 이미지 설명을 입력하세요

또한 SAOimage를 처음 시작하면그 다음에Arduino는 그 순서대로 시작합니다. 하지만 먼저 Arduino를 시작한 다음 슈퍼 키를 누르고 sao를 입력하고 SAOimage를 시작하면 프로그램이 시작되지 않습니다. 대신 초점은 Arduino로 옮겨졌습니다.

왜 이런거야? 내가 뭔가 잘못한 걸까요? 내가 이해하지 못하는 메커니즘이 있나요? 내가 볼 수 있는 한, .desktop 파일을 기반으로 우분투가 두 파일을 혼동할 이유가 없습니다...?

답변1

StartupWMClass나는 그것이 두 데스크톱 파일의 마지막 줄인 와 관련이 있다고 확신합니다 . 특히, 혼란은 그들의 가치가 어떻게 동일한지에서 비롯됩니다.

이 게시물에서어떤 응용 프로그램이 창을 담당하는지 설명하는 데 사용되는 것을 볼 수 있습니다 StartupWMClass(응용 프로그램이 여러 종류의 창을 생성하는 경우).

이제 시나리오에 두 개의 별도 애플리케이션이 있는 경우 선언이 필요하지 않을 수도 있습니다 StartupWMClass. 또는 적어도 두 데스크톱 파일 모두에서 동일한 값이 아닙니다.

관련 정보