Eu fiz assim:
Este é um script que sempre é executado para verificar qual player está ativo / ativo por último e armazena esse player em um arquivo:
#!/bin/sh
while true ; do
for m in 'qdbus | egrep -i 'org.mpris.MediaPlayer2|plasma.browser_integration'' ; do
if [[ 'qdbus $m /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus' == 'Playing' ]]; then
echo $m > ~/.config/activePlayer/currentPlaying.txt
fi
done
sleep 3
done
e este é um script que envia comandos dbus como play / pause / etc / para o player que está atualmente ativo (baseado nesse arquivo). O script é chamado por sxhkd, que escuta meus pressionamentos de tecla.
#!/bin/sh
if [[ $1 == 'play-pause' ]]; then
qdbus 'cat ~/.config/activePlayer/currentPlaying.txt' /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
elif [[ $1 == 'next' ]]; then
qdbus 'cat ~/.config/activePlayer/currentPlaying.txt' /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
elif [[ $1 == 'previous' ]]; then
qdbus 'cat ~/.config/activePlayer/currentPlaying.txt' /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
elif [[ $1 == 'stop' ]]; then
qdbus 'cat ~/.config/activePlayer/currentPlaying.txt' /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop
fi
Esta é uma boa maneira de fazer isso?