我想在带有 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 中桌面条目的额外参数执行相同的操作。然后“耳机”图标将消失,启动应用程序时,您设置的图标将成为唯一的图标。