X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/912bd26ede8901c98fd8d7a35f8493ee448109ad..47a00516d88c42378b487ba302835097c3138099:/widgets/bat.lua diff --git a/widgets/bat.lua b/widgets/bat.lua index d18af87..d55be17 100644 --- a/widgets/bat.lua +++ b/widgets/bat.lua @@ -7,7 +7,9 @@ --]] -local helpers = require("lain.helpers") +local newtimer = require("lain.helpers").newtimer +local first_line = require("lain.helpers").first_line + local naughty = require("naughty") local wibox = require("wibox") @@ -46,11 +48,6 @@ local function worker(args) bg = "#FFFFFF" } - helpers.set_map(battery .. "status", "N/A") - helpers.set_map(battery .. "perc", "N/A") - helpers.set_map(battery .. "time", "N/A") - helpers.set_map(battery .. "watt", "N/A") - function update() bat_now = { status = "Not present", @@ -61,22 +58,22 @@ local function worker(args) local bstr = "/sys/class/power_supply/" .. battery - local present = helpers.first_line(bstr .. "/present") + local present = first_line(bstr .. "/present") if present == "1" then - local rate = helpers.first_line(bstr .. "/power_now") or - helpers.first_line(bstr .. "/current_now") + local rate = first_line(bstr .. "/power_now") or + first_line(bstr .. "/current_now") - local ratev = helpers.first_line(bstr .. "/voltage_now") + local ratev = first_line(bstr .. "/voltage_now") - local rem = helpers.first_line(bstr .. "/energy_now") or - helpers.first_line(bstr .. "/charge_now") + local rem = first_line(bstr .. "/energy_now") or + first_line(bstr .. "/charge_now") - local tot = helpers.first_line(bstr .. "/energy_full") or - helpers.first_line(bstr .. "/charge_full") + local tot = first_line(bstr .. "/energy_full") or + first_line(bstr .. "/charge_full") - bat_now.status = helpers.first_line(bstr .. "/status") or "N/A" + bat_now.status = first_line(bstr .. "/status") or "N/A" rate = tonumber(rate) or 1 ratev = tonumber(ratev) @@ -100,17 +97,14 @@ local function worker(args) bat_now.time = string.format("%02d:%02d", hrs, min) - bat_now.perc = helpers.first_line(bstr .. "/capacity") - - if not bat_now.perc then - local perc = (rem / tot) * 100 - if perc <= 100 then - bat_now.perc = string.format("%d", perc) - elseif perc > 100 then - bat_now.perc = "100" - elseif perc < 0 then - bat_now.perc = "0" - end + local perc = tonumber(first_line(bstr .. "/capacity")) or math.floor((rem / tot) * 100) + + if perc <= 100 then + bat_now.perc = string.format("%d", perc) + elseif perc > 100 then + bat_now.perc = "100" + elseif perc < 0 then + bat_now.perc = "0" end if rate ~= nil and ratev ~= nil then @@ -118,22 +112,12 @@ local function worker(args) else bat_now.watt = "N/A" end - end - if bat_now.status ~= helpers.get_map(battery .. "status") - or bat_now.perc ~= helpers.get_map(battery .. "perc") - or bat_now.time ~= helpers.get_map(battery .. "time") - or bat_now.watt ~= helpers.get_map(battery .. "watt") - then - widget = bat.widget - settings() - - helpers.set_map(battery .. "status", bat_now.status) - helpers.set_map(battery .. "perc", bat_now.perc) - helpers.set_map(battery .. "time", bat_now.time) - helpers.set_map(battery .. "watt", bat_now.watt) end + widget = bat.widget + settings() + -- notifications for low and critical states if bat_now.status == "Discharging" and notify == "on" and bat_now.perc ~= nil then @@ -154,9 +138,9 @@ local function worker(args) end end - helpers.newtimer(battery, timeout, update) + newtimer(battery, timeout, update) - return bat.widget + return setmetatable(bat, { __index = bat.widget }) end -return setmetatable(bat, { __call = function(_, ...) return worker(...) end }) +return setmetatable({}, { __call = function(_, ...) return worker(...) end })