當前位置: 首頁>>技術問答>>正文


如何在啟動器中刪除“launched” java程序的重複圖標?

, , ,

問題描述

在Natty的Unity啟動器中啟動java程序(如IntelliJ IDEA和Crashplan)時,會顯示重複的圖標(見圖)。對於IntelliJ,我創建了.desktop文件,對於Crashplan,.desktop文件隨應用程序提供。是否有可以在.desktop文件(或其他地方)中更改的內容可以防止這種情況發生?我找不到團結本身的錯誤報告,但像Gnome-Do /Docky這樣的程序有bug reports,並且必須對其應用程序進行內部更改以防止這種情況發生。

在此圖像中,第一個圖標是從.desktop文件創建的圖標,第二個圖標是在啟動它之後。關閉應用程序時,第二個圖標消失。

unity,launcher,java,ubuntu

自定義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

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/1788.html,未經允許,請勿轉載。