Das Problem

Das Problem

Das Problem

Ich versuche, dbusmehrere Instanzen des VLC Media Players vom Terminal aus zu steuern.

Die Verwendung dbusfür eine einzelne Instanz von VLC ist kein Problem: Sobald VLC gestartet ist, werden Befehle wie Play/Pause,

dbus-send --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause

funktioniert wie erwartet. Wenn ich jedoch eine zweite Instanz von VLC starte, dbus-sendwerden von dieser keine Befehle registriert. Die erste Instanz registriert alle Befehle noch einwandfrei, aber die zweite Instanz reagiert nicht.

Was ich versucht habe

Dbus-Start VLC

Ich habe versucht, zu verwenden dbus-launch vlc. Durch die Verwendung wird nur dbus-launcheine Session-Bus-Instanz erstellt und ihre eindeutige Identifikationsadresse gedruckt. Sie können sogar die ausgeführten Instanzen sehen, indem Sie verwenden ps -aux | grep dbus. Mithilfe der Adresse können Sie Befehle mit senden dbus-send --address=X.

Wenn ich jedoch verwende dbus-launch vlc, werden die Informationen über den neuen Bus (einschließlich seiner Identifikationsadresse) nicht auf die Standardausgabe gedruckt. Selbst wenn ich alsokönnteBefehle an ihn senden mit dbus-send, ich habe keine Ahnung, welche Adresse ich verwenden soll. Es gibt auch keine Möglichkeit anzugeben, welche Adresse die News-Session-Bus-Instanz verwenden soll.

Wenn ich irgendwie die Adresse der neuen von erstellten Instanz erhalten könnte dbus-launch, wäre das Problem (theoretisch) gelöst.

Dbus-Daemon

Ähnlich wie dbus-launchkönnen Sie dbus-daemoneine Session-Bus-Instanz erstellen, aber Sie können ihre Adresse auch mit dem --address=XFlag angeben. Wenn Sie dbus-send --address=Xjedoch verwenden, wird mir der Fehler „Verbindung konnte nicht geöffnet werden [...]“ angezeigt, und selbst wenn ich das lösen würde, habe ich keine Ahnung, wie ich eine VLC-Instanz an diese spezielle Session-Bus-Instanz anschließen kann. Ich weiß nicht, wie ich hier weitermachen soll.

Antwort1

Ich habe Ihre Frage gefunden, als ich nach einer Antwort auf mein eigenes Problem gesucht habe. Die Leute im IRC-Kanal dbus haben mir mit der Antwort geholfen.

dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListQueuedOwners string:org.mpris.MediaPlayer2.vlc

Dadurch erhalten Sie die Ziele, die Sie durchlaufen können. Sie werden wie folgt aufgelistet: :1.25 :1.26, sodass Ihr dbus-send folgendermaßen aussieht (beachten Sie, dass der Doppelpunkt erforderlich ist!)...

dbus-send --print-reply --dest=:1.25 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
dbus-send --print-reply --dest=:1.26 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause

verwandte Informationen