X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/72ed28967b4459a08c5c78f9a10d51b0174c20e6..9a8cfdb7d13ac9e38ccd7f613dd55ee529eb1ce3:/widgets/contrib/tpbat/init.lua

diff --git a/widgets/contrib/tpbat/init.lua b/widgets/contrib/tpbat/init.lua
index 72d6453..20a10f4 100644
--- a/widgets/contrib/tpbat/init.lua
+++ b/widgets/contrib/tpbat/init.lua
@@ -17,39 +17,33 @@
 local debug        = { getinfo = debug.getinfo }
 local newtimer     = require("lain.helpers").newtimer
 local first_line   = require("lain.helpers").first_line
-local beautiful    = require("beautiful")
 local naughty      = require("naughty")
 local wibox        = require("wibox")
-
 local string       = { format = string.format }
 local math         = { floor = math.floor }
 local tostring     = tostring
 local setmetatable = setmetatable
-
 package.path       = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .. "?.lua;" .. package.path
 local smapi        = require("smapi")
 
 -- ThinkPad SMAPI-enabled battery info widget
 -- lain.widgets.contrib.tpbat
-local tpbat = { }
-local tpbat_notification = nil
+local tpbat = {}
 
-function tpbat:hide()
-    if tpbat_notification ~= nil
-    then
-        naughty.destroy(tpbat_notification)
-        tpbat_notification = nil
-    end
+function tpbat.hide()
+    if not tpbat.notification then return end
+    naughty.destroy(tpbat.notification)
+    tpbat.notification = nil
 end
 
-function tpbat:show(t_out)
-    tpbat:hide()
+function tpbat.show(t_out)
+    tpbat.hide()
 
-    local bat   = self.bat
-    local t_out = t_out or 0
+    local bat = tpbat.bat
 
     if bat == nil or not bat:installed() then return end
 
+    local t_out = t_out or 0
     local mfgr   = bat:get('manufacturer') or "no_mfgr"
     local model  = bat:get('model') or "no_model"
     local chem   = bat:get('chemistry') or "no_chem"
@@ -57,10 +51,8 @@ function tpbat:show(t_out)
     local time   = bat:remaining_time()
     local msg    = "\t"
 
-    if status ~= "idle" and status ~= "nil"
-    then
-        if time == "N/A"
-        then
+    if status ~= "idle" and status ~= "nil" then
+        if time == "N/A" then
             msg = "...Calculating time remaining..."
         else
             msg = time .. (status == "charging" and " until charged" or " remaining")
@@ -72,10 +64,10 @@ function tpbat:show(t_out)
     local str = string.format("%s : %s %s (%s)\n", bat.name, mfgr, model, chem)
                 .. string.format("\n%s \t\t\t %s", status:upper(), msg)
 
-    tpbat_notification = naughty.notify({
-        preset = { fg = beautiful.fg_normal },
-        text = str,
-        timeout = t_out
+    tpbat.notification = naughty.notify({
+        text    = str,
+        timeout = t_out,
+        screen  = client.focus and client.focus.screen or 1
     })
 end
 
@@ -88,7 +80,7 @@ function tpbat.register(args)
     tpbat.bat = smapi:battery(battery) -- Create a new battery
     local bat = tpbat.bat
 
-    tpbat.widget = wibox.widget.textbox('')
+    tpbat.widget = wibox.widget.textbox()
 
     bat_notification_low_preset = {
         title = "Battery low",
@@ -111,11 +103,12 @@ function tpbat.register(args)
         local n = naughty.notify({
             preset = bat_notification_low_preset,
             title = "SMAPI Battery Warning: Unable to read battery state!",
-            text = "This widget is intended for ThinkPads. Is tp_smapi installed? Check your configs & paths."
+            text = "This widget is intended for ThinkPads. Is tp_smapi installed? Check your configs & paths.",
+            screen = client.focus and client.focus.screen or 1
         })
     end
 
-    function update()
+    function tpbat.update()
         bat_now = {
             status = "Not present",
             perc   = "N/A",
@@ -137,13 +130,15 @@ function tpbat.register(args)
                 then
                     tpbat.id = naughty.notify({
                         preset = bat_notification_critical_preset,
-                        replaces_id = tpbat.id
+                        replaces_id = tpbat.id,
+                        screen = client.focus and client.focus.screen or 1
                     }).id
                 elseif bat_now.perc <= 15
                 then
                     tpbat.id = naughty.notify({
                         preset = bat_notification_low_preset,
-                        replaces_id = tpbat.id
+                        replaces_id = tpbat.id,
+                        screen = client.focus and client.focus.screen or 1
                     }).id
                 end
             end
@@ -152,15 +147,16 @@ function tpbat.register(args)
         end
 
         widget = tpbat.widget
+
         settings()
     end
 
-    newtimer("tpbat", timeout, update)
+    newtimer("tpbat-" .. bat.name, timeout, tpbat.update)
 
-    widget:connect_signal('mouse::enter', function () tpbat:show() end)
-    widget:connect_signal('mouse::leave', function () tpbat:hide() end)
+    widget:connect_signal('mouse::enter', function () tpbat.show() end)
+    widget:connect_signal('mouse::leave', function () tpbat.hide() end)
 
-    return tpbat.widget
+    return tpbat
 end
 
 return setmetatable(tpbat, { __call = function(_, ...) return tpbat.register(...) end })