我几天前开始使用 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),其中要使用的值取决于#
字符的字体宽度。