1

我正在努力通过将显示逻辑重构为 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 文本完美运行。我已经在调用上尝试了几种变体,更改引号、逗号/无逗号、不同的参数名称以避免关键字......

4

1 回答 1

2

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

因此,使用字符串调用 lua 函数的正确方法如下:

  ${lua conky_display_fs Home, /home}  
于 2019-01-21T19:02:17.680 回答