Scripting
在 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}
如何添加進度條,顯示歌曲的進度?
execbar
您可以使用後跟命令來繪製預設大小的條,該命令應返回一個從 0 到 100 的數字,給出條的填充百分比。例如,如果您myscript
的 PATH 中有以下 shell 腳本:#!/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 的經過時間和總時間輸出轉換為秒,最後轉換為百分比。
結果如下所示:
我也在尋找一種方法來執行此操作,並且由於我已經為我的 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 格式化語法,這不僅是更多的未來證明,因為舊語法已被棄用,但簡化了計算)
$$ fixed a stupid typo I just noticed I had $$:
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+。