web-dev-qa-db-ja.com

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

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

Duplicate Icons この画像では、最初のアイコンは.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]=
45
Tim

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 threadの詳細(これはAWNについてですが、Unityでも機能します)

46
451F

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

StartupWMClass=jetbrains-idea
8
topr

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
3
Corey

Eclipse 4.xおよび3.xの修正を文書化しました here

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

Eclipseの場合、起動も2ステップのプロセスです。

enter image description here

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

最初にEclipse -cleanを行うことを忘れないでください。

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

enter image description here

1
Delete

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

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

0
tom

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

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

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

0
rusins

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

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

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

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

0
idbrii

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

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

0
Weirdfellow