阻止 MPRIS 識別應用程式

阻止 MPRIS 識別應用程式

我經常在 Chrome 瀏覽器運行的同時運行音訊播放器(通常是 Audacious v. 3.9)。如果我在 Chrome 中打開視頻,它似乎會“聲明”音頻播放器的 MPRIS 控制。讓我的快捷鍵控制 Audacious 的唯一方法是關閉 Chrome。

必須有一種方法可以阻止 MPRIS 將 Chrome 識別為「媒體播放器」。我認為問題在於這些應用程式之一(或兩個)沒有「聲明」MPRIS 功能正常。根據手冊頁,這與一個變數有關MPRIS_REMOTE_PLAYER

MPRIS_REMOTE_PLAYER
如果未設定或設定為,mpris-remote 將透過 D-BUS*與它發現的在「 」下註冊的第一個播放器進行通訊。org.mpris.*如果您只運行一個符合 MPRIS 標準的播放器,那麼這就沒問題。如果您有多個正在運行的玩家,您需要將此變數設定為您想要連接的玩家的名稱。例如,如果設定為foo,它將嘗試與「」的玩家進行通信org.mpris.foo,如果該名稱不存在任何內容,則會失敗。

我的問題是我不知道如何設定這個變數。我在 D-bus 編輯器中查找了與此相對應的內容(在關於的答案中進行類比)托盤中的媒體播放器),但我可以發現那裡沒有相關設定。

同時,我發現了這一點:

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

所以看來 Audacious 確實有它「自己的」MPRIS 身份,那麼我怎樣才能 防止Chrome 會被視為 MPRIS 用途的「媒體播放器」?任何有關設置的幫助將不勝感激。

PS我使用的是 Ubuntu 18.04 LTS。

答案1

雖然知道是否有「MPRIS 管理」的解決方案來解決這個問題仍然是件好事,但有一個使用 Chrome 本身設定的解決方法。

看來 Chrome 在「接管」媒體鍵/快捷鍵的控制方面相當積極。可以按照以下步驟停用此功能,在一個帖子裡找到的在 GHaks.net 網站上:

目前,您可以在 Chrome 中停用硬體媒體金鑰處理標誌,以防止 Google Chrome 限制媒體金鑰存取。這是如何完成的:

  1. chrome://flags/#hardware-media-key-handling在Chrome地址欄中載入;這應該在加載時打開正確的標誌。
  2. 將硬體媒體金鑰處理標誌設定為殘障人士
  3. 重新啟動谷歌瀏覽器。

當我在電腦上設定此開關時,Chrome 提供了一個「重新啟動」按鈕,該按鈕可以重新啟動瀏覽器,並且上一個/重新啟動的會話中的選項卡完好無損。

這解決了我的問題——警告如果有 MPRIS「解決方案」(即使用 MPRIS 規範來「隱藏」潛在的媒體播放器),我仍然想知道。 ;)

答案2

我剛剛“發現”播放器控制(或者,在 Github 上)。playerctl是一個很棒的命令列工具,可以解決 OP 的一些(全部?)問題。來自官方“關於”:

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 自述文件

相關內容