ランチャーで「起動された」Javaプログラムの重複アイコンを削除するにはどうすればよいですか?


45

NattyのUnityランチャーでJavaプログラム(IntelliJ IDEAやCrashplanなど)を起動すると、重複したアイコンが表示されます(画像を参照)。IntelliJでは.desktopファイルを作成し、Crashplanでは.desktopファイルがアプリケーションに付属しています。.desktopファイル(または他の場所)で、これを防ぐために変更できるものはありますか?Unity自体のバグレポートは見つかりませんでしたが、Gnome-Do / Dockyのようなプログラムにはバグ レポートがあり、これを防ぐためにアプリケーションに内部変更を加える必要がありました。

重複アイコンこの画像では、最初のアイコンは.desktopファイルから作成されたもので、2番目のアイコンは起動後のものです。アプリケーションを閉じると、2番目のアイコンが消えます。

カスタム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
UnityでMinecraftを起動すると、同様の問題が発生します
Marco Ceppi

2
神に感謝します。この問題は主流のユーザーに影響を与えます(以前はAWNや他のドック愛好家だけの問題でした)。Java(Javaだけでなく)アプリケーション開発者が、これを今すぐ修正することを検討することを望みます。ちなみに、Eclipseにはこのような問題はないようですが、MySQL WorkbenchとOpenOffice.orgでこれを修正することはできませんでした(LibreOfficeが登場する前にAWNを使用してみました)。
イヴァン

問題は、私が覚えている限り、アプリケーションが愚かな非識別WM_CLASS名を使用することです。
イヴァン

そのような問題がなければ、UnityまたはAWNを使用します。しかし、すべてのアプリケーションがそれらを完全にサポートしているわけではない限り、私は従来のタスクバーを好みます(半分のソリューションが嫌いだからです)。
イヴァン

回答:


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

このスレッドの詳細(これはAWNについてですが、Unityでも機能します)


1
これはCrashplanには最適ですStartupWMClass=CrashPlanが、IntelliJにはもう少し説得力が必要でした。適切に機能させるには、この情報(blog.jteam.nl/2011/01/09/…)を使用する必要がありました。
ティム

IntelliJを更新するためのちょっとした余地として、私はidea.shスクリプトではなくidea.vmoptionsを直接変更しました。-javaagent:agent.jar=IntelliJ_IDEAファイルに追加します。
ティム

1
IntelliJ 11では、agent.jarは不要になりました。StartupWMClass = JetBrainsの-アイデア
ティム

そしてjetbrains-idea-ce、Community Edition用。PS、ありがとう、ティム、451F。
シネソ

2
@Ivan:両方を使用する必要はなく、どちらかを使用できます。jetbrains-ideaあなたが望むユニークなものであれば、代わりにそれ使用してくださいsun-awt-X11-XFramePeer
-MestreLion

9

Ubuntu 11.10のIntellij Idea 11では、次の行のアイデアの.desktopファイルに追加する必要があります。

StartupWMClass=jetbrains-idea

4

JavaプログラムであるSQLDeveloperでこれを修正できました。

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

1
.desktopパラメータに変更する必要がありますのでのsqldeveloperバージョン4 WM_CLASSでは、 "オラクル・IDE-OSGiのブート・OracleIdeLauncher"、 "日-AWT-X11-XFramePeer"に変更:StartupWMClass =オラクル-IDE-OSGiのブート-OracleIdeLauncher
ピス14年

2

ここで、Eclipse 4.xおよび3.xの修正を文書化しまし

このソリューションはglx-dockまたはCairo-dock向けですが、に依存するすべてのタスクバーで機能しますWM_CLASS

日食の場合、打ち上げも2段階のプロセスです。

        ここに画像の説明を入力してください

基本的に、Eclipseバージョンに適用可能なEclipseブランドplugin.xmlを特定し、application nameプロパティを変更する必要があります。ワークベンチのメインウィンドウが作成されると、JfaceはSWTを呼び出し、Display.setNameこれによりWM_CLASSが設定されます。これがランチャー用に宣言されたWM_CLASSである場合、実行中のインスタンスはドックランチャーを見つけます。

eclipse -clean初めて行うことを忘れないでください。

タブスルーも大幅に改善されました。

ここに画像の説明を入力してください


0

IntelliJ IDEAは、スクリプト($ IDEA_HOME / bin / idea.sh)によって開始されます。ランチャーをクリックすると、スクリプトが実行され、Java実行可能ファイルが開始され、すぐに終了します。Unityは、開始したアプリケーション(スクリプト)が既に終了していることに気付きます。そのため、最初のIDEAアイコンにインジケーターはありません。ただし、現時点では別の(ランチャーによって起動された実行可能ファイルから)アプリケーションが実行されているため、2番目のIDEAアイコンが表示されています。

この動作の修正がすぐに実装されることを願っていますが、それほど簡単なものではありません。関連付けられるべきウィンドウとランチャーの間のリストの関連付けを手で維持する必要があります。


0

CrashPlanの場合、アプリファイルCrashPlan.desktopを/ usr / share / applicationsに移動してみてください。そこにあるアプリのみがランチャーにロックできます。

sudo mv ~/Desktop/CrashPlan.desktop /usr/share/applications/.

次に、ダッシュを使用してCrashPlanを実行してください。

IntelliJ IDEAでも同様のことができるかもしれませんが、スクリプトを実行しているため、正しく動作するかどうかはわかりません。


〜/ .local / share / applicationsに両方の.desktopファイルがあり、ランチャーにロックする問題はありません。私は...あなたはランチャーから起動ができますが、ロックされたと言ったときにはまだ発売されていないと利用でき意味と仮定しています
ティム

ふむ ランチャーに配置することはできません。私はアラカルト(メニューエディター)を使って私のものを作りました。〜/ .localが他のどこかにリンクされているためかもしれません...実行中の三角形(左側)とアクティブな三角形(右側)がアプリに表示されていますか?
idbrii

「起動済み」バージョンのアイコンの場合、はい。最初のショットで実行中の三角形を見ることができます。さらに調査を行ったところ、重複アイコンの回避策があると思います。ここに回答を投稿します。
ティム

@ 451Fが答えに私を打ち負かしたので、IntelliJをより良く動作させる方法についてのコメントに彼の答えに少し追加しました。
ティム

0

他の答えはどれもうまくいきませんでしたが、最終的にはさらに簡単な解決策を見つけました。

Intellij-Ideaを開き、上部のバーでツールのドロップダウンメニューを見つけます。次に、[ デスクトップエントリ作成 ]ボタンを選択します.local/share/applicationsフォルダーに適切に機能する.desktopエントリが作成され、使用しているデスクトップ環境によって認識されるはずです。重複したアイコンは作成されず、必要に応じてアイコンを変更することもできます。

残念ながら、nosplash引数を使用すると重複アイコンの問題が発生するため、それを修正する方法がわかりません。


0

Ubuntu 17.04にIntelliJ IDEA 2017.2.5をインストールした後(Numixアイコンを使用)、プログラムの.desktopファイルの行StartupWMClass=jetbrains-ideaStartupWMClass=jetbrains-idea-ceに変更して、重複アイコンが消えるようにしました。

「ce」は私が持っているCommunity Editionを表していると思うので、.desktopファイルのこのプロパティの値に「ce」という接尾辞が付いていなかった理由がわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.