Conky에서 Deadbeef에서 재생되는 트랙의 진행률 표시줄을 어떻게 표시할 수 있나요?

Conky에서 Deadbeef에서 재생되는 트랙의 진행률 표시줄을 어떻게 표시할 수 있나요?

Deadbeef 오디오 플레이어에 대한 간단한 conky 스크립트가 있습니다.

여기에 이미지 설명을 입력하세요

위의 라인과 관련된 부분은 다음과 같습니다.

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}

노래의 진행 상황을 표시하는 진행률 표시줄을 어떻게 추가하나요?

답변1

나도 이 작업을 수행할 수 있는 방법을 찾고 있었고 이미 conky 파일에 lua 스크립트를 사용하고 있었기 때문에 외부 bash 스크립트에 의존할 필요가 없도록 이 작업을 수행하기 위한 lua 함수를 만들기로 결정했습니다.

누군가 이 경로에 관심이 있다면 conky.config 섹션의 conkyrc에 Lua 파일을 포함해야 합니다.

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

그런 다음 lua 파일에 다음 함수가 필요합니다. (이것은 deadbeef 0.7.0과 함께 제공되는 deadbeef의 새로운 foobar 형식 지정 구문을 사용하고 있다는 점에 유의하세요. 이는 이전 구문이 더 이상 사용되지 않으므로 미래에 대비할 수 있을 뿐만 아니라 계산도 단순화합니다) [ 방금 알아차린 어리석은 오타를 수정했습니다.]:

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

그런 다음 conky.text 섹션에 추가하십시오.

${lua_bar song_progress}

또한 이것은 새로운 conky 1.10 구문을 사용하고 있으며 lua 코드에는 lua 5.3+가 필요합니다.

답변2

execbar막대가 채워지는 비율을 알려주는 0에서 100 사이의 숫자를 반환하는 명령을 사용하면 기본 크기의 막대를 그릴 수 있습니다 . 예를 들어, myscriptPATH에 다음 셸 스크립트가 있는 경우 :

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

그런 다음 conky 라인을 사용할 수 있습니다.

${execbar myscript}

스크립트는 단순히 deadbeef의 경과 시간과 총 시간 출력을 초로 변환하고 마지막으로 백분율로 변환합니다.

결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

관련 정보