创建带有零填充的 Conky 文本变量?

创建带有零填充的 Conky 文本变量?

我的 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提供的解决方案:

  1. 创建一个Lua脚本供Conky使用。我在我创建的文件夹中创建了我的文件夹~/.config/conky/scripts,但您可以在任何您想要的位置创建您的文件夹:

    $ mkdir -p ~/.config/conky/scripts/
    $ vim ~/.config/conky/scripts/conky_lua_scripts.lua
    
  2. 使用以下 Lua 函数填充该文件:

    function conky_format( format, number )
        return string.format( format, conky_parse( number ) )
    end
    
  3. lua_load使用指令将 Lua 脚本文件导入到 Conky 配置文件中

    # ...
    lua_load ~/.config/conky/scripts/conky_lua_scripts.lua
    
    TEXT
    # ...
    
  4. 每当您想要格式化一个值时,请调用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}%

相关内容