是否可以在 conky 中循环

sit*_*lge 5 arch-linux shell-script conky

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

sudo grep "processor" /proc/cpuinfo | wc -l
Run Code Online (Sandbox Code Playgroud)

提供有关核心计数的信息,可能会在循环中使用,例如

${cpu cpu{1}}
Run Code Online (Sandbox Code Playgroud)

meu*_*euh 6

我不是 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
Run Code Online (Sandbox Code Playgroud)

然后在您~/.conkyrcconky.config={部分中添加该行

lua_load = '~/mylua.lua',
Run Code Online (Sandbox Code Playgroud)

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

${lua_parse conky_mycpus}
Run Code Online (Sandbox Code Playgroud)

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