From fd35485c200a52c9429f9a4f3f5c8282b64dba30 Mon Sep 17 00:00:00 2001
From: copycat-killer <dada@archlinux.info>
Date: Sat, 7 Jan 2017 15:12:41 +0100
Subject: [PATCH] alsa/bat textbox resize fix

---
 README.rst        |  2 +-
 widgets/abase.lua |  3 +--
 widgets/alsa.lua  | 13 +++++++------
 widgets/base.lua  |  1 -
 widgets/bat.lua   | 10 ++++------
 widgets/cpu.lua   | 36 +++++++++++++++++-------------------
 6 files changed, 30 insertions(+), 35 deletions(-)

diff --git a/README.rst b/README.rst
index f6938bd..6c7bb01 100644
--- a/README.rst
+++ b/README.rst
@@ -15,7 +15,7 @@ Description
 
 **Note:** the update to 4.x is still in progress: if you experience issues, please report them in order to speed up the process.
 
-Successor of awesome-vain_, this module provides new layouts, a set of widgets and utility functions, in order to improve Awesome_ usability and configurability.
+Successor of awesome-vain_, this module provides new layouts, a set of widgets and utility functions, with the aim of improving Awesome_ usability and configurability.
 
 Read the wiki_ for all the info.
 
diff --git a/widgets/abase.lua b/widgets/abase.lua
index fb20d76..60d86ab 100644
--- a/widgets/abase.lua
+++ b/widgets/abase.lua
@@ -12,8 +12,7 @@ local wibox        = require("wibox")
 
 local setmetatable = setmetatable
 
--- Basic template for custom widgets
--- Asynchronous version
+-- Basic template for custom widgets (asynchronous version)
 -- lain.widgets.abase
 
 local function worker(args)
diff --git a/widgets/alsa.lua b/widgets/alsa.lua
index 7500097..670765a 100644
--- a/widgets/alsa.lua
+++ b/widgets/alsa.lua
@@ -7,7 +7,7 @@
                                                   
 --]]
 
-local newtimer     = require("lain.helpers").newtimer
+local helpers      = require("lain.helpers")
 local read_pipe    = require("lain.helpers").read_pipe
 
 local wibox        = require("wibox")
@@ -19,7 +19,7 @@ local setmetatable = setmetatable
 
 -- ALSA volume
 -- lain.widgets.alsa
-local alsa = { last_level = "0", last_status = "" }
+local alsa = helpers.make_widget_textbox()
 
 local function worker(args)
     local args     = args or {}
@@ -29,11 +29,12 @@ local function worker(args)
     alsa.cmd           = args.cmd or "amixer"
     alsa.channel       = args.channel or "Master"
     alsa.togglechannel = args.togglechannel
-    alsa.widget        = wibox.widget.textbox('')
+    alsa.last_level    = "0"
+    alsa.last_status   = ""
 
     function alsa.update()
         mixer = read_pipe(string.format("%s get %s", alsa.cmd, alsa.channel))
-        l,s   = string.match(mixer, "([%d]+)%%.*%[([%l]*)")
+        l, s  = string.match(mixer, "([%d]+)%%.*%[([%l]*)")
 
         -- HDMIs can have a channel different from Master for toggling mute
         if alsa.togglechannel then
@@ -51,9 +52,9 @@ local function worker(args)
     end
 
     timer_id = string.format("alsa-%s-%s", alsa.cmd, alsa.channel)
-    newtimer(timer_id, timeout, alsa.update)
+    helpers.newtimer(timer_id, timeout, alsa.update)
 
-    return setmetatable(alsa, { __index = alsa.widget })
+    return alsa
 end
 
 return setmetatable(alsa, { __call = function(_, ...) return worker(...) end })
diff --git a/widgets/base.lua b/widgets/base.lua
index cd84e36..642a858 100644
--- a/widgets/base.lua
+++ b/widgets/base.lua
@@ -8,7 +8,6 @@
 
 local newtimer     = require("lain.helpers").newtimer
 local read_pipe    = require("lain.helpers").read_pipe
-
 local wibox        = require("wibox")
 
 local setmetatable = setmetatable
diff --git a/widgets/bat.lua b/widgets/bat.lua
index f63b1fa..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!",
@@ -165,9 +163,9 @@ local function worker(args)
         end
     end
 
-    newtimer(battery, timeout, bat.update)
+    helpers.newtimer(battery, timeout, bat.update)
 
-    return setmetatable(bat, { __index = bat.widget })
+    return bat
 end
 
 return setmetatable({}, { __call = function(_, ...) return worker(...) end })
diff --git a/widgets/cpu.lua b/widgets/cpu.lua
index 737b6fa..c33c7eb 100644
--- a/widgets/cpu.lua
+++ b/widgets/cpu.lua
@@ -25,28 +25,26 @@ local cpu = { core = {} }
 
 local function worker(args)
     local args     = args or {}
-	  local timeout  = args.timeout or 2
-	  local settings = args.settings or function() end
+    local timeout  = args.timeout or 2
+    local settings = args.settings or function() end
 
-	  cpu.widget = wibox.widget.textbox('')
+    cpu.widget = wibox.widget.textbox('')
 
-	  function update()
+    function update()
         -- Read the amount of time the CPUs have spent performing
-		    -- different kinds of work. Read the first line of /proc/stat
-		    -- which is the sum of all CPUs.
+        -- different kinds of work. Read the first line of /proc/stat
+        -- which is the sum of all CPUs.
         local times = lines_match("cpu","/proc/stat")
 
-        for index,time in pairs(times)
-        do
+        for index,time in pairs(times) do
             local coreid = index - 1
-            local core = cpu.core[coreid] or
-                  { last_active = 0 , last_total = 0, usage = 0 }
-            local at = 1
-            local idle = 0
-            local total = 0
-
-            for field in string.gmatch(time, "[%s]+([^%s]+)")
-            do
+            local core   = cpu.core[coreid] or
+                           { last_active = 0 , last_total = 0, usage = 0 }
+            local at     = 1
+            local idle   = 0
+            local total  = 0
+
+            for field in string.gmatch(time, "[%s]+([^%s]+)") do
                 -- 4 = idle, 5 = ioWait. Essentially, the CPUs have done
                 -- nothing during these times.
                 if at == 4 or at == 5 then
@@ -62,15 +60,14 @@ local function worker(args)
                 -- Read current data and calculate relative values.
                 local dactive = active - core.last_active
                 local dtotal  = total - core.last_total
-
-                local usage = math.ceil((dactive / dtotal) * 100)
+                local usage   = math.ceil((dactive / dtotal) * 100)
 
                 core.last_active = active
                 core.last_total  = total
                 core.usage       = usage
 
                 -- Save current data for the next run.
-                cpu.core[coreid] = core;
+                cpu.core[coreid] = core
             end
         end
 
@@ -82,6 +79,7 @@ local function worker(args)
     end
 
     newtimer("cpu", timeout, update)
+
     return cpu.widget
 end
 
-- 
2.39.5