En conky, ¿cómo puedo mostrar una barra de progreso para la pista que se reproduce en Deadbeef?

En conky, ¿cómo puedo mostrar una barra de progreso para la pista que se reproduce en Deadbeef?

Tenía un script conky simple para el reproductor de audio Deadbeef:

ingrese la descripción de la imagen aquí

La parte que se ocupa de las líneas anteriores es esta:

TEXT
${color 3399FF}${alignr}db audio is playing: 
#${alignr}
${color FFFFFF}${alignr} ${exec deadbeef --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}

¿Cómo agrego una barra de progreso que muestra el progreso de la canción?

Respuesta1

Estaba buscando una manera de hacer esto también, y como ya estaba usando un script lua para mi archivo conky, decidí crear una función lua para hacer esto para no tener que depender de scripts bash externos.

Si alguien está interesado en seguir esta ruta, debe incluir su archivo lua en su conkyrc en la sección conky.config:

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

luego, en su archivo lua necesita la siguiente función (tenga en cuenta que esto utiliza la nueva sintaxis de formato foobar de deadbeef que vino con deadbeef 0.7.0, que no solo es más preparada para el futuro ya que la sintaxis anterior está en desuso, sino que también simplifica los cálculos) [ Se corrigió un error tipográfico estúpido que acabo de notar que tenía]:

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

Luego agregue a su sección conky.text:

${lua_bar song_progress}

Tenga en cuenta también que esto utiliza la nueva sintaxis conky 1.10 y el código lua necesita lua 5.3+.

Respuesta2

Puede dibujar una barra de tamaño predeterminado usando execbarseguido de un comando que debería devolver un número del 0 al 100 que indique qué porcentaje de la barra está lleno. Por ejemplo, si tiene el siguiente script de shell myscripten su RUTA:

#!/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
}'

entonces puedes usar la línea conky:

${execbar myscript}

El script simplemente convierte el tiempo total y transcurrido de deadbeef en segundos y finalmente en un porcentaje.

El resultado se ve así:

ingrese la descripción de la imagen aquí

información relacionada