Se você tiver apenas uma instância do VLC em execução, poderá conversar com o VLC com dbus-send usando org.mpris.MediaPlayer2.vlc como destino:
$ dbus-send --dest=org.mpris.MediaPlayer2.vlc ...
Se você tiver duas instâncias do VLC em execução, elas terão destinos diferentes xxxx e yyyy. Se quiser falar com um deles, você deve usar xxxx ou yyyy como destino:
$ dbus-send --dest=:xxxx ...
O destino da primeira instância posso encontrar desta forma:
$ dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBusorg.freedesktop.DBus.ListQueuedOwners string:org.mpris.MediaPlayer2.vlc
method return time=1702494718.199915 sender=org.freedesktop.DBus -> destination=:1.1256 serial=3 reply_serial=2
array [
string ":1.1251"
]
Então vejo que o destino é 1,1251
Mas como posso obter o destino da segunda instância?
eu sempre uso o busctl para obter as informações completas do dbus.
Existe um barramento de sistema (busctl --system) e um barramento de sessão (busctl --user) ou lista completa (busctl -l)
digite:
busctl --user | grep "vlc"
então você consegue algo assim
Os arquivos organizacionais são os serviços ativos.
você vê que há um segundo serviço chamado org.mpris.MediaPlayer2.vlc.instance91361,
a primeira instância vlc está no PID 91266, a segunda instância vlc está no PID 91361
aqui no meu exemplo, ligue:
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListQueuedOwners string:org.mpris.MediaPlayer2.vlc.instance91361
lhe dará suas informações sobre a segunda instância
----------- Por falar nisso
você pode examinar o serviço dbus para a árvore de objetos
busctl --user tree org.mpris.MediaPlayer2.vlc.instance91361
você obtém:
então você também pode introspectar os objetos
busctl --user introspect org.mpris.MediaPlayer2.vlc.instance91361 /org/mpris/MediaPlayer2
saída:
você vê todas as interfaces e métodos definidos.
por exemplo, vamos pegar o método "OpenUri" da interface: org.mpris.MediaPlayer2.Player
busctl --user call org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player OpenUri s "your url"
-- abrirá o vídeo em primeira instância
busctl --user call org.mpris.MediaPlayer2.vlc.instance91361 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player OpenUri s "your url"
-- abrirá um vídeo na segunda instância
call Sintaxe:
============
call SERVICE OBJECT INTERFACE METHOD [ASSINATURA [ARGUMENTO...]]
para obter mais informações - consulte busctl - ajuda
tenha um bom dia!