我正在尝试向我现有的 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 在运行时创建的日志,或者提供一些调试输出的方法?即使我在这里犯了一个简单的错误,当我的代码变得更加复杂时,我仍然希望能够诊断问题。
最佳答案
成功!
将几篇文章中的信息拼凑在一起后,我发现了我的基本缺陷 - 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
一些注意事项:
- 我仍然不确定使用“lua_draw_hook_pre”而不是“lua_draw_hook_post”是否有任何区别,但在本例中似乎没有区别。
- 此外,一些示例显示实际上调用了这个“测试”函数而不是编写“main”,但“main”似乎在检查 conky_window 是否存在方面有值(value)。
- 一些示例似乎表明需要使用前缀“conky_”命名函数,但随后显示了不带前缀调用这些函数的示例,因此我假设前缀是在调用过程中推断出来的。
关于function - 如何调试从 conky 调用的 lua 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188219/