EDIT: Eu removi e reescrevi a maior parte do post para tornar a pergunta mais direta e para tornar o post muito mais curto. É claro que você pode visualizar o histórico de edições para obter a versão anterior.
Usando bspwm no Arch Linux. playerctl
para controlar a mídia, sxhkd
para vincular as teclas de mídia aos comandos playerctl.
Estou tentando encontrar uma maneira de obter o media player ativo mais recente, então quando uso as teclas de mídia para reproduzir/pausar uma música/filme/.. , meu pc controla automaticamente o mediaplayer ativo mais recente.
Por exemplo, quando o Spotify está aberto em segundo plano e estou assistindo algo no VLC, ele sabe controlar o VLC e não o Spotify quando pressiono as teclas de mídia. No momento, se ambos estiverem abertos, o VLC sempre terá prioridade do playerctl.
O que eu preciso é uma maneira de perguntar ao dbus qual mediaplayer está tocando uma música no momento, para que eu possa mantê-lo em um arquivo.
EDIT: Encontrei uma maneira de perguntar a cada spotify e vlc usando:
qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus
e
qdbus org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus
mas eu gostaria de perguntar automaticamente a todos os mediaplayers, não cada um pelo nome. Tentei fazer com org.mpris.MediaPlayer2.*
mas não deu certo.
Alguma ideia?
Eu fiz assim:
Este é um script que sempre é executado para verificar qual player está ativo no momento/foi ativo pela última vez e armazena esse player em um arquivo:
e este é um script que envia comandos dbus como play/pause/etc/ para o player que está ativo no momento (com base nesse arquivo). O script é chamado pelo sxhkd, que ouve minhas teclas pressionadas.
Na versão mais recente, você pode usar playerctld .
Isso iniciará um processo persistente que monitora a atividade do jogador e dá o comando ao jogador ativo.