如何删除启动器中“启动”的 Java 程序的重复图标?

如何删除启动器中“启动”的 Java 程序的重复图标?

在 Natty 的 Unity 启动器中启动 Java 程序(如 IntelliJ IDEA 和 Crashplan)时,会显示重复的图标(见图)。对于 IntelliJ,我创建了 .desktop 文件,对于 Crashplan,.desktop 文件随应用程序提供。是否可以在 .desktop 文件(或其他地方)中更改某些内容以防止发生这种情况?我找不到 Unity 本身的错误报告,但 Gnome-Do/Docky 等程序有漏洞 报告并且必须对其应用程序进行内部更改以防止这种情况发生。

重复图标在此图中,第一个图标是从 .desktop 文件创建的图标,第二个图标是启动后创建的图标。关闭应用程序时,第二个图标会消失。

自定义 IntelliJ .desktop 文件

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/opt/idea/bin/idea128.png
Name[en_US]=IntelliJ IDEA
Exec=/opt/idea/bin/idea.sh
Name=IntelliJ IDEA
Icon=/opt/idea/bin/idea128.png
StartupNotify=true

Crashplan 提供 .desktop 文件

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=CrashPlan
Categories=;
Comment=CrashPlan Desktop UI
Comment[en_CA]=CrashPlan Desktop UI
Exec=/usr/local/crashplan/bin/CrashPlanDesktop
Icon=/usr/local/crashplan/skin/icon_app_64x64.png
Hidden=false
Terminal=false
Type=Application
GenericName[en_CA]=

答案1

添加启动WMClass字符串放入你的 .desktop 文件中。使用xprop命令获取此类。例如:

$ xprop|grep WM_CLASS
 WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread"

$ cat /usr/share/applications/PHPStorm.desktop | grep StartupWM
StartupWMClass=sun-awt-X11-XFramePeer

更多详情线程(关于 AWN,但也适用于 Unity)

答案2

对于 Ubuntu 11.10 下的 Intellij Idea 11,需要在 idea 的 .desktop 文件中添加以下行:

StartupWMClass=jetbrains-idea

答案3

我可以为 SQLDeveloper(一个 Java 程序)修复此问题:

使用 xprop(然后单击 SQLDeveloper 窗口),我发现以下输出行:

WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "oracle-ide-boot-Launcher"

根据上述评论以及https://bugs.launchpad.net/unity/+bug/757991,我在本地 sqldeveloper.desktop 文件中添加了以下行:

StartupWMClass=oracle-ide-boot-Launcher

答案4

IntelliJ IDEA 由脚本 ($IDEA_HOME/bin/idea.sh) 启动。单击其启动器时,将执行该脚本,启动一个 Java 可执行文件并立即退出。Unity 注意到您启动的应用程序(脚本)已经退出 - 这就是第一个 IDEA 图标上没有指示器的原因。但是,目前还有另一个(来自启动器启动的可执行文件)应用程序正在运行 - 这就是显示第二个 IDEA 图标的原因。

我希望能尽快修复此问题 - 但这不是一件容易的事情。它必须涉及手动维护的列表关联,以关联应关联的窗口和启动器。

相关内容