我的 Conky 设置遇到了一个奇怪的问题:
我想要摆脱/修复的是我的 CPU 百分比(使用${cpu cpuX}
)似乎无法正确填充的事实。我希望所有值都垂直对齐,以便状态永远不会摆动。以下是我的 conky 文件的摘录:
# ...
pad_percents 3
# ...
${cpubar cpu1 6,135}$alignr${...}${cpu cpu1}%
如何正确对齐和填充 CPU 百分比值,以便它们不再破坏我的布局?等效的 printf 的%3.0f
值将如下所示:
$ "%3.0f" % (1,)
' 1'
$ "%3.0f" % (13,)
' 13'
$ "%3.0f" % (100,)
'100'
我怎样才能在 Conky 中实现我的 CPU 百分比的这种情况?
答案1
上面@jasonwryan提供的解决方案:
创建一个Lua脚本供Conky使用。我在我创建的文件夹中创建了我的文件夹
~/.config/conky/scripts
,但您可以在任何您想要的位置创建您的文件夹:$ mkdir -p ~/.config/conky/scripts/ $ vim ~/.config/conky/scripts/conky_lua_scripts.lua
使用以下 Lua 函数填充该文件:
function conky_format( format, number ) return string.format( format, conky_parse( number ) ) end
lua_load
使用指令将 Lua 脚本文件导入到 Conky 配置文件中# ... lua_load ~/.config/conky/scripts/conky_lua_scripts.lua TEXT # ...
每当您想要格式化一个值时,请调用
format
我们之前定义的函数。请注意,虽然我们将其命名为conky_format
,但我们format
使用lua_parse
变量来访问它:# ... lua_load ~/.config/conky/scripts/conky_lua_scripts.lua TEXT # ... ${lua_parse format %3.0f ${cpu cpu1}}%
这个漂亮的脚本允许您使用任何值和格式字符串调用 Lua 格式化引擎。现在输出看起来符合预期:
如果您熟悉printf
,您可以使用该实用程序执行其他很棒的格式化技巧。
答案2
通过使用条件,无需 lua 脚本也可以实现几乎相同的效果:
${if_match ${cpu cpu1} < 10}${offset 10}${cpu cpu1}%
您的代码将类似于:
${cpubar cpu1 6,135}$alignr${...}${if_match ${cpu cpu1} < 10}${offset 10}${endif}${cpu cpu1}%
注意:偏移值(在上面的情况下为 10)需要根据使用的字体进行调整。
更完整的例子还可以使用更多的条件:
${cpubar cpu1 6,135}$alignr${...}${if_match ${cpu cpu1} < 10}${offset 20}${else}${if_match ${cpu cpu1} < 100}${offset 10}${endif}${cpu cpu1}%