X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/d352d807542aa221da7774d03a700cc596a09ba7..c47857046f627ec5c80c8f8dbf9527cf1606a4b0:/widgets/bat.lua?ds=sidebyside

diff --git a/widgets/bat.lua b/widgets/bat.lua
index 485fd57..d55be17 100644
--- a/widgets/bat.lua
+++ b/widgets/bat.lua
@@ -21,9 +21,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"
@@ -97,17 +97,14 @@ local function worker(args)
 
             bat_now.time = string.format("%02d:%02d", hrs, min)
 
-            bat_now.perc = 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
@@ -122,28 +119,28 @@ local function worker(args)
         settings()
 
         -- notifications for low and critical states
-        bat_now.perc = tonumber(bat_now.perc)
         if bat_now.status == "Discharging" and notify == "on" and bat_now.perc ~= nil
         then
-            if bat_now.perc <= 5
+            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 bat_now.perc <= 15
+            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)
+    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 })