MPRISがアプリケーションを認識しないようにする

MPRISがアプリケーションを認識しないようにする

私はよく、Chrome ブラウザの実行中にオーディオ プレーヤー (通常は Audacious v. 3.9) を実行しています。Chrome でビデオを開くと、オーディオ プレーヤーから MPRIS コントロールを「要求」するようです。ショートカット キーを使用して Audacious を制御する唯一の方法は、Chrome を閉じることです。

MPRISがChromeを「メディアプレーヤー」として認識しないようにする方法があるはずです。問題は、これらのアプリの1つ(または両方)がMPRISの機能を正しく「主張」していないことにあると思います。マニュアルページこれは変数に関係しますMPRIS_REMOTE_PLAYER:

MPRIS_リモートプレイヤー
未設定または に設定されている場合*、mpris-remote はorg.mpris.*D-BUS を介して " " に登録されている最初のプレーヤーと通信します。実行中の MPRIS 準拠プレーヤーが 1 つだけの場合は、これで問題ありません。実行中のプレーヤーが複数ある場合は、この変数を接続先のプレーヤーの名前に設定する必要があります。たとえば、 に設定されている場合foo、" " のプレーヤーと通信しようとしますorg.mpris.fooが、その名前のプレーヤーが存在しない場合は失敗します。

私の問題は、この変数をどのように設定すればよいか分からないことです。私はDバスエディタでこれに対応するものを探しました(回答のアナロジーに基づいて)トレイ内のメディアプレーヤー) がありますが、そこに関連する設定は見つかりませんでした。

一方、私は次のことを発見しました:

$ qdbus org.mpris.*
org.mpris.MediaPlayer2.audacious
org.mpris.MediaPlayer2.chrome.instance13448

つまり、Audaciousには独自のMPRISアイデンティティではどうすれば 防ぐChrome を MPRIS の目的で「メディア プレーヤー」として認識させないようにするにはどうすればよいですか? 設定に関するサポートをいただければ幸いです。

追伸私はUbuntu 18.04 LTSを使用しています。

答え1

この問題に対する「MPRIS 管理」ソリューションがあるかどうかを知っておくことは依然として良いことですが、Chrome 自体の設定を使用して回避する方法もあります。

Chrome はメディアキー/ショートカットの制御を「乗っ取る」ことにかなり積極的であるようです。これを無効にするには、次の手順に従います。投稿で見つけたGHacks.net サイト:

Google Chrome がメディア キーへのアクセスを制限しないようにするには、Chrome のハードウェア メディア キー処理フラグを無効にすることができます。手順は次のとおりです。

  1. chrome://flags/#hardware-media-key-handlingChrome のアドレス バーに読み込みます。読み込まれると適切なフラグが開きます。
  2. ハードウェアメディアキー処理フラグを無効
  3. Google Chromeを再起動します。

私のマシンでこのトグルを設定すると、Chrome は「再起動」ボタンを提供し、前のセッションまたは再起動されたセッションのタブをそのままにしてブラウザを再起動しました。

これで私の問題は解決しました。警告MPRIS の「解決策」 (つまり、MPRIS 仕様を使用して潜在的なメディア プレーヤーを「隠す」) がある場合でも、ぜひ知りたいと思います。 ;)

答え2

私は今「発見した」プレイヤーコントロール(または、Githubで) は、playerctlOP の問題の一部 (すべて?) を解決する素晴らしいコマンドライン ツールです。公式の「About」から引用:

Playerctl は、MPRIS D-Bus インターフェイス仕様を実装するメディア プレーヤーを制御するためのコマンド ライン ユーティリティおよびライブラリです。Playerctl を使用すると、再生や一時停止などのプレーヤー アクションをメディア キーに簡単にバインドできます。また、アーティストやタイトルなど、再生中のトラックに関するメタデータを取得して、ステータス ライン ジェネレーターやその他のコマンド ライン ツールに統合することもできます。

より上級のユーザー向けに、Playerctl は、メディア プレーヤー イベントをサブスクライブしたり、再生中のトラックのアーティストやタイトルなどのメタデータを取得したりする機能など、より詳細な制御を可能にする、お気に入りのスクリプト言語で利用できるイントロスペクト可能なライブラリを提供します。

これは、他の多くのことの中でも、特定のメディア プレーヤーをターゲットにしながら MPRIS コントロールを使用する非常に簡単な方法です。これは、次のように OP の主な懸念に直接対処するために使用できます。

  1. インストールplayerctl簡単に.deb
  2. 制御したいプレイヤーを特定します。これは、OP が行ったように、 への応答内の個別の終了要素から行うことも$ qdbus org.mpris.*、(playerctlそれ自体を使用して) を使用して行うこともできます$ playerctl --list-all
  3. 次に、そのプレーヤーの名前を使用して、使用したいコントロールをターゲットにすることができます (例: $ playerctl --player=audacious play-pause(再生/一時停止を切り替えます))。これで、他の MPRIS 関連プレーヤーがその命令を「盗む」ことはできなくなります。
  4. そのコマンドをショートカット キーに割り当てます (環境設定 > デバイス > キーボード > +)。

したがって、他のプレーヤー/アプリによって「乗っ取られる」ことのない MPRIS 命令をターゲットにすることは簡単な作業になります。これが OP の懸念の引き金となります。

完全な説明書は以下から入手できます。Playerctl の github readme

関連情報