Conky - Lua Config - 自定义变量

时间:2016-11-02 20:13:13

标签: lua 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}

1 个答案:

答案 0 :(得分:2)

如果不使用Conky,我将根据我在阅读wiki上的各种配置部分后所做的一些假设做出回答。

在我看来,conky.text字段中使用的'variables'和其他模板字段不属于Lua环境。也就是说,$${}语法可能不执行环境查找来插值。此可能也表示您与之比较的nodename变量实际上是nil

无论如何,如果你的lan变量没有被插值,那么快速修复就是简单地连接你的字符串:

conky.text = [[${color yellow}]] .. lan.. [[ ${alignr}${addr wlp9s0}]]

或者考虑编写自己的字符串iterpolation函数,如果你想要一个看起来更干净的字符串:

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,然后从它返回的文件句柄中读取。