X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/37c4198cdf300b4dab002e5cbc9ea2590f17f168..e061c2ec063713e5a7f31f0627263e75dc037139:/widgets/bat.lua?ds=inline diff --git a/widgets/bat.lua b/widgets/bat.lua index 8cc1ea9..1391641 100644 --- a/widgets/bat.lua +++ b/widgets/bat.lua @@ -34,19 +34,19 @@ local function worker(args) bat.widget = wibox.widget.textbox('') bat_notification_low_preset = { - title = "Battery low", - text = "Plug the cable!", + title = "Battery low", + text = "Plug the cable!", timeout = 15, - fg = "#202020", - bg = "#CDCDCD" + fg = "#202020", + bg = "#CDCDCD" } bat_notification_critical_preset = { - title = "Battery exhausted", - text = "Shutdown imminent", + title = "Battery exhausted", + text = "Shutdown imminent", timeout = 15, - fg = "#000000", - bg = "#FFFFFF" + fg = "#000000", + bg = "#FFFFFF" } function update() @@ -69,60 +69,58 @@ local function worker(args) local rate_voltage = tonumber(first_line(bstr .. "/voltage_now")) local rate_power = tonumber(first_line(bstr .. "/power_now")) - -- if rate = 0 or rate not defined skip the round - if not (rate_power and rate_power > 0) and - not (rate_current and rate_current > 0) - then - return - end - - -- energy_now(P)[uWh], charge_now(I)[uAh] + -- energy_now(P)[uWh], charge_now(I)[uAh] local energy_now = tonumber(first_line(bstr .. "/energy_now") or - first_line(bstr .. "/charge_now")) - - -- energy_full(P)[uWh], charge_full(I)[uAh], + first_line(bstr .. "/charge_now")) + + -- energy_full(P)[uWh], charge_full(I)[uAh], local energy_full = tonumber(first_line(bstr .. "/energy_full") or - first_line(bstr .. "/charge_full")) + first_line(bstr .. "/charge_full")) local energy_percentage = tonumber(first_line(bstr .. "/capacity")) or - math.floor((energy_now / energy_full) * 100) + math.floor((energy_now / energy_full) * 100) - bat_now.status = first_line(bstr .. "/status") or "N/A" - bat_now.ac_status = first_line(astr .. "/online") or "N/A" + bat_now.status = first_line(bstr .. "/status") or "N/A" + bat_now.ac_status = first_line(astr .. "/online") or "N/A" - local rate_time = 0 - if bat_now.status == "Charging" - then - rate_time = (energy_full - energy_now) / rate_power or rate_current - elseif bat_now.status == "Discharging" + -- if rate = 0 or rate not defined skip the round + if not (rate_power and rate_power > 0) and + not (rate_current and rate_current > 0) and + not (bat_now.status == "Full") then - rate_time = energy_now / rate_power or rate_current + return + end + + local rate_time = 0 + if bat_now.status == "Charging" then + rate_time = (energy_full - energy_now) / (rate_power or rate_current) + elseif bat_now.status == "Discharging" then + rate_time = energy_now / (rate_power or rate_current) end local hours = math.floor(rate_time) local minutes = math.floor((rate_time - hours) * 60) - + + local watt = rate_power and (rate_power / 1e6) or (rate_voltage * rate_current) / 1e12 + bat_now.perc = string.format("%d", energy_percentage) bat_now.time = string.format("%02d:%02d", hours, minutes) - bat_now.watt = string.format("%.2fW", rate_power / 1e6 or (rate_voltage * rate_current) / 1e12) - + bat_now.watt = string.format("%.2fW", watt) end + widget = bat.widget settings() -- notifications for low and critical states - if bat_now.status == "Discharging" and notify == "on" and bat_now.perc - then + if bat_now.status == "Discharging" and notify == "on" and bat_now.perc then local nperc = tonumber(bat_now.perc) or 100 - if nperc <= 5 - then + if nperc <= 5 then bat.id = naughty.notify({ preset = bat_notification_critical_preset, replaces_id = bat.id, }).id - elseif nperc <= 15 - then + elseif nperc <= 15 then bat.id = naughty.notify({ preset = bat_notification_low_preset, replaces_id = bat.id,