问题描述
在Natty的Unity启动器中启动java程序(如IntelliJ IDEA和Crashplan)时,会显示重复的图标(见图)。对于IntelliJ,我创建了.desktop文件,对于Crashplan,.desktop文件随应用程序提供。是否有可以在.desktop文件(或其他地方)中更改的内容可以防止这种情况发生?我找不到团结本身的错误报告,但像Gnome-Do /Docky这样的程序有bug reports,并且必须对其应用程序进行内部更改以防止这种情况发生。
在此图像中,第一个图标是从.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]=
最佳解决方法
将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
this线程中的更多deatils(关于AWN,但也适用于Unity)
次佳解决方法
对于Ubuntu 11.10下的Intellij Idea 11,必须在以下行添加想法的.desktop文件:
StartupWMClass=jetbrains-idea
第三种解决方法
我能够为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