Ubuntu Linux: Java 기반 프로그램(jar)을 호출할 때 Cairo 도크의 작업 표시줄에 있는 이중 아이콘을 어떻게 제거합니까?

Ubuntu Linux: Java 기반 프로그램(jar)을 호출할 때 Cairo 도크의 작업 표시줄에 있는 이중 아이콘을 어떻게 제거합니까?

gnome 3을 사용하는 Ubuntu 20.04의 SoftSqueeze(Java로 작성된 Logitech Squeezebox 기반 소프트웨어 라디오)에 아이콘을 할당하고 싶습니다.

~/.loca/share/applications에 .desktop 파일을 만들었습니다.

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=SoftSqueeze
Icon=/opt/softsqueeze_3.9.2/icons/icon256.xpm
Exec=java -jar /opt/softsqueeze_3.9.2/SoftSqueeze.jar
Terminal=false
StartupNotify=false
StartupWMClass=SoftSqueeze
NoDisplay=false
MimeType=application/x-java-archive;application/java-archive;application/x-jar;
X-UnityGenerated=true

그 후, 올바른 세트 아이콘(위에서 지정됨)이 있는 애플리케이션을 찾았지만 Icon=, 애플리케이션을 시작하면 대신 재미있는 픽셀화된 헤드폰이 표시됩니다.

카이로 도크에서는 새로운 런처를 추가하여 런처를 생성하고 그에 맞는 명령과 아이콘을 부여했습니다. 또한 잘못된 아이콘(재미있는 픽셀화된 헤드폰)도 나타났습니다.

나는 이 "헤드폰" 아이콘이 아마도 소프트스퀴즈 병 안에 설정되어 있다고 가정합니다.

Gnome 3 및 Cairo 도크에서 올바른 아이콘을 어떻게 할당합니까?

답변1

해결 방법: WM_CLASS를 할당해야 합니다(카이로 도크에서는 "프로그램 클래스"라고 하며 데스크탑 항목의 추가 매개변수에 있음). 이는 Windows 관리자와 프로그램 자체의 인스턴스 사이의 링크와 비슷하므로 해당 링크가 올바르게 설정된 경우 창 관리자는 다른 아이콘 "인스턴스"(이중 아이콘)를 만들 필요가 없습니다. 내 경우도 다르게 보였습니다(그럼에도 불구하고 솔루션은 아이콘이 동일하지만 두 배인 경우에도 작동해야 함). Python 또는 기타 스크립트 기반 프로그램에서도 마찬가지입니다.

Gnome 3의 경우 터미널에서 다음 명령을 사용합니다.

xprop | grep WM_CLASS

이미 시작된 포인터가 전경에 표시된 상태에서 클릭하면 터미널 창에 WM_CLASS 이름이 표시됩니다. 이를 위의 .desktop 항목에 "StartUpWMClass" 속성으로 추가해야 합니다. 파일을 저장하면 항아리 아이콘이 사라집니다.

내 경우에는 그랬다.

StartupWMClass=org-titmuss-softsqueeze-Application

카이로 도크에 있는 데스크탑 항목의 추가 매개변수에도 동일한 작업을 수행해야 합니다. 그러면 "헤드폰" 아이콘이 사라지고 앱을 시작할 때 설정된 아이콘이 유일한 아이콘이 됩니다.

참조: 솔루션을 찾는 데 많은 도움이 된 Launchpad 버그 설명

관련 정보