X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/8147032a532a73b03bd04dee0ee959f035377526..b9e2596cbddd1d932aa4b6bbd2226a6016b1004e:/widgets/base.lua

diff --git a/widgets/base.lua b/widgets/base.lua
index 0431d03..4f28e07 100644
--- a/widgets/base.lua
+++ b/widgets/base.lua
@@ -12,11 +12,11 @@ local wibox        = require("wibox")
 local io           = io
 local setmetatable = setmetatable
 
--- Basic template for simple widgets 
+-- Basic template for custom widgets 
 -- lain.widgets.base
-local base = {}
 
 local function worker(args)
+    local base     = {}
     local args     = args or {}
     local timeout  = args.timeout or 5
     local cmd      = args.cmd or ""
@@ -24,14 +24,17 @@ local function worker(args)
 
     base.widget = wibox.widget.textbox('')
 
-    function update()
-        output = io.popen(cmd):read("*all")
+    function base.update()
+        local f = assert(io.popen(cmd))
+        output = f:read("*all")
+        f:close()
         widget = base.widget
         settings()
     end
 
-    newtimer(cmd, timeout, update)
-    return base.widget
+    newtimer(cmd, timeout, base.update)
+
+    return setmetatable(base, { __index = base.widget })
 end
 
-return setmetatable(base, { __call = function(_, ...) return worker(...) end })
+return setmetatable({}, { __call = function(_, ...) return worker(...) end })