Em conky, como posso mostrar uma barra de progresso para a faixa tocando em Deadbeef?

2

Eu tinha um script simples para o player de áudio Deadbeef:

Apartequeestárelacionadacomaslinhasacimaéesta:

TEXT${color3399FF}${alignr}dbaudioisplaying:#${alignr}${colorFFFFFF}${alignr}${execdeadbeef--nowplaying"%a"} 
${color FFFFFF} ${alignr}${exec deadbeef --nowplaying "%t"}
${color FFFFFF}${alignr}${exec deadbeef --nowplaying "%b"} 
${color FFFFFF}
${alignr}${color 3399FF}${exec deadbeef --nowplaying "%e"}${offset 2}${alignr} / ${exec deadbeef --nowplaying "%l"} 
${alignr}${image ./logo.png -p 0,-1 -s 25x25}${color 3399FF}

Como adiciono uma barra de progresso, mostrando o progresso da música?

    
por cipricus 26.04.2017 / 18:46

2 respostas

2

Você pode desenhar uma barra de tamanho padrão usando execbar seguido por um comando que deve retornar um número de 0 a 100, dando a porcentagem da barra preenchida. Por exemplo, se você tiver o seguinte script de shell myscript em seu PATH:

#!/bin/bash
deadbeef --nowplaying "%e %l" |
awk '
{ n = split("::" $1,t,":")
  elapsed = (t[n-2]*60+t[n-1])*60+t[n]
  n = split("::" $2,t,":")
  total = (t[n-2]*60+t[n-1])*60+t[n]
  printf "%d\n",elapsed*100/total
}'

então você pode usar a linha de conky:

${execbar myscript}

O script simplesmente converte a saída de tempo decorrido e total de deadbeef em segundos e, finalmente, uma porcentagem.

O resultado é assim:

    
por 26.04.2017 / 20:45
2

Eu estava procurando uma maneira de fazer isso também, e como eu já estava usando um script de lua para o meu arquivo conky, decidi criar uma função lua para fazer isso, então não precisei confiar no bash externo scripts.

Se alguém estiver interessado em seguir este caminho, você precisa incluir seu arquivo lua no seu conkyrc na seção conky.config:

conky.config = {
   ...other config options...,    
   lua_load         = '/path/to/file.lua'
}

então no seu arquivo lua você precisa da seguinte função (note que isto está usando a nova sintaxe de formatação foobar do deadbeef que veio com o deadbeef 0.7.0, que não apenas é mais futura como a antiga sintaxe está sendo obsoleta, mas simplifica o cálculos) [corrigido um erro de digitação estúpido eu só notei que eu tinha]:

function conky_song_progress()
   local song_progress = "deadbeef --nowplaying-tf '(100*%playback_time_seconds%)//%length_seconds_fp%' 2>/dev/null"
   local get_progress = assert(io.popen(song_progress))
   local progress     = math.tointeger(assert(loadstring("return " .. get_progress:read('*all')))())
   get_progress:close()
   return progress
end

Em seguida, adicione à sua seção conky.text:

${lua_bar song_progress}

Note também que isto está usando a nova sintaxe conky 1.10 e o código lua precisa de lua 5.3 +.

    
por 25.11.2017 / 07:54