저는 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 함수를 만들기로 결정했습니다. .
누군가 이 경로를 따르는 데 관심이 있다면 conkyrc의 conky.config 섹션에 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의 경과 시간과 총 시간 출력을 초로 변환하고 마지막으로 백분율로 변환합니다.
결과는 다음과 같습니다.