我希望在我的conky的Lua配置中使用自定义变量来在计算机之间共享配置。为什么以下内容不起作用,它使用简单的Lua代码:
conky.config={..}
-- set variables
work = "COMPUTERNAME"
lan = "wlp9s0"
-- compare with current host name (conky's global variable)
if work == nodename then
lan = "enp3s0"
end
-- use $lan in conky's text
conky.text = [[${color yellow}$lan ${alignr}${addr wlp9s0}]]我没有找到如何使用自定义变量的任何文档或示例。$lan未解析并打印为${lan}
发布于 2016-11-03 15:14:25
在不使用Conky的情况下,我将在阅读了维基上的各种配置部分之后,根据一些假设给出一个答案。
在我看来,在“变量”字段中使用的conky.text字段和其他模板字段并不是Lua环境的一部分。也就是说,$和${}语法可能不会执行环境查找来插值值。这也可能意味着您要与之比较的nodename变量实际上是nil。
无论如何,如果您的lan变量没有被内插,那么快速修复方法就是简单地连接您的字符串:
conky.text = [[${color yellow}]] .. lan.. [[ ${alignr}${addr wlp9s0}]]或者考虑编写自己的字符串迭代函数,如果您想要一个更干净的字符串:
local function interp (s, t)
return s:gsub('(#%b{})', function (w)
return t[w:sub(3, -2)] or w
end)
end
conky.text = interp([[${color yellow}#{lan} ${alignr}${addr wlp9s0}]], {
lan = lan
})注意,如果nodename不是Lua环境的一部分,您可以尝试使用io.popen手动运行hostname,然后从它返回的文件句柄读取。
https://stackoverflow.com/questions/40388955
复制相似问题