C

如何在 Conky 中創建自己的自定義進度條?

  • November 27, 2016

前幾天我已經開始使用 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

為了在列印的字元數增加時停止調整視窗大小,finalprintf "%50s"," "添加第二行最大長度的空格。或者,添加以像素為單位的視窗最小尺寸的配置設置,例如minimum_size 500(或minimum_size=500,1.10),其中要使用的值取決於#字元的字型寬度。

引用自:https://unix.stackexchange.com/questions/326235