如何在 Conky 中创建自己的自定义进度条?

如何在 Conky 中创建自己的自定义进度条?

我几天前开始使用 Conky,并且愿意创建自己的配置。我添加了一些颜色、很酷的 ASCII 艺术并学习了基础知识。

但是,我不喜欢 Conky 附带的默认进度条,我想创建类似 50 个“#”符号或“矩形”(ASCII 表中的第 219 个字符)的字符串,即前 20 个绿色,接下来的 20 个黄色和最后 10 个红色。

我想将其实现为fs_bar,当有足够的可用空间时为绿色,当半满时为黄色,当我应该释放一些文件时为红色,但在最后两种情况下显示三种颜色。我正在附上一个图像结果非常相似。

我在 Arch Linux 中运行 AwesomeWM,我的 Conky 版本是 1.10.5。

答案1

您可以做这样简单的事情,它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

为了阻止窗口随着打印字符数的增加而调整大小,最后printf "%50s"," "会添加第二行最大长度的空格。或者,添加窗口最小尺寸(以像素为单位)的配置设置,例如minimum_size 500(或minimum_size=500,1.10),其中要使用的值取决于#字符的字体宽度。

相关内容