我经常在 Chrome 浏览器运行时运行音频播放器(通常是 Audacious v. 3.9)。如果我在 Chrome 中打开视频,它似乎会从音频播放器中“索取”MPRIS 控件。获取控制 Audacious 的快捷键的唯一方法是关闭 Chrome。
一定有办法阻止 MPRIS 将 Chrome 识别为“媒体播放器”。我认为问题在于其中一个(或两个)应用程序没有“声称”MPRIS 正常运行。根据手册页,这与一个变量有关MPRIS_REMOTE_PLAYER
:
MPRIS_REMOTE_播放器
如果未设置或设置为*
,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 的“媒体播放器”?任何有关设置的帮助都将不胜感激。
附言我在使用 Ubuntu 18.04 LTS。
答案1
尽管了解是否有一个“MPRIS 管理”的解决方案来解决这个问题仍然是件好事,但是可以使用 Chrome 本身的设置来解决这个问题。
Chrome 似乎非常积极地“接管”媒体键/快捷键的控制权。可以按照以下步骤禁用此功能,在帖子里找到在 GHacks.net 网站上:
您目前可以禁用 Chrome 中的“硬件媒体密钥处理”标志,以防止 Google Chrome 限制媒体密钥访问。操作方法如下:
- 在 Chrome 地址栏中加载
chrome://flags/#hardware-media-key-handling
;加载时这应该会打开正确的标志。- 将硬件媒体密钥处理标志设置为已禁用。
- 重新启动 Google Chrome。
当我在我的计算机上设置此切换按钮时,Chrome 提供了一个“重新启动”按钮,该按钮重新启动浏览器,并且上次/重新启动的会话中的选项卡保持不变。
这解决了我的问题警告如果存在 MPRIS“解决方案”(即使用 MPRIS 规范来“隐藏”潜在的媒体播放器),我仍然想知道。;)
答案2
我刚刚“发现”播放器控制(或者,在 Github 上)。playerctl
是一个很棒的命令行工具,它解决了 OP 的部分(全部?)问题。来自官方“关于”:
Playerctl 是一个命令行实用程序和库,用于控制实现 MPRIS D-Bus 接口规范的媒体播放器。Playerctl 可轻松将播放器操作(例如播放和暂停)绑定到媒体键。您还可以获取有关正在播放的曲目的元数据(例如艺术家和标题),以集成到状态行生成器或其他命令行工具中。
对于更高级的用户,Playerctl 提供了一个可自省的库,可以使用您最喜欢的脚本语言,允许更详细的控制,例如订阅媒体播放器事件或获取播放曲目的元数据(如艺术家和标题)。
这是使用 MPRIS 控件针对特定媒体播放器的一种非常简单的方法,除此之外还有很多其他方法。它可以用来直接解决 OP 的主要问题:
- 安装
playerctl
,容易从.deb
- 确定您想要控制的玩家。这可以像 OP 那样,从对 的响应中的不同终止元素来完成
$ qdbus org.mpris.*
,或者(使用playerctl
其本身)使用 来完成$ playerctl --list-all
。 - 然后,您可以使用该玩家的名字来定位您想要使用的控件,例如:(
$ playerctl --player=audacious play-pause
切换播放/暂停)。现在,没有其他 MPRIS 相关玩家可以“窃取”该指令。 - 将该命令分配给快捷键(首选项 > 设备 > 键盘 >
+
)。
因此,针对不会被其他播放器/应用程序“接管”的 MPRIS 指令变得简单,这是 OP 的触发担忧。
完整的说明可从以下网址获取Playerctl 的 github 自述文件。