Ubuntu Linux: Java ベースのプログラム (jar) を呼び出すときに、Cairo ドックのタスク バーにある二重アイコンを削除するにはどうすればよいでしょうか?

Ubuntu Linux: Java ベースのプログラム (jar) を呼び出すときに、Cairo ドックのタスク バーにある二重アイコンを削除するにはどうすればよいでしょうか?

gnome 3 を搭載した Ubuntu 20.04 で SoftSqueeze (Logitech Squeezebox をベースにした Java で書かれたソフトウェア ラジオ) にアイコンを割り当てたいです。

~/.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=)で見つかりますが、アプリケーションを起動すると、代わりにおかしなピクセル化されたヘッドフォンが表示されます。

Cairo ドックで、新しいランチャーを追加して、適切なコマンドとアイコンを指定してランチャーを作成しました。間違ったアイコン (おかしなピクセル化されたヘッドフォン) も表示されました。

この「ヘッドフォン」アイコンは、おそらくソフトスクイーズの瓶の中に設定されていると思います。

Gnome 3 と Cairo ドックで適切なアイコンを割り当てるにはどうすればいいですか?

答え1

解決方法: WM_CLASS (Cairo ドックでは「プログラムのクラス」と呼ばれ、デスクトップ エントリの追加パラメータにあります) を割り当てる必要があります。これは、ウィンドウ マネージャーとプログラム自体のインスタンス間のリンクのようなものです。そのため、このリンクが正しく設定されていると、ウィンドウ マネージャーは別のアイコン「インスタンス」 (二重アイコン。私のケースでは見た目も異なっていました (それでも、アイコンが同じでも二重の場合、この解決方法は機能するはずです)、Python やその他のスクリプト ベースのプログラムでも同様) を作成する必要がなくなります。

Gnome 3 の場合、ターミナルで次のコマンドを使用します。

xprop | grep WM_CLASS

すでに開始されフォアグラウンドに表示されている Java アプリケーションにポインターを表示してクリックすると、ターミナル ウィンドウに WM_CLASS の名前が表示されます。これを、上記の .desktop エントリにプロパティ "StartUpWMClass" として追加する必要があります。ファイルを保存すると、jar のアイコンが消えます。

私の場合は

StartupWMClass=org-titmuss-softsqueeze-Application

cairo ドックのデスクトップ エントリの追加パラメータにも同じことを行う必要があります。すると、「ヘッドフォン」アイコンが消え、アプリを起動したときに設定したアイコンだけがアイコンになります。

参照: Launchpadのバグの説明は、解決策を見つけるのに大いに役立ちました

関連情報