
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 사이의 숫자를 반환하는 명령을 사용하면 기본 크기의 막대를 그릴 수 있습니다 . 예를 들어, myscript
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
}'
그런 다음 conky 라인을 사용할 수 있습니다.
${execbar myscript}
스크립트는 단순히 deadbeef의 경과 시간과 총 시간 출력을 초로 변환하고 마지막으로 백분율로 변환합니다.
결과는 다음과 같습니다.