conky
没有用户变量。你可以做的是从 conky 调用 lua 来为你做这件事。lua语言通常默认内置在conky中,所以你只需要将一些代码放在一个文件中,将文件包含在conky设置文件中,然后调用该函数即可。例如,这些 shell 命令将创建一个测试:
cat >/tmp/.conkyrc <<\!
conky.config = {
lua_load = '/tmp/myfunction.lua',
minimum_height = 400,
minimum_width = 600,
use_xft = true,
font = 'Times:size=20',
};
conky.text = [[
set ${lua myfunction t ${execi 1 sensors | awk '/^Core 0/{print 0+$3}'}}°C
get ${lua myfunction t}°C ${lua_bar myfunction t}
]]
!
cat >/tmp/myfunction.lua <<\!
vars = {}
function conky_myfunction(varname, arg)
if(arg~=nil)then vars[varname] = conky_parse(arg) end
return vars[varname]
end
!
conky -c /tmp/.conkyrc -o
在myfunction.lua
文件中,我们声明了一个函数myfunction()
(需要添加前缀conky_
,以便我们可以从 conky 调用它)。它需要 2 个参数、一个变量的名称和一个 conky 表达式。它调用conky_parse()
以评估表达式,并将值保存在 table 中vars
,以调用者提供的名称命名。然后它将结果值返回给调用者。如果没有给出表达式,它将返回先前的值。
在luaconky.text
开头的行中,使用变量的任意名称set
调用lua ,以及用于计算、保存和返回的传感器表达式。开始的行调用只是获取值。myfunction
t
execi
get
myfunction
lua_bar
与 类似exec_bar
,但调用了一个 lua 函数,请参见man conky
. 但是,它需要一个没有接受的前导的数字+
,exec_bar
所以我将 更改awk
为返回它,并将其添加°C
到 conky 文本中。