阻止 MPRIS 识别应用程序

阻止 MPRIS 识别应用程序

我经常在 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 限制媒体密钥访问。操作方法如下:

  1. 在 Chrome 地址栏中加载chrome://flags/#hardware-media-key-handling;加载时这应该会打开正确的标志。
  2. 将硬件媒体密钥处理标志设置为已禁用
  3. 重新启动 Google Chrome。

当我在我的计算机上设置此切换按钮时,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 自述文件

相关内容