X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/ec7c9cd9a6ade89eefada0e04c30cd300acedd4a..7de62e4d9fe0d3a7521fc72a66c905d6f343c27b:/widgets/cpu.lua?ds=inline diff --git a/widgets/cpu.lua b/widgets/cpu.lua index 7c1ecb0..1554443 100644 --- a/widgets/cpu.lua +++ b/widgets/cpu.lua @@ -7,16 +7,13 @@ --]] -local first_line = require("lain.helpers").first_line -local newtimer = require("lain.helpers").newtimer - +local helpers = require("lain.helpers") local wibox = require("wibox") local math = { ceil = math.ceil } local string = { format = string.format, gmatch = string.gmatch } local tostring = tostring - local setmetatable = setmetatable -- CPU usage @@ -28,16 +25,18 @@ local cpu = { 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 cpu.widget = wibox.widget.textbox('') + helpers.set_map("cpuactive", 0) + helpers.set_map("cputotal", 0) function update() -- Read the amount of time the CPUs have spent performing -- different kinds of work. Read the first line of /proc/stat -- which is the sum of all CPUs. - local times = first_line("/proc/stat") + local times = helpers.first_line("/proc/stat") local at = 1 local idle = 0 local total = 0 @@ -54,22 +53,26 @@ local function worker(args) end local active = total - idle - -- Read current data and calculate relative values. - local dactive = active - cpu.last_active - local dtotal = total - cpu.last_total + if helpers.get_map("cpuactive") ~= active + or helpers.get_map("cputotal") ~= total + then + -- Read current data and calculate relative values. + local dactive = active - cpu.last_active + local dtotal = total - cpu.last_total - cpu_now = {} - cpu_now.usage = tostring(math.ceil((dactive / dtotal) * 100)) + cpu_now = {} + cpu_now.usage = tostring(math.ceil((dactive / dtotal) * 100)) - widget = cpu.widget - settings() + widget = cpu.widget + settings() - -- Save current data for the next run. - cpu.last_active = active - cpu.last_total = total + -- Save current data for the next run. + helpers.set_map("cpuactive", active) + helpers.set_map("cputotal", total) + end end - newtimer("cpu", timeout, update) + helpers.newtimer("cpu", timeout, update) return cpu.widget end