是否可以在 conky 中循环

是否可以在 conky 中循环

有没有办法循环进去conky?例如,我有一个.conky显示 cpu 负载的脚本,但是,当我移动到另一台机器时必须重新配置它。像这样的简单脚本

sudo grep "processor" /proc/cpuinfo | wc -l

提供有关核心数量的信息和或许在循环中使用,例如

${cpu cpu{1}}

答案1

我不是 conky/lua 专家,所以可能有更好的方法,但这可行。你需要在~/mylua.lua包含以下内容的文件中创建一个 lua 脚本

    local file = io.popen("grep -c processor /proc/cpuinfo")
    local numcpus = file:read("*n")
    file:close()
    listcpus = ""
    for i = 1,numcpus
    do  listcpus = listcpus.."${cpu cpu"..tostring(i).."} "
    end

    function conky_mycpus()
     return listcpus
    end

然后在你的部分~/.conkyrc中添加conky.config={

lua_load = '~/mylua.lua',

(或者对于 1.10 之前的旧 conky 版本lua_load ~/mylua.lua)并且在您想要获得 cpu 值的地方,该行

${lua_parse conky_mycpus}

当 conky 启动时,将运行 lua 脚本,并且变量listcpus最终将成为适当的字符串"${cpu cpu1} ${cpu cpu2}",例如 ,具体取决于 grep 找到的处理器数量。

答案2

不要忘记添加新行,否则会导致最新的 conky 出现不需要的结果。

在一行中加载多个 luas 也很重要。

例子:

〜/.conky/lua/cpu.lua

function conky_mycpus()
        local file = io.popen("grep -c processor /proc/cpuinfo")
        local numcpus = file:read("*n")
        file:close()
        listcpus = ""
        for i = 1,numcpus
         do listcpus = listcpus.."${offset 15}Core "..tostring(i).." ${color ff8300}${cpubar cpu"..tostring(i).." 6}${color FFFDE2}\n"
        end

        return listcpus
end

满载

lua_load             = "/usr/local/share/lua/5.3/corky.lua ~/.conky/lua/cpu.lua",

如果你没有在一次 lua_load 中加载所有 lua 文件,它可能会抛出“NIL Exceptions”。

相关内容