我目前正在尝试使用 DWM 和 Conky 创建一个外观简约的桌面,用于编码和类似操作。我有一些不错的功能,但目前遇到了一些问题。目前,我的 ConkyTEXT
部分是居中对齐的,看起来不错,但它也会返回有关 CPU 使用率的信息。如果 CPU 使用率在 9% 和 10% 之间闪烁,则文本的整体大小会有所不同,而且由于它是居中对齐的,所以它会稍微移动。为了清晰起见,暂时去掉了颜色,这是有问题的线条的简单版本...
${alignc}CPU: ${cpu}%
当然,两者之间的区别
CPU 9%
CPU 10%
是导致问题的原因。我该如何在 9 的左侧填充两个零,在 10 的左侧填充一个零,在 100 的左侧不填充零?我在文档中看到的唯一模糊相关内容与小数位填充有关,而这根本不是我所需要的。
答案1
一个解决方案(现在找不到更好的方法,但它有效)涉及使用自定义 Lua 函数,您应该这样做:
为 Lua 函数创建一个文件,例如
~/.conky_lua_scripts.lua
:function conky_pad( number ) return string.format( '%3i' , conky_parse( number ) ) end
这将用空格填充数字(我认为更好),如果您想要零,只需将“%3i”替换为“%03i”。
在您
.conkyrc
添加的部分之前TEXT
:lua_load ~/.conky_lua_scripts.lua
最后,在您的部分中打印填充的值类型,
TEXT
例如:${alignc}CPU: ${lua_parse pad ${cpu}}%
我试图使 Lua 函数尽可能简单,但如果您愿意,您可以创建一个更通用的函数,这样您就可以管理任何数字/值,甚至可以更改其对齐方式。
答案2
Conky 终于将其内置了。这些选项可以解决问题:
use_spacer left
pad_percents 2
答案3
当我尝试显示百分比时,例如 04% 05% 等,而不是 1%、5%、0% 等(以避免文本“跳来跳去”),我也有类似的担忧。我能够使用$if_match
${if_match ${cpu cpu0}<10}0${endif}${cpu cpu0}%
${cpu cpu0}
^^^ 如果小于 10,则 在十位数打印 0。然后打印个位数。然后打印 % 符号。
$if_match will print, run, or execute whatever is between itself and the ${endif}
${if_match [COMPARISON]}
...commands <<< all i do is print a 0. heh
${endif}
在这里,我将把它分解成带有注释的组件,多行
${if_match ${cpu cpu0}<10} ### is the cpu load less than 10% ?
0 ### if so, print a 0 !!!
${endif} ### thanks bye i had a really good time
% ### output formatting. so it says 08%
# instead of 08
答案4
我通常将文本 (CPU) 左对齐,将值右对齐,并指定它们的准确位置。这样,值就会“延伸”(例如从 9 到 10)到 CPU 和值之间的空白处。