![是否可以在 conky 中循环](https://linux22.com/image/95609/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%20conky%20%E4%B8%AD%E5%BE%AA%E7%8E%AF.png)
有没有办法循环进去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”。