X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/0e37d220b793edbefb7064315cb7274fe5282862..fdb6e412a05acae3f4ad92f5f21a821c6f69a6a7:/widgets/bat.lua diff --git a/widgets/bat.lua b/widgets/bat.lua index d84a5d8..8e483f7 100644 --- a/widgets/bat.lua +++ b/widgets/bat.lua @@ -7,7 +7,7 @@ --]] -local newtimer = require("lain.helpers").newtimer +local helpers = require("lain.helpers") local first_line = require("lain.helpers").first_line local naughty = require("naughty") @@ -27,7 +27,7 @@ local setmetatable = setmetatable -- lain.widgets.bat local function worker(args) - local bat = {} + local bat = helpers.make_widget_textbox() local args = args or {} local timeout = args.timeout or 30 local batteries = args.batteries or (args.battery and {args.battery}) or {"BAT0"} @@ -35,8 +35,6 @@ local function worker(args) local notify = args.notify or "on" local settings = args.settings or function() end - bat.widget = wibox.widget.textbox('') - bat_notification_low_preset = { title = "Battery low", text = "Plug the cable!", @@ -68,7 +66,7 @@ local function worker(args) bat_now.n_perc[i] = 0 end - function update() + function bat.update() local sum_rate_current = 0 local sum_rate_voltage = 0 local sum_rate_power = 0 @@ -135,6 +133,10 @@ local function worker(args) bat_now.perc = math.floor(math.min(100, (sum_energy_now / sum_energy_full) * 100)) bat_now.time = string.format("%02d:%02d", hours, minutes) bat_now.watt = tonumber(string.format("%.2f", sum_rate_energy / 1e6)) + elseif bat_now.status ~= "Full" and sum_rate_power == 0 and bat_now.ac_status == 1 then + bat_now.perc = math.floor(math.min(100, (sum_energy_now / sum_energy_full) * 100)) + bat_now.time = "00:00" + bat_now.watt = 0 elseif bat_now.status == "Full" then bat_now.perc = 100 bat_now.time = "00:00" @@ -161,9 +163,9 @@ local function worker(args) end end - newtimer(battery, timeout, update) + helpers.newtimer(battery, timeout, bat.update) - return setmetatable(bat, { __index = bat.widget }) + return bat end return setmetatable({}, { __call = function(_, ...) return worker(...) end })