-
--[[
-
- 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 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", "-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 factory(...) end })
+return factory