madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

#293: eradicate proxy widget
authorcopycat-killer <dada@archlinux.info>
Thu, 26 Jan 2017 19:53:55 +0000 (20:53 +0100)
committercopycat-killer <dada@archlinux.info>
Thu, 26 Jan 2017 19:53:55 +0000 (20:53 +0100)
22 files changed:
helpers.lua
widgets/abase.lua
widgets/alsa.lua
widgets/base.lua
widgets/bat.lua
widgets/calendar.lua
widgets/contrib/gpmdp.lua
widgets/contrib/kbdlayout.lua
widgets/contrib/moc.lua
widgets/contrib/tpbat/init.lua
widgets/cpu.lua
widgets/fs.lua
widgets/imap.lua
widgets/maildir.lua
widgets/mem.lua
widgets/mpd.lua
widgets/net.lua
widgets/pulseaudio.lua
widgets/sysload.lua
widgets/temp.lua
widgets/weather.lua
wiki

index 0305722bf99fb0cd170c25ff58873c74fb9b3108..f32c4ad57bee9d28e9bf434344d151ab0f0c2cf0 100644 (file)
@@ -7,6 +7,8 @@
 --]]
 
 
+local easy_async = require("awful.spawn").easy_async
+local timer      = require("gears.timer")
 local debug      = require("debug")
 local io         = { lines = io.lines,
                      open  = io.open,
@@ -14,10 +16,6 @@ local io         = { lines = io.lines,
 local rawget     = rawget
 local table      = { sort  = table.sort }
 
-local easy_async = require("awful.spawn").easy_async
-local timer      = require("gears.timer")
-local wibox      = require("wibox")
-
 -- Lain helper functions for internal use
 -- lain.helpers
 local helpers = {}
@@ -177,12 +175,6 @@ function helpers.spairs(t)
     end
 end
 
--- create a lain textbox
-function helpers.make_widget_textbox()
-    local w = { widget = wibox.widget.textbox() }
-    return setmetatable(w, { __index = w.widget })
-end
-
 -- }}}
 
 return helpers
index 1214151ec3c479664a3b960eb3f904119f89c205..409495bf0bef528d8788109d1d88e310b683cdbb 100644 (file)
@@ -14,14 +14,16 @@ local setmetatable = setmetatable
 -- lain.widgets.abase
 
 local function worker(args)
-    local abase     = helpers.make_widget_textbox()
+    local abase     = { widget = wibox.widget.textbox() }
     local args      = args or {}
     local timeout   = args.timeout or 5
     local nostart   = args.nostart or false
     local stoppable = args.stoppable or false
-    local cmd       = args.cmd or ""
+    local cmd       = args.cmd
     local settings  = args.settings or function() end
 
+    abase.widget = wibox.widget.textbox()
+
     function abase.update()
         helpers.async(cmd, function(f)
             output = f
index 8139d42eeab002b277fab3db112bf4e90a7bb492..f73194b2a6c9b23dfc35394ed48864fd856e3dad 100644 (file)
@@ -16,9 +16,9 @@ local setmetatable = setmetatable
 
 -- ALSA volume
 -- lain.widgets.alsa
-local alsa = helpers.make_widget_textbox()
 
 local function worker(args)
+    local alsa     = { widget = wibox.widget.textbox() }
     local args     = args or {}
     local timeout  = args.timeout or 5
     local settings = args.settings or function() end
@@ -53,4 +53,4 @@ local function worker(args)
     return alsa
 end
 
-return setmetatable(alsa, { __call = function(_, ...) return worker(...) end })
+return setmetatable({}, { __call = function(_, ...) return worker(...) end })
index 9d7b71097326fba0aaa99218bb54350b4c74c0a4..2a8f507692f1c7daed7668037c31ed7e80e28b84 100644 (file)
@@ -14,12 +14,12 @@ local setmetatable = setmetatable
 -- lain.widgets.base
 
 local function worker(args)
-    local base      = helpers.make_widget_textbox()
+    local base      = { widget = wibox.widget.textbox() }
     local args      = args or {}
     local timeout   = args.timeout or 5
     local nostart   = args.nostart or false
     local stoppable = args.stoppable or false
-    local cmd       = args.cmd or ""
+    local cmd       = args.cmd
     local settings  = args.settings or function() end
 
     function base.update()
index 503c56ea5d5c857ddb103f2efc18e9fdc59af161..e479fd9b3413a1a38f6fe5d629cfbd2622a58c88 100644 (file)
@@ -8,7 +8,6 @@
 --]]
 
 local first_line   = require("lain.helpers").first_line
