Você pode tentar um script semelhante a este. Preste atenção para o estado do jogador através do DBUS.
Reduzo o atraso para 55 seg. Funciona melhor com o tempo ocioso de proteção de tela de 1 minuto.
-
Exemplo VLC :
O BTW, VLC no Ubuntu 14.04 possui interface DBUS ativada por padrão. Onde no Ubuntu 12.04 não é. Verifique de:
Ferramentas → Preferências → Avançadas (ou Todas) → Interface → Interfaces de controle → Interface de controle D-Bus. (Aplique então Reinicie o VLC)
-
Crie um arquivo
heartbeat.sh
em~/Desktop/
:#!/bin/bash while sleep 55 do if [ "$(pgrep vlc)" != "" ] then state=$(bash -c 'gdbus call --session \ --dest org.mpris.MediaPlayer2.vlc \ --object-path /org/mpris/MediaPlayer2 \ --method org.freedesktop.DBus.Properties.Get \ "org.mpris.MediaPlayer2.Player" \ "PlaybackStatus"') if [ "$state" = "(<'Playing'>,)" ] then #xscreensaver-command -deactivate xset s reset fi fi done
-
Abra o terminal Ctrl + Alt + t
-
Adicione permissões de execução:
chmod +x ~/Desktop/heartbeat.sh
-
Executar script:
~/Desktop/heartbeat.sh
-
Experimente o player VLC.
-
-
Para o Gnome MPlayer (D-Bus habilitado por padrão), use:
"$(pgrep gnome-mplayer)"
e--dest org.mpris.MediaPlayer2.gnome-mplayer
-
Para o (Totem) Player de vídeos (o plugin do D-Bus é desativado por padrão),
Editar → Plugins → Verifique o serviço D-Bus. (Reinicie o totem)
Uso:
"$(pgrep totem)"
e--dest org.mpris.MediaPlayer2.totem
-
Isto é modificado para trabalhar com qualquer jogador que forneça MPRIS. Obtém a lista dinamicamente (desvantagem, não distingue entre reprodução apenas de áudio e reprodução de vídeo). A melhor maneira que eu acho é colocar manualmente a lista de jogadores que você gosta:
#!/bin/bash players_list=$(gdbus call --session --dest org.freedesktop.DBus \ --object-path / --method org.freedesktop.DBus.ListNames | \ awk 'BEGIN { RS=","; } /org.mpris.MediaPlayer2./ { gsub(/[\[\]()\x27]/, ""); print ; }') while sleep 55 do for player in $players_list do state=$(gdbus call --session \ --dest $player \ --object-path /org/mpris/MediaPlayer2 \ --method org.freedesktop.DBus.Properties.Get \ "org.mpris.MediaPlayer2.Player" \ "PlaybackStatus") if [ "$state" = "(<'Playing'>,)" ] then echo $player $state send signal #xscreensaver-command -deactivate #use xset to work with all screensaver tools and avoid dimming display ... xset s reset break else echo $player $state fi done done
Dicas de depuração :
-
Assista ao tempo ocioso
watch -n1 xprintidle
ou:
while sleep 1; do xprintidle; done;
-
Verifique se a desativação da proteção de tela funciona (enquanto executa este script, o xscreensave não deve aparecer)
#!/bin/bash while sleep 55 do #xscreensaver-command -deactivate #xdg-screensaver reset xset s reset done
-
Verifique a lista de DBUSs para a interface do MPRIS player, por exemplo, com o VLC em execução:
gdbus call --session --dest org.freedesktop.DBus \ --object-path / --method org.freedesktop.DBus.ListNames | \ awk 'BEGIN { RS=","; } /org.mpris.MediaPlayer2./ { gsub(/[\[\]()\x27]/, ""); print ; }'
Saída:
org.mpris.MediaPlayer2.vlc org.mpris.MediaPlayer2.vlc.instance3939
Ou usando o comando
dbus-send
dbus-send --session \ --dest=org.freedesktop.DBus \ --type=method_call \ --print-reply \ /org/freedesktop/DBus \ org.freedesktop.DBus.ListNames \ | grep org.mpris.MediaPlayer2.
Saída:
string "org.mpris.MediaPlayer2.vlc" string "org.mpris.MediaPlayer2.vlc.instance3939"
Referências :
- Como configurar a consulta DBus para obter reproduzir o estado do VLC? script original de JB0x2D1
- Especificação da interface D-Bus MPRIS
- Use
qdbusviewer
para verificar o nome do destino correto ou para usar outro player de sua preferência.