所以我要用sensors命令得到CPU核心温度。
我在信里写道
$Core 0 Temp:$alignr${execi 1 sensors | grep 'Core 0' | awk {'print $3'}} $alignr${execibar 1 sensors | grep 'Core 0' | awk {'print $3'}}每秒钟,我都会在两个地方运行完全相同的命令sensors | grep 'Core 0' | awk {'print $3'},用于完全相同的输出。是否有一种方法可以将输出保存在变量中,并使用该变量代替命令。
发布于 2021-02-27 10:56:50
conky没有用户变量。相反,你能做的是叫lua从conky来为你做这件事。在默认情况下,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调用它)。它使用两个参数,一个变量的名称和一个conky表达式。它调用conky_parse()来计算表达式,并以调用方提供的名称将值保存在表vars中。然后,它将结果值返回给调用方。如果没有给出表达式,它将返回前一个值。
在conky.text中,set开头的行用变量t和execi传感器表达式的任意名称调用lua中的myfunction以求值、保存和返回。get开头的行调用myfunction来获取值。
lua_bar类似于exec_bar,但是调用lua函数,参见man conky。但是,它需要一个数字,而不是exec_bar接受的领先的awk,所以我已经更改了awk以返回这个数字,并将°C添加到了这个笨拙的文本中。
https://stackoverflow.com/questions/66395852
复制相似问题