【问题标题】:How to implement a basic Lua function in Conky?如何在 Conky 中实现一个基本的 Lua 功能?
【发布时间】:2023-03-05 14:55:01
【问题描述】:

我正在尝试向我的 Conky 添加一个函数,该函数会打印字符串的长度以进行调试。代码位于一个名为 test.lua 的文件中,非常简单:

function test(word)
return string.len(word)
end

...我像这样加载它。在我的conky.config 部分,我有:

lua_load = '/home/xvlaze/test.lua',
lua_draw_hook_pre = 'test'

...在conky.text 部分我有:

${lua test "fooo"}

...其中test 是函数的名称,fooo 是要测试的字符串。

预期的结果应该是在 Conky 中打印的 4,但我得到的是:

conky: llua_do_call: function conky_test execution failed: /home/xvlaze/test.lua:2: attempt to index a nil value (local 'string')
conky: llua_getstring: function conky_test didn't return a string, result discarded

我浏览了documentation,但找不到任何东西。有人知道失败在哪里吗?

【问题讨论】:

  • 坦率地调用你的参数string,就像普通的string库一样不能真正结束。
  • 在这种情况下,它甚至应该可以工作。但是,是的。这是个坏主意。
  • 已更新。看起来更糟。
  • @xvlaze 这是你的整个脚本吗?看起来你有一个名为 string 的变量覆盖了字符串库(也许你做了 string = 'this')?
  • @DavisDude 是的,这就是我的全部剧本。

标签: function debugging lua customization conky


【解决方案1】:

关于如何在 Conky 中实现功能的几个指南:

  • 首先:您必须在函数名称前使用conky_。 否则,在运行 Conky 时会出现以下错误:

    attempt to call a nil value
    
  • 其次:您必须始终返回一个值。 我不介意重复一遍 - 这是至关重要的。否则,你会得到:

    function foobar didn't return a string, result discarded
    function_result
    

    ...在您的终端中,您的 Conky 将没有与您的额外代码相关的值。不会打印有关您的功能的任何内容。

  • 最后但并非最不重要的一点:您必须始终像这样调用您的函数:

    lua_load = '/path/to/function.lua',
    -- Whatever content...
    ${lua function_name function_parameter1 function_parameterN} -- In case you use more than one parameter.
    

总之,一个虚拟函数模板可以是:

  • 主文件(conky.conf):

    conky.config = {
        -- Whatever content... Lua styled comments.
        lua_load = '/path/to/function.lua',
    }
    
    conky.text = [[
        # Whatever content... In this section comments are started with '#'!    
        ${lua function_name parameter}
    ]]
    
  • 功能文件:

    function conky_function_name(parameter)
        -- Whatever content... Remember this is Lua, not conky.text syntax. Always use '--' comments!
        return whatever -- No return, no party. A function MUST always return something!
    end
    

【讨论】:

  • 现在不工作了。有什么遗漏吗?? function.lua 应该是可执行的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多