X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/8d3868d7ce528cfc075e246c8935bae2724e0868..ee84995734048a20e920badafb305c15556c3e6c:/widget/temp.lua diff --git a/widget/temp.lua b/widget/temp.lua index b662346..2b97a4e 100644 --- a/widget/temp.lua +++ b/widget/temp.lua @@ -1,45 +1,44 @@ - --[[ - - Licensed under GNU General Public License v2 - * (c) 2013, Luke Bonham - + + Licensed under GNU General Public License v2 + * (c) 2013, Luca CPZ + --]] -local helpers = require("lain.helpers") -local wibox = require("wibox") -local io = { open = io.open } -local tonumber = tonumber -local setmetatable = setmetatable +local helpers = require("lain.helpers") +local wibox = require("wibox") +local tonumber = tonumber --- coretemp +-- {thermal,core} temperature info -- lain.widget.temp -local temp = {} -local function worker(args) +local function factory(args) + local temp = { widget = wibox.widget.textbox() } local args = args or {} - local timeout = args.timeout or 2 - local tempfile = args.tempfile or "/sys/class/thermal/thermal_zone0/temp" + local timeout = args.timeout or 30 + local tempfile = args.tempfile or "/sys/devices/virtual/thermal/thermal_zone0/temp" local settings = args.settings or function() end - temp.widget = wibox.widget.textbox() - function temp.update() - local f = io.open(tempfile) - if f then - coretemp_now = tonumber(f:read("*all")) / 1000 - f:close() - else - coretemp_now = "N/A" - end - - widget = temp.widget - settings() + helpers.async({"find", "/sys/devices/virtual/thermal", "-type", "f", "-name", "*temp*"}, function(f) + temp_now = {} + local temp_fl, temp_value + for t in f:gmatch("[^\n]+") do + temp_fl = helpers.first_line(t) + if temp_fl then + temp_value = tonumber(temp_fl) + temp_now[t] = temp_value and temp_value/1e3 or temp_fl + end + end + coretemp_now = temp_now[tempfile] or "N/A" + widget = temp.widget + settings() + end) end - helpers.newtimer("coretemp", timeout, temp.update) + helpers.newtimer("thermal", timeout, temp.update) return temp end -return setmetatable(temp, { __call = function(_, ...) return worker(...) end }) +return factory