-local make_widget  = require("lain.helpers").make_widget_textbox
 local newtimer     = require("lain.helpers").newtimer
 local naughty      = require("naughty")
 local wibox        = require("wibox")
@@ -26,7 +25,7 @@ local setmetatable = setmetatable
 -- lain.widgets.bat
 
 local function worker(args)
-    local bat       = make_widget()
+    local bat       = { widget = wibox.widget.textbox() }
     local args      = args or {}
     local timeout   = args.timeout or 30
     local batteries = args.batteries or (args.battery and {args.battery}) or {"BAT0"}
@@ -176,7 +175,7 @@ local function worker(args)
     end
 
     newtimer("batteries", timeout, bat.update)
-    
+
     return bat
 end
 
index 892d95495818cc030012262f70f8244da93efd45..032b1fb8c8105d1cbd5a34db103ab1c0f5ca7a89 100644 (file)
@@ -24,6 +24,8 @@ function calendar.hide()
 end
 
 function calendar.show(t_out, inc_offset, scr)
+    calendar.hide()
+
     local today = os.date("%d")
     local offs = inc_offset or 0
     local f
index 37da43d06ad5e32c74f58917299c68cdc8b8be7f..94076c85b6f9e72721f2380a5012f697c0a3afa5 100644 (file)
@@ -19,7 +19,7 @@ local setmetatable = setmetatable
 
 -- Google Play Music Desktop infos
 -- lain.widget.contrib.gpmdp
-local gpmdp = helpers.make_widget_textbox()
+local gpmdp = {}
 
 local function worker(args)
     local args          = args or {}
@@ -30,6 +30,8 @@ local function worker(args)
                           os.getenv("HOME") .. "/.config/Google Play Music Desktop Player/json_store/playback.json"
     local settings      = args.settings or function() end
 
