編集1

編集1

私は Firefox を使用して、いくつかの Web アプリケーションを「スタンドアロン」として実行しています。Firefox でそのアプリケーション専用の新しいプロファイルを作成し、最初のページを設定し、ログインして、特定のニーズに応じて UI をカスタマイズします。

次に、次のようにして、その Web アプリのインスタンスをすばやく起動できます。

firefox --no-remote -P My_app_profile the_app_url

さらに便利にするために、my_web_app.desktopファイルを作成して に配置し、お気に入りに設定し~/.local/share/applicationました。これにより、gnome shell サイドバーからすぐに実行できるようになります。

問題は、アプリケーションを実行した後、ファイアフォックスが実行されており、アプリではありません。たとえば、Trello のショートカットを作成しましたが、起動すると次のようになります。

Firefoxはハイライトされているが、Trelloはハイライトされていない

それは理にかなっています。それは実行中の Firefox ですが、代わりに自分のアプリケーションがハイライト表示され、他のインスタンスが実行されていないかのように Firefox アイコンが自由に使用できるようにしたいと思います。

gnome は実行可能ファイル名に応じてアイコンを強調表示する可能性があると思いましたが、firefox への単純なシンボリック リンクでは名前の変更はトリガーされません (つまり、link /usr/bin/firefox /usr/bin/my_app_firefox引き続き firefox としてカウントされます)。

これを修正する方法をご存知ですか? 私は gnome shell 3.18.2 を使用しています。

編集1

例として、trello.desktop ファイルを示します。私はオプションの専門家ではないので、おそらく何かひどく間違っていると思います... しかし、もし間違っていたとしても、望ましくない動作を引き起こすようなものではないようです。

[Desktop Entry]
Version=1.0
Name=Trello (FF)
GenericName=Trello Dashboards
Comment=Trello in FireFox
Exec=firefox --no-remote -P App_Trello http://trello.com
Icon=trello
Terminal=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
Categories=Network;WebBrowser;
Keywords=web;browser;internet;
X-Desktop-File-Install-Version=0.22

編集2

そこで、gnome-shell ソースコードどうしてこんなことが起こるのか調べてみました。ダッシュ各エントリはいくつかのシェルアプリ、どうやらアプリケーションの ID が一意であることを確認したいようです。

ルッキンググラス (Alt+F2 lg) を使用すると、現在実行中のアプリケーションの名前が「firefox.desktop」であることがわかりました。

appSys = Shell.AppSystem.get_default()
ll = appSys.get_running()
ll[0].get_id() // firefox.desktop (0 is the ID of the firefox app in my case)

trello.desktop アプリケーションを起動すると、get_running()メソッドは同じ数のエントリを返すため、アプリケーションは新しいエントリを生成せず、一意の ID を持つという私の仮説が確認されたようです。

そこで私はGAppInfo ソースコードIDを確認すると、xdg メニュー仕様そして、そこから私は探すこれ:

デスクトップ ファイルの ID を確認するには、デスクトップ ファイルがインストールされている $XDG_DATA_DIRS コンポーネントを基準とした完全なパスを作成し、「applications/」プレフィックスを削除して、「/」を「-」に変換します。

私の .desktop ファイルは にありましたが$HOME/.local/share/applications、私の にはありませんでした$XDG_DATA_DIRS

trello.deskop ファイルをそのパスのディレクトリに移動し、シェルを再起動しましたが、アプリケーションは として認識されたままなのでfirefox.desktop、どうやら ID は同じままで、実際にはアプリケーションは他の Firefox ウィンドウとグループ化されたままです。

なにか提案を?

答え1

つまり、どうやら私の 2 番目の編集は正しくなかったようです。GNOME Shell がアプリケーションのグループ化を決定する方法は、私が説明したものとは異なります。

IRC gnome-shell チャネルで質問したところ、ユーザー halfline がアプリケーションを Dash アイコンにグループ化するポリシーを教えてくれました。

ウィンドウの _GTK_APPLICATION_ID プロパティがデスクトップ ファイル ID に一致するか、WM_CLASS がデスクトップ ファイル ID に一致するか、_NET_WM_PID が開始したデスクトップ ファイルに一致するか、またはウィンドウの WM_CLASS に一致するデスクトップ ファイル内の StartupWMClass が一致するか

彼はまた、Firefox の WM_CLASS を変更できるかもしれないと示唆しましたが、--classFirefox にはそれを変更できるフラグがあるため、彼の言う通りです。

次に例を示します。

$ firefox &
$ xprop WM_CLASS
WM_CLASS(STRING) = "Navigator", "Firefox"

その旗を使うと

$ firefox --class "Trello" &
$ xprop WM_CLASS
WM_CLASS(STRING) = "Navigator", "Trello"

デスクトップのファイル ID と一致させるだけです。これでアイコンは正しくグループ化されます。

また、Epiphany はデスクトップ アプリの作成をサポートしており、デフォルトのブラウザーとのリンクを正しく処理するため、私の本来の目的には Firefox よりも優れています。

関連情報