【问题标题】:How to properly pass file path to lua function from Conky如何从 Conky 正确地将文件路径传递给 lua 函数
【发布时间】:2019-06-14 05:40:47
【问题描述】:

我正在努力通过将显示逻辑重构为 lua 函数来简化我的 conky,但我找不到任何关于如何传递文件路径的示例,而且我的猜测尝试产生了脚本错误。

我试图做的是在我的面板上显示有关每个 fs 的以下内容:root、home 和 3 个其他已安装的文件系统。每一行的当前工作 conky 逻辑类似于 /home 的这一行:

    ${goto 10}${voffset 4}${font StyleBats:size=8}4${font}   Home: ${goto 90}${color1}${fs_bar 6,100 /home}${color} ${goto 150}${alignr}${fs_free /home}

每个后续行仅在标签和 2 个硬编码路径(在 fs_bar 和 fs_free 部分中)方面有所不同

所以,我正在拍摄这样的函数调用:

    ${lua conky_display_fs("Home", "/home")}

带有lua函数:

    function conky_display_fs (fname, fpath)
    local outstring = conky_parse("${goto 10}${voffset 4}${font StyleBats:size=8}4${font}   " .. fname .. ": ${goto 90}${color1}${fs_bar 6,100 " .. fpath .. "}${color} ${goto 150}${alignr}${fs_free " .. fpath .."}")

    print (outstring)
    return outstring

结束

但它始终无法在 conky 调试日志中显示以下内容

    conky: llua_do_call: function conky_display_fs("Home", execution failed: attempt to call a nil value

所以,我猜问题在于我如何传递路径字符串,因为它只显示错误中的第一个值。我想到了字符串转义等,但是在conky配置的其他部分使用的文件名不需要任何,例如:

    lua_load = "~/conky-manager/MyConky/functions.lua",

我找不到任何传递文件路径,甚至传递多个字符串参数的示例,只有使用 vars 的简单示例。

这适用于现有的 conky 配置,其中第一个代码块中显示的成功 conky 文本完美运行。我已经尝试了调用的几种变体,更改引号、逗号/无逗号、不同的参数名称以避免关键字...

【问题讨论】:

    标签: function lua parameter-passing conky


    【解决方案1】:

    经过大约 20 次不同的实验后解决了这个问题。答案是,尽管想要在配置部分引用字符串,包括 lua 配置,但它们不能在 lua 调用中被引用。此外,我删除了括号。

    那么,用字符串调用lua函数的正确方法如下:

      ${lua conky_display_fs Home, /home}  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 2018-12-26
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多