
我為 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 腳本,因此我決定創建一個 lua 函數來執行此操作,這樣我就不必依賴外部 bash 腳本。
如果有人有興趣走這條路,您需要將您的 lua 檔案包含在 conkyrc 的 conky.config 部分:
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 中有以下 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 輸出的經過時間和總時間轉換為秒,最後轉換為百分比。
結果如下: