首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Conky - Lua Config -自定义变量

Conky - Lua Config -自定义变量
EN

Stack Overflow用户
提问于 2016-11-02 20:13:12
回答 1查看 5.4K关注 0票数 1

我希望在我的conky的Lua配置中使用自定义变量来在计算机之间共享配置。为什么以下内容不起作用,它使用简单的Lua代码:

代码语言:javascript
运行
复制
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}

EN

回答 1

Stack Overflow用户

发布于 2016-11-03 15:14:25

在不使用Conky的情况下,我将在阅读了维基上的各种配置部分之后,根据一些假设给出一个答案。

在我看来,在“变量”字段中使用的conky.text字段和其他模板字段并不是Lua环境的一部分。也就是说,$${}语法可能不会执行环境查找来插值值。这也可能意味着您要与之比较的nodename变量实际上是nil

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

代码语言:javascript
运行
复制
conky.text = [[${color yellow}]] .. lan.. [[ ${alignr}${addr wlp9s0}]]

或者考虑编写自己的字符串迭代函数,如果您想要一个更干净的字符串:

代码语言:javascript
运行
复制
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,然后从它返回的文件句柄读取。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40388955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档