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}
曲の進行状況を示すプログレスバーを追加するにはどうすればよいですか?
execbar
に続いて、バーの何パーセントが塗りつぶされているかを示す0〜100の数値を返すコマンドを使用して、デフォルトサイズのバーを描画できます。たとえば、PATHに次のシェルスクリプトmyscript
がある場合:
#!/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}
スクリプトは、デッドビーフから出力された経過時間と合計時間を秒に変換し、最後にパーセンテージに変換するだけです。
結果は次のようになります。
私もこれを行う方法を探していましたが、すでにconkyファイルにluaスクリプトを使用していたので、これを行うためにlua関数を作成することにしました。これにより、外部のbashスクリプトに依存する必要がなくなりました。
このルートに興味がある人は、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}
これは新しいconky1.10構文を使用しており、luaコードにはlua5.3以降が必要であることに注意してください。