NattyのUnityランチャーでJavaプログラム(IntelliJ IDEAやCrashplanなど)を起動すると、重複したアイコンが表示されます(画像を参照)。 IntelliJでは.desktopファイルを作成し、Crashplanでは.desktopファイルがアプリケーションに付属しています。 .desktopファイル(または他の場所)で、これが発生しないように変更できるものはありますか? Unity自体のバグレポートは見つかりませんでしたが、Gnome-Do/Dockyのようなプログラムには bugreports があり、これを防ぐためにアプリケーションに内部変更を加える必要がありました。
この画像では、最初のアイコンは.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]=
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でも機能します)
Ubuntu 11.10のIntellij Idea 11では、次の行のアイデアの.desktopファイルに追加する必要があります。
StartupWMClass=jetbrains-idea
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
Eclipse 4.xおよび3.xの修正を文書化しました here 。
このソリューションはglx-dockまたはCairo-dock向けですが、WM_CLASS
に依存するすべてのタスクバーで機能します。
Eclipseの場合、起動も2ステップのプロセスです。
基本的に、Eclipseバージョンに適用可能なEclipseブランドplugin.xmlを特定し、application name
プロパティを変更する必要があります。ワークベンチのメインウィンドウが作成されると、JfaceはSWT Display.setName
を呼び出し、これによりWM_CLASSが設定されます。これがランチャー用に宣言されたWM_CLASSである場合、実行中のインスタンスはドックランチャーを見つけます。
最初にEclipse -clean
を行うことを忘れないでください。
タブスルーも大幅に改善されました。
Ubuntu 17.04でIntelliJ IDEA 2017.2.5をインストールした後(Numixアイコンを使用)、プログラムの.desktopファイルのStartupWMClass=jetbrains-idea
をStartupWMClass=jetbrains-idea-ce
に変更して、重複アイコンが消えるようにしました。
「ce」は私が所有しているCommunity Editionを表していると思うので、.desktopファイルのこのプロパティの値に元々「ce」という接尾辞が付いていなかった理由はわかりません。
他の答えはどれも私にとってはうまくいきませんでしたが、最終的にはさらに簡単な解決策を見つけました。
Intellij-Ideaを開き、トップバーでtoolsドロップダウンメニューを見つけます。次に、デスクトップエントリの作成ボタンを選択します。 .local/share/applications
フォルダに適切に機能する.desktopエントリが作成され、使用しているデスクトップ環境で認識されるはずです。重複したアイコンは作成されず、必要に応じてアイコンを変更することもできます。
残念ながら、nosplash
引数を使用すると、重複アイコンの問題が再発するため、それを修正する方法がわかりません。
CrashPlanの場合、アプリファイルCrashPlan.desktopを/ usr/share/applicationsに移動してみてください。そこにあるアプリのみがランチャーにロックできます。
Sudo mv ~/Desktop/CrashPlan.desktop /usr/share/applications/.
次に、ダッシュを使用してCrashPlanを実行してみてください。
IntelliJ IDEAでも同様のことができるかもしれませんが、スクリプトを実行しているため、正しく動作するかどうかはわかりません。
IntelliJ IDEAは、スクリプト($ IDEA_HOME/bin/idea.sh)によって開始されます。ランチャーをクリックすると、スクリプトが実行され、Java実行可能ファイルが開始され、すぐに終了します。 Unityは、起動したアプリケーション(スクリプト)が既に終了していることに気付きます。そのため、最初のIDEAアイコンにインジケーターがありません。ただし、他の(ランチャーによって起動された実行可能ファイルからの)アプリケーションが現在実行されているため、2番目のIDEAアイコンが表示されます。
この動作の修正がすぐに実装されることを願っていますが、それほど簡単なものではありません。関連付けられるべきウィンドウとランチャーの間のリストの関連付けを手動で管理する必要があります。