Я пытаюсь использовать dbus
управлять несколькими экземплярами VLC Media Player от терминала.
Используя dbus
поскольку единственный экземпляр VLC не является никакой проблемой: как только VLC запускается, команды как Игра/Пауза,
dbus-send --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
работа как ожидалось. Однако, если я запускаю второй экземпляр VLC, нет dbus-send
команды когда-либо регистрируются им. Первая инстанция все еще регистрирует все прекрасные команды, но второй экземпляр не реагирует.
Я попытался использовать dbus-launch vlc
. Используя только dbus-launch
создает экземпляр шины сессии и печатает его уникальный адрес идентификации. Можно даже видеть, что экземпляры выполняют использование ps -aux | grep dbus
. Используя адрес, можно отправить команды с dbus-send --address=X
.
Однако при использовании dbus-launch vlc
, это не распечатает информацию о новой шине к стандартному выводу (включая его адрес идентификации). Таким образом, даже если я мог бы отправить команды в него использование dbus-send
, Я понятия не имею что адрес использовать. Нет способа указать то, что обращается к экземпляру шины сессии новостей, должен использовать также.
Если я мог бы так или иначе получить адрес нового экземпляра, созданного dbus-launch
, проблема была бы (теоретически) решена.
Так же к dbus-launch
, можно использовать dbus-daemon
для создания сессии соединяют шиной экземпляр, но можно также указать его адрес с --address=X
флаг. Используя dbus-send --address=X
дает мне "Неудавшийся для открытия соединения [...]" ошибка, хотя, и даже если я должен был решить это, я понятия не имею, как сцепить экземпляр VLC с тем определенным экземпляром шины сессии. Я не знаю, как продолжить двигаться здесь.
Найденный Вашим вопросом при поиске решения моей собственной проблемы. Парни на dbus канале IRC выручили меня с ответом.
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListQueuedOwners string:org.mpris.MediaPlayer2.vlc
Это даст Вам места назначения, которые можно циклично выполнить через. Это перечисляет их как:1.25:1.26, таким образом, Ваш dbus-отправлять будет похож на это (обратите внимание, что двоеточие необходимо!)...
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