Verhindern, dass MPRIS eine Anwendung erkennt

Verhindern, dass MPRIS eine Anwendung erkennt

Ich habe meinen Audioplayer (normalerweise Audacious v. 3.9) oft laufen, während auch der Chrome-Browser läuft. Wenn ich ein Video in Chrome öffne, scheint es MPRIS-Steuerelemente vom Audioplayer zu „beanspruchen“. Die einzige Möglichkeit, meine Tastenkombinationen zur Steuerung von Audacious zu erhalten, besteht darin, Chrome zu schließen.

Es muss eine Möglichkeit geben, zu verhindern, dass MPRIS Chrome als „Media Player“ erkennt. Ich gehe davon aus, dass das Problem darin besteht, dass eine (oder beide) dieser Apps nicht „behauptet“, dass MPRIS ordnungsgemäß funktioniert. Lautdie Manpage, dies bezieht sich auf eine MPRIS_REMOTE_PLAYERVariable:

MPRIS_REMOTE_PLAYER
Wenn nicht gesetzt oder auf gesetzt *, kommuniziert mpris-remote mit dem ersten Player, den es org.mpris.*über D-BUS unter " " registriert findet. Wenn Sie nur einen MPRIS-kompatiblen Player laufen haben, ist das kein Problem. Wenn Sie mehr als einen laufen haben, sollten Sie diese Variable auf den Namen des Players setzen, mit dem Sie sich verbinden möchten. Wenn sie beispielsweise auf gesetzt ist foo, wird versucht, mit dem Player unter " org.mpris.foo" zu kommunizieren und wird fehlschlagen, wenn unter diesem Namen nichts existiert.

Mein Problem ist, dass ich nicht weiß, wie ich diese Variable setzen soll. Ich habe im D-Bus-Editor nach etwas Entsprechendem gesucht (zur Analogie in einer Antwort überMedia-Player in der Taskleiste), aber ich kann dort keine relevante Einstellung erkennen.

Mittlerweile habe ich folgendes herausgefunden:

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

Es scheint also, dass Audaciousseine "eigene" MPRIS-Identität, also wie kann ich verhindernChrome wird für MPRIS-Zwecke nicht als „Media Player“ erkannt? Für jede Hilfe bei der Einrichtung wäre ich sehr dankbar.

PSIch verwende Ubuntu 18.04 LTS.

Antwort1

Obwohl es gut wäre zu wissen, ob es eine „von MPRIS verwaltete“ Lösung für dieses Problem gibt, lässt sich das Problem auch mit den Einstellungen in Chrome selbst umgehen.

Es scheint, dass Chrome ziemlich aggressiv die Kontrolle über Medientasten/Verknüpfungen „übernimmt“. Dies kann durch Befolgen dieser Schritte deaktiviert werden:gefunden in einem Beitragauf der GHacks.net-Site:

Sie können derzeit das Flag „Hardware Media Key Handling“ in Chrome deaktivieren, um zu verhindern, dass Google Chrome den Zugriff auf Medientasten einschränkt. So funktioniert das:

  1. Laden Sie chrome://flags/#hardware-media-key-handlingdie Adressleiste von Chrome. Beim Laden sollte dadurch die richtige Flagge geöffnet werden.
  2. Setzen Sie das Flag für die Handhabung von Hardware-Medientasten aufDeaktiviert.
  3. Starten Sie Google Chrome neu.

Als ich diesen Schalter auf meinem Computer einstellte, bot Chrome eine Schaltfläche „Neu starten“ an, die den Browser mit den intakten Tabs der vorherigen/neu gestarteten Sitzung neu startete.

Damit ist mein Problem gelöst – mit demVorbehaltdass ich es trotzdem gerne wissen würde, wenn es eine MPRIS-„Lösung“ gibt (z. B. die Verwendung der MPRIS-Spezifikation zum „Verstecken“ eines potentiellen Mediaplayers). ;)

Antwort2

Ich habe gerade "entdeckt"Spielerctl(oder,auf Github). playerctlist ein wunderbares Kommandozeilentool, das einige (alle?) der Probleme des OP löst. Aus dem offiziellen „Info“:

Playerctl ist ein Befehlszeilenprogramm und eine Bibliothek zur Steuerung von Mediaplayern, die die MPRIS D-Bus-Schnittstellenspezifikation implementieren. Playerctl erleichtert das Binden von Playeraktionen wie Wiedergabe und Pause an Medientasten. Sie können auch Metadaten zum abgespielten Titel abrufen, z. B. Künstler und Titel, um sie in Statuszeilengeneratoren oder andere Befehlszeilentools zu integrieren.

Für fortgeschrittenere Benutzer stellt Playerctl eine introspektive Bibliothek bereit, die in Ihrer bevorzugten Skriptsprache verfügbar ist und eine detailliertere Steuerung ermöglicht, beispielsweise die Möglichkeit, Media Player-Ereignisse zu abonnieren oder Metadaten wie Künstler und Titel für den wiedergegebenen Titel abzurufen.

Dies ist eine sehr einfache Möglichkeit, MPRIS-Steuerelemente zu verwenden und gleichzeitig bestimmte Mediaplayer anzusprechen, und vieles mehr. Damit kann das Hauptanliegen des OP direkt auf folgende Weise angegangen werden:

  1. Installieren playerctl,einfach von der.deb
  2. Identifizieren Sie den Spieler, den Sie steuern möchten. Dies kann entweder wie OP über das eindeutige Abschlusselement in den Antworten auf $ qdbus org.mpris.*oder (unter Verwendung playerctlvon sich selbst) mit erfolgen $ playerctl --list-all.
  3. Sie können dann die Steuerelemente, die Sie verwenden möchten, mit dem Namen dieses Players anvisieren, z. B.: $ playerctl --player=audacious play-pause(umschaltet Wiedergabe/Pause). Jetzt kann kein anderer MPRIS-bezogener Player diese Anweisung „stehlen“.
  4. Weisen Sie diesen Befehl einer Tastenkombination zu (Einstellungen > Geräte > Tastatur > +).

Somit wird es zu einer einfachen Sache, MPRIS-Anweisungen gezielt einzusetzen, die nicht von einem anderen Player/einer anderen App „übernommen“ werden, was die Hauptsorge des OP ist.

Eine vollständige Anleitung finden Sie unterReadme-Datei für Playerctl auf GitHub.

verwandte Informationen