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 함수를 만들기로 결정했습니다. .

누군가 이 경로를 따르는 데 관심이 있다면 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 사이의 숫자를 반환해야 합니다. 예를 들어, 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의 경과 시간과 총 시간 출력을 초로 변환하고 마지막으로 백분율로 변환합니다.

결과는 다음과 같습니다.

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

관련 정보