--]]
-local newtimer = require("lain.helpers").newtimer
-
+local helpers = require("lain.helpers")
local wibox = require("wibox")
-local io = io
-local string = { format = string.format,
- match = string.match }
+local io = { open = io.open }
+local string = { match = string.match }
local setmetatable = setmetatable
-- lain.widgets.sysload
local sysload = {}
-function worker(args)
+local function worker(args)
local args = args or {}
- local timeout = args.timeout or 5
+ local timeout = args.timeout or 1
local settings = args.settings or function() end
- widget = wibox.widget.textbox('')
+ sysload.widget = wibox.widget.textbox('')
+ helpers.set_map("load_1", 0)
+ helpers.set_map("load_5", 0)
+ helpers.set_map("load_15", 0)
function update()
local f = io.open("/proc/loadavg")
local ret = f:read("*all")
f:close()
-
- a, b, c = string.match(ret, "([^%s]+) ([^%s]+) ([^%s]+)")
- settings()
+ load_1, load_5, load_15 = string.match(ret, "([^%s]+) ([^%s]+) ([^%s]+)")
+
+ if load_1 ~= helpers.get_map("load_1")
+ or load_5 ~= helpers.get_map("load_5")
+ or load_15 ~= helpers.get_map("load_15")
+ then
+ widget = sysload.widget
+ settings()
+
+ helpers.set_map("load_1", load_1)
+ helpers.set_map("load_5", load_5)
+ helpers.set_map("load_15", load_15)
+ end
end
- newtimer("sysload", timeout, update)
+ helpers.newtimer("sysload", timeout, update)
- return widget
+ return sysload.widget
end
return setmetatable(sysload, { __call = function(_, ...) return worker(...) end })