X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/4e37cf0b229de355f1f83778ae002597fdc8d028..912bd26ede8901c98fd8d7a35f8493ee448109ad:/widgets/bat.lua diff --git a/widgets/bat.lua b/widgets/bat.lua index c14e94c..d18af87 100644 --- a/widgets/bat.lua +++ b/widgets/bat.lua @@ -7,9 +7,7 @@ --]] -local newtimer = require("lain.helpers").newtimer -local first_line = require("lain.helpers").first_line - +local helpers = require("lain.helpers") local naughty = require("naughty") local wibox = require("wibox") @@ -21,9 +19,9 @@ local setmetatable = setmetatable -- Battery infos -- lain.widgets.bat -local bat = {} local function worker(args) + local bat = {} local args = args or {} local timeout = args.timeout or 30 local battery = args.battery or "BAT0" @@ -48,6 +46,11 @@ 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", @@ -58,22 +61,22 @@ local function worker(args) local bstr = "/sys/class/power_supply/" .. battery - local present = first_line(bstr .. "/present") + local present = helpers.first_line(bstr .. "/present") if present == "1" then - local rate = first_line(bstr .. "/power_now") or - first_line(bstr .. "/current_now") + local rate = helpers.first_line(bstr .. "/power_now") or + helpers.first_line(bstr .. "/current_now") - local ratev = first_line(bstr .. "/voltage_now") + local ratev = helpers.first_line(bstr .. "/voltage_now") - local rem = first_line(bstr .. "/energy_now") or - first_line(bstr .. "/charge_now") + local rem = helpers.first_line(bstr .. "/energy_now") or + helpers.first_line(bstr .. "/charge_now") - local tot = first_line(bstr .. "/energy_full") or - first_line(bstr .. "/charge_full") + local tot = helpers.first_line(bstr .. "/energy_full") or + helpers.first_line(bstr .. "/charge_full") - bat_now.status = first_line(bstr .. "/status") or "N/A" + bat_now.status = helpers.first_line(bstr .. "/status") or "N/A" rate = tonumber(rate) or 1 ratev = tonumber(ratev) @@ -97,7 +100,7 @@ local function worker(args) bat_now.time = string.format("%02d:%02d", hrs, min) - bat_now.perc = first_line(bstr .. "/capacity") + bat_now.perc = helpers.first_line(bstr .. "/capacity") if not bat_now.perc then local perc = (rem / tot) * 100 @@ -115,33 +118,43 @@ local function worker(args) else bat_now.watt = "N/A" end - end - widget = bat.widget - settings() + 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 -- notifications for low and critical states if bat_now.status == "Discharging" and notify == "on" and bat_now.perc ~= nil then - local nperc = tonumber(bat_now.perc) + local nperc = tonumber(bat_now.perc) or 100 if nperc <= 5 then bat.id = naughty.notify({ preset = bat_notification_critical_preset, - replaces_id = bat.id + replaces_id = bat.id, }).id elseif nperc <= 15 then bat.id = naughty.notify({ preset = bat_notification_low_preset, - replaces_id = bat.id + replaces_id = bat.id, }).id end end end - newtimer("bat", timeout, update) + helpers.newtimer(battery, timeout, update) return bat.widget end