如何调试从 conky 调用的 lua 函数?

How do I debug lua functions called from conky?

我正在尝试向我现有的 conky 设置中添加一些 lua 功能,以便清理我的 conky 文本中重复的 "code"。例如,我有每个安装的 FS、每个核心等的信息,其中面板中显示的每一行仅在一个参数上有所不同。

我的第一个骨架,尝试为此使用 lua 函数似乎 运行 但在我的面板中没有显示任何内容。我只找到了非常简单的例子作为基础,所以我可能犯了一个简单的错误,但我什至不知道如何诊断它。我这里的代码是根据我能够找到的有关编写函数的内容建模的,例如 ,但这就是我在该主题上找到的所有深度,除了绘图和 cairo 示例。

这是添加到我的 conky 配置中的代码,以及我的 functions.lua 文件

的内容
conky.config = {
...
    lua_load = '/home/conky-manager/MyConky/functions.lua',

};

conky.text = [[
...
${voffset 5}${lua conky_test 'test'}
...
]]

文件 - functions.lua

function conky_test(parm1)
    return 'result text'
end

我希望看到的是 "result text" 显示在我的面板中该函数调用出现的位置,但没有任何显示。

是否有 conky 在 运行 时创建的日志,或者提供一些调试输出的方法?即使我在这里犯了一个简单的错误,我仍然希望能够在我的代码变得更复杂时进行诊断。

成功!

在拼凑了几篇文章的信息后,我发现了我的基本缺陷 - 1.缺少一个'conky_main'函数, 2. 缺少 'lua_draw_hook_post' 来调用它,并且 3. 意识到如果我从终端调用 conky,lua 中的打印语句会出现在那里。

因此,对于看到此问题并遇到相同问题的任何人,这里是更正后的代码。

conky.config = {
...
    lua_load = '/home/conky-manager/MyConky/functions.lua',
    lua_draw_hook_post = "main",

};

conky.text = [[
...
${lua conky_test 'test'}
...
]]

以及我的 functions.lua 文件中的正确基础知识

function conky_test(parm1)
    return 'result text'
end

function conky_main()
    if conky_window == nil then
        return
    end
end

一些注意事项:

  1. 我仍然不确定使用 'lua_draw_hook_pre' 而不是 'lua_draw_hook_post' 是否有任何区别,但在这个例子中似乎没有。
  2. 此外,一些示例显示实际调用此 'test' 函数而不是编写 'main',但 'main' 似乎在检查是否 conky_window 方面有价值存在。
  3. 有些示例似乎说明需要使用前缀 'conky_' 命名函数,但随后显示了调用不带前缀的这些函数的示例,因此我假设前缀是在调用过程中推断出来的。

重要说明:您应该从包含 lua 脚本的目录中 运行 conky。