O problema
Estou tentando usar dbus
para controlar várias instâncias do VLC media player a partir do terminal.
Usar dbus
para uma única instância do VLC não é problema: assim que o VLC é iniciado, comandos como Reproduzir / Pausar,
dbus-send --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
trabalhe como esperado. No entanto, se eu iniciar uma segunda instância do VLC, nenhum comando dbus-send
será registrado por ela. A primeira instância ainda registra todos os comandos bem, mas a segunda instância não reage.
O que eu tentei
dlc-launch vlc
Eu tentei usar dbus-launch vlc
. Usar somente dbus-launch
cria uma instância de barramento de sessão e imprime seu endereço de identificação exclusivo. Você pode até ver as instâncias em execução usando ps -aux | grep dbus
. Usando o endereço, você pode enviar comandos com dbus-send --address=X
.
No entanto, ao usar dbus-launch vlc
, ele não imprimirá as informações sobre o novo barramento na saída padrão (incluindo seu endereço de identificação). Então, mesmo que eu pudesse enviar comandos para ele usando dbus-send
, não tenho idéia de qual endereço usar. Não há como especificar o endereço que a instância de barramento de sessão de notícias deve usar.
Se eu conseguisse de alguma forma obter o endereço da nova instância criada por dbus-launch
, o problema seria (teoricamente) resolvido.
dbus-daemon
Semelhante a dbus-launch
, você pode usar dbus-daemon
para criar uma instância de barramento de sessão, mas também pode especificar seu endereço com o sinalizador --address=X
. Usar o dbus-send --address=X
me dá um erro de "Falha ao abrir [...] a conexão", e mesmo se eu resolvesse isso, não teria idéia de como ligar uma instância do VLC àquela instância de barramento de sessão específica. Eu não sei como proceder aqui.