Conky文件中的pre_exec命令的Lua“替换”是什么?

问题描述 投票:0回答:1

我不太擅长编程,但是我试图弄弄我喜欢的conky_rc文件,因为我发现它看起来很简单。

正如标题所述,我现在了解到pre_exec的先前命令已被Lua长期删除并取代。

[很遗憾,除了https://github.com/brndnmtthws/conky/issues/62,我似乎找不到与此直接相关的任何内容。线程https://github.com/brndnmtthws/conky/issues/146引用了它,并且它的“解决方案”状态为:基本上,没有替代,您应该使用Lua或使用非常大的间隔并执行。

我发现了另外几个线程,所有线程都包含有关为何终止此函数的问题,但没有实际答案。所以,重申一下,我完全不了解Lua(我以前听说过,现在我增加了一些网站来查看明天,因为我花了大部分时间试图弄清这件事。 ),那么我可能会放弃并执行execi选项(我的计算机可以处理它,但是,我认为它是如此的低效)。

是否有适当的Lua选项?如果是这样,请有人指导我使用该手册或Wiki,或者对其进行解释?还是“适当的” Lua解决方案?

@ Vincent-C对于您的脚本不起作用是因为该功能没有接到电话。从我做过的快速测试来看,lua_startup_hook需要该函数位于另一个文件中使用lua_load加载,不是很确定钩子函数如何所有的工作,因为我宁愿直接使用配置作为lua,因为它是lua。

基本上只是调用io.popen东西,并将其连接到conky.text中

conky.text = [[ a lot of stuff... ${color green} ]];

o = io.popen('fortune -s | cowsay', 'r') conky.text = conky.text ..
o:read('*a')
linux lua conky
1个回答
0
投票

您引用的第一页上的comment by asl97似乎提供了答案,但稍作解释可能会有所帮助。

as197提供以下通用Lua函数以替代$pre_exec,并在其后带有require语句以使io可供该函数使用:

require 'io'

function pre_exec(cmd)
    local handle = io.popen(cmd)
    local output = handle:read("*a")
    handle:close()
    return output
end

将此代码块添加到conky配置文件中后,即可在其中使用该功能。为了进行测试,我将其添加到了conky.config = { ... }部分的上方。

调用Lua pre_exec函数将返回一个字符串,其中包含传递给它的命令的输出。从[[]]的conky.text部分也是一个字符串,因此可以使用..运算符将其转换为pre_exec返回的字符串,如as197提供的用法部分所示。

[在我的测试中,我做了以下愚蠢的操作,以达到预期效果,显示了“ Hello World!”。以及date函数的输出,在我的conky显示器的顶部,每个上方和下方都有间距:

conky.text = pre_exec("echo; echo Hello World!; echo; date; echo")..[[
    -- lots of boring conky stuff --
]]

当然,更严重的命令可以与pre_exec一起使用,如as197所示。

as197没有解释的一件事是如何提供如何连接,以使pre_exec输出位于conky显示的中间,而不仅仅是开始。我进行了测试,发现您可以执行以下操作:

conky.text = [[
    -- some conky stuff --
]]..pre_exec("your_important_command")..[[
    -- more conky stuff --
]]
© www.soinside.com 2019 - 2024. All rights reserved.