如何在 Conky 中創建自己的自定義進度條?
前幾天我已經開始使用 Conky,我願意創建自己的配置。我添加了一些顏色、很酷的 ASCII 藝術並學習了基礎知識。
但是,我不喜歡 Conky 附帶的預設進度條,我想創建一個由 50 個“#”符號或“矩形”(ASCII 表中的第 219 個字元)組成的字元串,作為前 20 個綠色,以下 20 個黃色和最後 10 個紅色。
我想將它實現為
fs_bar
,當有足夠的可用空間時為綠色,當它半滿時為黃色,當我應該釋放一些文件時為紅色,但在最後兩種情況下顯示三種顏色。我附上了一個結果非常相似的圖像。我在 Arch Linux 中執行 AwesomeWM,我的 Conky 版本是 1.10.5。
你可以做一些像這樣簡單的事情,它用於
execpi
每 30 秒執行一次 shell 腳本,解析輸出df /
並將其轉換為一長串 conkycolor
命令和\#
字元(因為#
用於註釋):${execpi 30 df --output=pcent / | awk 'NR==2 { n = ($1+0)/2; yellow = 20; red = 40; if(n>=red) { r = "${color #ff0000}"; for(;n>=red;n--) r = r "\\#" } if(n>=yellow){ y = "${color #ffff00}"; for(;n>=yellow;n--)y = y "\\#" } g = "${color #00ff00}"; for(;n>0;n--) g = g "\\#"; print g y r printf "%50s"," " }' } ${color}
我的
df --output=pcent
輸出 2 行;第二個是使用的百分比,例如69%
。我在conky 1.9上試過這個。如果您的
~/.conkyrc
文件已轉換為格式版本 1.10,那麼它將包含一行conky.text = [[
確保在最後關閉之前添加上述腳本
]]
。此外,在 1.10 中以數字形式給出的顏色(例如#ff0000
上面)不再以開頭,#
因此您應該ff0000
在腳本中使用等等。為簡化起見,請將以下腳本放入 PATH 中某處的單獨文件中,例如~/mydf
,使其可執行(chmod +x ~/mydf
),然後將該文件名放入~/.conkyrc
,例如${execpi 30 ~/mydf /}
#!/bin/bash df --output=pcent "${1?}" | awk 'NR==2{ n = ($1+0)/2; yellow = 20; red = 40; if(n>=red) { r = "${color ff0000}"; for(;n>=red;n--) r = r "\\#" } if(n>=yellow){ y = "${color ffff00}"; for(;n>=yellow;n--)y = y "\\#" } g = "${color 00ff00}"; for(;n>0;n--) g = g "\\#"; print g y r printf "%50s"," " }'
如果要將整個腳本放入
~/.conkyrc
文件中,則需要增加預設緩衝區大小,否則命令將被截斷為 256 個字元。這會導致錯誤,例如sh: -c: line 0: unexpected EOF while looking for matching `''
為此,在 1.10 中,在
conky.config={...}
元件內添加一行,確保使用逗號 (,
) 分隔設置:text_buffer_size = 400,
在 conky 1.9 中,在該
TEXT
部分之前添加一行:text_buffer_size 400
為了在列印的字元數增加時停止調整視窗大小,final
printf "%50s"," "
添加第二行最大長度的空格。或者,添加以像素為單位的視窗最小尺寸的配置設置,例如minimum_size 500
(或minimum_size=500,
1.10),其中要使用的值取決於#
字元的字型寬度。