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

时间:2019-01-14 19:50:47

标签: function lua conky

我正在尝试向现有的conky设置中添加一些lua功能,以便可以清除conky文本中的重复“代码”。例如,我具有有关每个已安装的FS,每个内核等的信息,其中面板中显示的每一行只有一个参数不同。

我的第一个骨架,尝试使用lua函数进行此操作似乎可以运行,但是在我的面板中什么也不显示。我仅找到了非常简单的示例作为基础,因此我可能犯了一个简单的错误,但我什至不知道如何诊断它。我在这里的代码是根据我已经能够找到的有关编写函数(例如How to implement a basic Lua function in Conky?)的模型进行建模的,但这几乎是我在该主题上发现的所有深度,除了绘画和开罗示例。

这是添加到我的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

我期望看到的是“结果文本”显示在面板上该函数调用出现的位置,但什么也没显示。

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

2 个答案:

答案 0 :(得分:0)

成功!

在整理了几篇文章的信息后,我发现了我的基本缺陷- 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. 另外,一些示例显示实际上调用了此“测试”功能而不是编写“ main”,但是“ main”似乎在检查conky_window是否存在方面很有价值。
  3. 一些示例似乎表明需要使用前缀“ conky_”命名函数,但是随后显示了在不带前缀的情况下调用这些函数的示例,因此我假设在调用过程中推断出了前缀。

答案 1 :(得分:0)

主要注意事项:您应该从包含 lua 脚本的目录中运行 conky。