
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
に続いて、バーの何パーセントが埋められているかを示す 0 から 100 までの数値を返すコマンドを使用すると、デフォルト サイズのバーを描画できます。たとえば、 PATH にexecbar
次のシェル スクリプトがあるとします。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}
このスクリプトは、deadbeef からの経過時間と合計時間の出力を秒数に変換し、最終的にパーセンテージに変換するだけです。
結果は次のようになります。