Ubuntu Linux:如何在调用基于 Java 的程序(jar)时删除 Cairo dock 任务栏中的双图标?

Ubuntu Linux:如何在调用基于 Java 的程序(jar)时删除 Cairo dock 任务栏中的双图标?

我想在带有 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 Dock 中,我通过添加新启动器创建了一个启动器,并为其提供了正确的命令和图标。但它也出现了错误的图标(一个有趣的像素化耳机)。

我猜测这个“耳机”图标可能是设置在 softsqueeze 的罐子里。

如何在 Gnome 3 和 Cairo dock 中分配正确的图标?

答案1

解决方案:必须分配一个 WM_CLASS(在 Cairo dock 中称为“程序类”,位于桌面条目的额外参数中)。它有点像窗口管理器和程序本身实例之间的链接,所以我的解释是,正确设置该链接后,窗口管理器不必创建另一个图标“实例”(双图标,在我的情况下看起来也不同(如果图标相同但为双重,解决方案也应该有效),甚至在 python 或其他基于脚本的程序上也是如此):

对于 Gnome 3,我在终端中使用以下命令:

xprop | grep WM_CLASS

然后我用显示的指针单击已启动并在前台显示的 Java 应用程序,并在终端窗口中获​​取 WM_CLASS 的名称。我必须将其作为属性“StartUpWMClass”添加到上面的 .desktop 条目中。保存文件,jar 的图标将消失。

就我而言

StartupWMClass=org-titmuss-softsqueeze-Application

您必须对 cairo dock 中桌面条目的额外参数执行相同的操作。然后“耳机”图标将消失,启动应用程序时,您设置的图标将成为唯一的图标。

参考: Launchpad Bug 描述对我找到解决方案有很大帮助

相关内容