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

Tim*_*Tim 45 unity java launcher

在 Natty 的 Unity 启动器中启动 Java 程序(如 IntelliJ IDEA 和 Crashplan)时,会显示重复的图标(见图)。对于 IntelliJ,我创建了 .desktop 文件,对于 Crashplan,应用程序提供了 .desktop 文件。是否可以在 .desktop 文件(或其他地方)中更改某些内容以防止这种情况发生?我找不到统一本身的错误报告,但是像 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
Run Code Online (Sandbox Code Playgroud)

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]=
Run Code Online (Sandbox Code Playgroud)

小智 47

StartupWMClass字符串添加到您的 .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
Run Code Online (Sandbox Code Playgroud)

线程中的更多详细信息(关于 AWN,但也适用于 Unity)

  • @Ivan:您不必同时使用两者,您可以使用*任何一个*。因此,如果 `jetbrains-idea` 是独一无二的,也是您想要的,请使用它*代替*`sun-awt-X11-XFramePeer` (2认同)

top*_*opr 9

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

StartupWMClass=jetbrains-idea
Run Code Online (Sandbox Code Playgroud)