編集1

編集1

私はFirefoxを「スタンドアロン」として使用していくつかのWebアプリケーションを実行します。 Firefoxを使用してアプリケーションに適した新しいプロファイルを作成し、ホームページを設定し、ログインを実行し、UIを自分のニーズに合わせてカスタマイズします。

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

firefox --no-remote -P My_app_profile the_app_url

より良くするために、my_web_app.desktopファイルを作成してお気に入りに追加して、~/.local/share/applicationGNOMEシェルサイドバーですばやく実行できるようにしました。

問題は、アプリケーションを実行した後Firefoxブラウザ私のアプリケーションの代わりに実行しています。たとえば、Trelloへのショートカットを作成しましたが、実行した後、次の内容を確認しました。

Firefoxは強調表示されますが、Trelloは強調表示されません。

今これは意味があります。なぜならこれはFirefoxは実行中ですが、私のアプリが強調表示され、他のインスタンスが実行されていないかのようにFirefoxアイコンを自由に使用できるようにしたいと思います。

私はgnomeが実行可能ファイル名に基づいてアイコンを強調表示できると思いますが、Firefoxへの単純なシンボリックリンクは名前の変更をトリガーしません(つまり、link /usr/bin/firefox /usr/bin/my_app_firefoxFirefoxとして計算されます)。

この問題を解決する方法を知っていますか?私はGNOMEシェル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シェルのソースコードどうやってこのようなことが起こったのか見てください。私が見つけた場所スプリント各項目はいくつかの項目に関連付けられています。シェルアプリケーション、当然私のアプリケーションの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/」プレフィックスを削除してから「/」を「-」に変更します。

$HOME/.local/share/applications私の.desktopファイルの代わりに私の.desktopファイルがあります$XDG_DATA_DIRS

trello.deskopファイルをそのパス内のディレクトリに移動してシェルを再起動しましたが、アプリケーションは引き続き表示されるため、firefox.desktop明らかにIDはまだ同じで、実際にはアプリケーションは別のFirefoxウィンドウとグループ化されています。

どんな提案がありますか?

ベストアンサー1

したがって、2番目の編集内容は間違っているようです。 GNOME Shellがアプリケーションのグループ化を決定する方法は、私が説明した方法とは異なります。

IRC gnome-shellチャンネルに問い合わせた後、ユーザーhalflineはアプリケーションをダッシュ​​アイコンにグループ化する戦略を提供しました。

ウィンドウの_GTK_APPLICATION_ID属性がデスクトップファイルIDと一致するか、WM_CLASSがデスクトップファイルIDと一致するか、_NET_WM_PIDが開始されたデスクトップファイルと一致するか、デスクトップファイルのStartupWMClassがウィンドウのWM_CLASSと一致します。

--class彼はまた、Firefox WM_CLASSを変更できることを提案しました。

例は次のとおりです。

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

そのフラグを使うと

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

デスクトップファイルIDと一致します。これでアイコンが正しくグループ化されました。

また、Epiphanyはデフォルトのブラウザを使用してリンクを正しく処理するデスクトップアプリケーションの作成をサポートしているため、元の目的ではFirefoxよりもはるかに優れています。

おすすめ記事