+    gpmdp.widget = wibox.widget.textbox()
+
     gpmdp_notification_preset = {
         title   = "Now playing",
         timeout = 6
index 8132c776b31c8e486914b9cc0093b1ae4bc4c839..08e7bd06a3002f013712a42af88c5e99efa74b2d 100644 (file)
@@ -16,7 +16,7 @@ local setmetatable = setmetatable
 
 -- Keyboard layout switcher
 -- lain.widgets.contrib.kblayout
-local kbdlayout = helpers.make_widget_textbox()
+local kbdlayout = {}
 
 local function worker(args)
    local args             = args or {}
@@ -28,6 +28,8 @@ local function worker(args)
 
    if args.add_us_secondary == false then add_us_secondary = false end
 
+   kbdlayout.widget = wibox.widget.textbox()
+
    local function kbd_run_settings(layout, variant)
       kbdlayout_now = {
           layout  = string.match(layout, "[^,]+"), -- Make sure to match the primary layout only.
index 3566985ac6e06d4e88114c348c8cce5f4718c916..6fe96a15d994ec3368c909cb0a76171885af2385 100644 (file)
@@ -19,7 +19,7 @@ local setmetatable = setmetatable
 
 -- MOC audio player
 -- lain.widgets.contrib.moc
-local moc = helpers.make_widget_textbox()
+local moc = {}
 
 local function worker(args)
     local args          = args or {}
@@ -31,6 +31,8 @@ local function worker(args)
     local followtag     = args.followtag or false
     local settings      = args.settings or function() end
 
+    moc.widget = wibox.widget.textbox()
+
     moc_notification_preset = { title = "Now playing", timeout = 6 }
 
     helpers.set_map("current moc track", nil)
index 32a25275917665e9d06301d5837fbb090f1c181e..e65cde82f3fac20d52a7cde12dd9eb6e0a901952 100644 (file)
@@ -28,7 +28,7 @@ local smapi        = require("smapi")
 
 -- ThinkPad SMAPI-enabled battery info widget
 -- lain.widgets.contrib.tpbat
-local tpbat = { }
+local tpbat = {}
 
 function tpbat.hide()
     if not tpbat.notification then return end
@@ -39,7 +39,7 @@ end
 function tpbat.show(t_out)
     tpbat.hide()
 
-    local bat   = tpbat.bat
+    local bat = tpbat.bat
 
     if bat == nil or not bat:installed() then return end
 
index f61e2ccf794ae7974abb5fdbf38d8f7f0b5bff5e..79f99afa956e6dd2059d96e5eea7f245e44c2e6f 100644 (file)
@@ -17,14 +17,14 @@ local setmetatable = setmetatable
 
 -- CPU usage
 -- lain.widgets.cpu
-local cpu = helpers.make_widget_textbox()
+local cpu = { core = {} }
 
 local function worker(args)
     local args     = args or {}
     local timeout  = args.timeout or 2
     local settings = args.settings or function() end
 
-    cpu.core = {}
+    cpu.widget = wibox.widget.textbox()
 
     function update()
         -- Read the amount of time the CPUs have spent performing
@@ -67,9 +67,9 @@ local function worker(args)
             end
         end
 
-        widget = cpu.widget
         cpu_now = cpu.core
         cpu_now.usage = cpu_now[0].usage
+        widget = cpu.widget
 
         settings()
     end
index efd31fb3f19a2f57d8943921f240d58c711c2fb7..c78b6cbbf18028d458660cb3c7588258d594acff 100644 (file)
@@ -20,10 +20,7 @@ local setmetatable = setmetatable
 
 -- File system disk space usage
 -- lain.widgets.fs
-local fs = helpers.make_widget_textbox()
-
--- Unit definitions
-fs.unit = { ["mb"] = 1024, ["gb"] = 1024^2 }
+local fs = { unit  = { ["mb"] = 1024, ["gb"] = 1024^2 } }
 
 function fs.hide()
     if not fs.notification then return end
@@ -68,6 +65,8 @@ local function worker(args)
         }
     end
 
+    fs.widget = wibox.widget.textbox()
+
     helpers.set_map(partition, false)
 
     function fs.update()
@@ -125,7 +124,7 @@ local function worker(args)
 
     helpers.newtimer(partition, timeout, fs.update)
 
-    return setmetatable(fs, { __index = fs.widget })
+    return fs
 end
 
 return setmetatable(fs, { __call = function(_, ...) return worker(...) end })
index 770a1bc8b3d6f07a30b33794dce761a4a156ffff..95d35fd0401617348b2ceb2b0a18e7e5516bcaa9 100644 (file)
@@ -19,7 +19,7 @@ local setmetatable = setmetatable
 -- lain.widgets.imap
 
 local function worker(args)
-    local imap      = helpers.make_widget_textbox()
+    local imap      = { widget = wibox.widget.textbox() }
     local args      = args or {}
     local server    = args.server
     local mail      = args.mail
index 7e7b246f3c495cf597615f3ab843290aa7558174..f7dfd289dc6755e94b996d5a4ddb5a5dbb5be83e 100644 (file)
@@ -18,7 +18,7 @@ local setmetatable = setmetatable
 
 -- Maildir check (synchronous)
 -- lain.widgets.maildir
-local maildir = helpers.make_widget_textbox()
+local maildir = {}
 
 local function worker(args)
     local args         = args or {}
@@ -28,6 +28,8 @@ local function worker(args)
     local settings     = args.settings or function() end
     local cmd          = args.cmd
 
+    maildir.widget = wibox.widget.textbox()
+
     function maildir.update()
         if cmd then helpers.async({ awful.util.shell, "-c", cmd }, function() end) end
 
index ff5816c660a2f01b1f51672fcb60a73be363ad8a..2b414ef1bb31156b80749ce05eb5283ba2ef16d6 100644 (file)
@@ -16,13 +16,15 @@ local setmetatable = setmetatable
 
 -- Memory usage (ignoring caches)
 -- lain.widgets.mem
-local mem = helpers.make_widget_textbox()
+local mem = {}
 
 local function worker(args)
     local args     = args or {}
     local timeout  = args.timeout or 2
     local settings = args.settings or function() end
 
+    mem.widget = wibox.widget.textbox()
+
     function update()
         mem_now = {}
         for line in lines("/proc/meminfo") do
index d92c78f564f472cde55586c4818fd99698540e48..c4c4691850c061f6e9684ea0ba279c5b85dd733b 100644 (file)
@@ -21,7 +21,7 @@ local setmetatable = setmetatable
 
 -- MPD infos
 -- lain.widgets.mpd
-local mpd = helpers.make_widget_textbox()
+local mpd = {}
 
 local function worker(args)
     local args          = args or {}
@@ -41,6 +41,8 @@ local function worker(args)
     local echo = string.format("printf \"%sstatus\\ncurrentsong\\nclose\\n\"", password)
     local cmd  = string.format("%s | curl --connect-timeout 1 -fsm 3 %s", echo, mpdh)
 
+    mpd.widget = wibox.widget.textbox()
+
     mpd_notification_preset = { title = "Now playing", timeout = 6 }
 
     helpers.set_map("current mpd track", nil)
index 302559ab32bbfc729e776e32a2d6ff812425c252..1dfef43afbbd6e4f84e969dcef9aadd04f28c3d9 100644 (file)
@@ -18,7 +18,7 @@ local setmetatable = setmetatable
 -- lain.widgets.net
 
 local function worker(args)
-    local net = helpers.make_widget_textbox()
+    local net = { widget = wibox.widget.textbox() }
     net.last_t = 0
     net.last_r = 0
     net.devices = {}
index 8e89ffd6855dffce7a4bb8f17103046dae6ac52b..68d3066f1009b813f992ae7e74d3f73de7d955a5 100644 (file)
@@ -16,7 +16,7 @@ local setmetatable = setmetatable
 
 -- PulseAudio volume
 -- lain.widgets.pulseaudio
-local pulseaudio = helpers.make_widget_textbox()
+local pulseaudio = {}
 
 local function worker(args)
    local args        = args or {}
@@ -26,6 +26,8 @@ local function worker(args)
 
    pulseaudio.cmd    = args.cmd or "pacmd list-sinks | sed -n -e '0,/*/d' -e '/base volume/d' -e '/volume:/p' -e '/muted:/p' -e '/device\\.string/p'"
 
+   pulseaudio.widget = wibox.widget.textbox()
+
    function pulseaudio.update()
       if scallback then pulseaudio.cmd = scallback() end
 
index 148319dd22c5f84b71a6ac58d4e0f65c04bc7bc8..49f640ce85e6242eeff3ad335ede38de8b417b06 100644 (file)
@@ -15,13 +15,15 @@ local setmetatable = setmetatable
 
 -- System load
 -- lain.widgets.sysload
-local sysload = helpers.make_widget_textbox()
+local sysload = {}
 
 local function worker(args)
     local args     = args or {}
     local timeout  = args.timeout or 2
     local settings = args.settings or function() end
 
+    sysload.widget = wibox.widget.textbox()
+
     function update()
         local f = io.open("/proc/loadavg")
         local ret = f:read("*all")
index 4d8a7271dbfd5719027a15664260ff6c359615be..9f41fdbbc7522e1590f9bb82a56194db2fa0a76e 100644 (file)
@@ -14,7 +14,7 @@ local setmetatable = setmetatable
 
 -- coretemp
 -- lain.widgets.temp
-local temp = helpers.make_widget_textbox()
+local temp = {}
 
 local function worker(args)
     local args     = args or {}
@@ -22,6 +22,8 @@ local function worker(args)
     local tempfile = args.tempfile or "/sys/class/thermal/thermal_zone0/temp"
     local settings = args.settings or function() end
 
+    temp.widget = wibox.widget.textbox()
+
     function update()
         local f = io.open(tempfile)
         if f then
index 9f83dc8870d8eb249ae124423625c6c75ffd398a..febd73b37b8ac0caa37e48bbcff1e082414fa0f0 100644 (file)
@@ -25,7 +25,7 @@ local setmetatable = setmetatable
 -- lain.widgets.weather
 
 local function worker(args)
-    local weather               = helpers.make_widget_textbox()
+    local weather               = { widget = wibox.widget.textbox() }
     local args                  = args or {}
     local APPID                 = args.APPID or "3e321f9414eaedbfab34983bda77a66e" -- lain default
     local timeout               = args.timeout or 900   -- 15 min
diff --git a/wiki b/wiki
index 0af22b80f8dda896a0c8fefd5c7e52413294967d..ed824beb75262f9f78e49baa6e1a591220ca5249 160000 (submodule)
--- a/wiki
+++ b/wiki
@@ -1 +1 @@
-Subproject commit 0af22b80f8dda896a0c8fefd5c7e52413294967d
+Subproject commit ed824beb75262f9f78e49baa6e1a591220ca5249