From 586c54a25750fd90d91c15ac8eb818b2613de582 Mon Sep 17 00:00:00 2001 From: copycat-killer Date: Wed, 8 Feb 2017 20:45:11 +0100 Subject: [PATCH] pull #307: worker -> factory --- widget/alsa.lua | 15 +++--- widget/alsabar.lua | 4 +- widget/bat.lua | 29 ++++++------ widget/calendar.lua | 4 +- widget/contrib/gpmdp.lua | 4 +- widget/contrib/init.lua | 4 +- widget/contrib/kbdlayout.lua | 90 ++++++++++++++++++------------------ widget/contrib/moc.lua | 4 +- widget/cpu.lua | 4 +- widget/fs.lua | 7 +-- widget/imap.lua | 19 ++++---- widget/init.lua | 4 +- widget/mem.lua | 4 +- widget/mpd.lua | 4 +- widget/net.lua | 15 +++--- widget/pulseaudio.lua | 17 ++++--- widget/pulsebar.lua | 4 +- widget/sysload.lua | 4 +- widget/temp.lua | 4 +- widget/watch.lua | 13 ++---- widget/weather.lua | 29 ++++++------ 21 files changed, 134 insertions(+), 148 deletions(-) diff --git a/widget/alsa.lua b/widget/alsa.lua index 9406e0d..36ccc71 100644 --- a/widget/alsa.lua +++ b/widget/alsa.lua @@ -7,17 +7,16 @@ --]] -local helpers = require("lain.helpers") -local shell = require("awful.util").shell -local wibox = require("wibox") -local string = { match = string.match, - format = string.format } -local setmetatable = setmetatable +local helpers = require("lain.helpers") +local shell = require("awful.util").shell +local wibox = require("wibox") +local string = { match = string.match, + format = string.format } -- ALSA volume -- lain.widget.alsa -local function worker(args) +local function factory(args) local alsa = { widget = wibox.widget.textbox() } local args = args or {} local timeout = args.timeout or 5 @@ -53,4 +52,4 @@ local function worker(args) return alsa end -return setmetatable({}, { __call = function(_, ...) return worker(...) end }) +return factory diff --git a/widget/alsabar.lua b/widget/alsabar.lua index 4386d20..ff14ed6 100644 --- a/widget/alsabar.lua +++ b/widget/alsabar.lua @@ -32,7 +32,7 @@ local alsabar = { _muted = false } -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 5 local settings = args.settings or function() end @@ -135,4 +135,4 @@ local function worker(args) return alsabar end -return setmetatable(alsabar, { __call = function(_, ...) return worker(...) end }) +return setmetatable(alsabar, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/bat.lua b/widget/bat.lua index 85d574e..9976517 100644 --- a/widget/bat.lua +++ b/widget/bat.lua @@ -7,24 +7,23 @@ --]] -local first_line = require("lain.helpers").first_line -local newtimer = require("lain.helpers").newtimer -local naughty = require("naughty") -local wibox = require("wibox") -local math = { abs = math.abs, - floor = math.floor, - log10 = math.log10, - min = math.min } -local string = { format = string.format } -local ipairs = ipairs -local type = type -local tonumber = tonumber -local setmetatable = setmetatable +local first_line = require("lain.helpers").first_line +local newtimer = require("lain.helpers").newtimer +local naughty = require("naughty") +local wibox = require("wibox") +local math = { abs = math.abs, + floor = math.floor, + log10 = math.log10, + min = math.min } +local string = { format = string.format } +local ipairs = ipairs +local type = type +local tonumber = tonumber -- Battery infos -- lain.widget.bat -local function worker(args) +local function factory(args) local bat = { widget = wibox.widget.textbox() } local args = args or {} local timeout = args.timeout or 30 @@ -179,4 +178,4 @@ local function worker(args) return bat end -return setmetatable({}, { __call = function(_, ...) return worker(...) end }) +return factory diff --git a/widget/calendar.lua b/widget/calendar.lua index eec14e7..d3e8d4b 100644 --- a/widget/calendar.lua +++ b/widget/calendar.lua @@ -98,7 +98,7 @@ function calendar.attach(widget) awful.button({ }, 5, function () calendar.show(0, 1) end))) end -local function worker(args) +local function factory(args) local args = args or {} calendar.cal = args.cal or "/usr/bin/cal" calendar.attach_to = args.attach_to or {} @@ -117,4 +117,4 @@ local function worker(args) for i, widget in ipairs(calendar.attach_to) do calendar.attach(widget) end end -return setmetatable(calendar, { __call = function(_, ...) return worker(...) end }) +return setmetatable(calendar, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/contrib/gpmdp.lua b/widget/contrib/gpmdp.lua index 94076c8..ed3aef2 100644 --- a/widget/contrib/gpmdp.lua +++ b/widget/contrib/gpmdp.lua @@ -21,7 +21,7 @@ local setmetatable = setmetatable -- lain.widget.contrib.gpmdp local gpmdp = {} -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 2 local notify = args.notify or "off" @@ -89,4 +89,4 @@ local function worker(args) return gpmdp end -return setmetatable(gpmdp, { __call = function(_, ...) return worker(...) end }) +return setmetatable(gpmdp, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/contrib/init.lua b/widget/contrib/init.lua index 9d1e703..d7f130e 100644 --- a/widget/contrib/init.lua +++ b/widget/contrib/init.lua @@ -14,6 +14,6 @@ local wrequire = require("lain.helpers").wrequire local setmetatable = setmetatable -local widgets = { _NAME = "lain.widget.contrib" } +local widget = { _NAME = "lain.widget.contrib" } -return setmetatable(widgets, { __index = wrequire }) +return setmetatable(widget, { __index = wrequire }) diff --git a/widget/contrib/kbdlayout.lua b/widget/contrib/kbdlayout.lua index 176f73a..e0fdbc0 100644 --- a/widget/contrib/kbdlayout.lua +++ b/widget/contrib/kbdlayout.lua @@ -16,52 +16,50 @@ local setmetatable = setmetatable -- Keyboard layout switcher -- lain.widget.contrib.kblayout -local kbdlayout = {} - -local function worker(args) - local args = args or {} - local layouts = args.layouts or {} - local settings = args.settings or function () end - local add_us_secondary = true - local timeout = args.timeout or 5 - local idx = 1 - - 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. - variant = variant - } - widget = kbdlayout.widget - settings() - end - - function kbdlayout.update() - helpers.async("setxkbmap -query", function(status) - kbd_run_settings(string.match(status, "layout:%s*([^\n]*)"), - string.match(status, "variant:%s*([^\n]*)")) - end) - end - - function kbdlayout.set(i) - if #layouts == 0 then return end - idx = ((i - 1) % #layouts) + 1 -- Make sure to wrap around as needed. - local to_execute = "setxkbmap " .. layouts[idx].layout - - if add_us_secondary and not string.match(layouts[idx].layout, ",?us,?") then - to_execute = to_execute .. ",us" - end - - if layouts[idx].variant then - to_execute = to_execute .. " " .. layouts[idx].variant - end - if execute(to_execute) then - kbd_run_settings(layouts[idx].layout, layouts[idx].variant) - end +local function factory(args) + local kbdlayout = { widget = wibox.widget.textbox() } + local args = args or {} + local layouts = args.layouts or {} + local settings = args.settings or function () end + local add_us_secondary = true + local timeout = args.timeout or 5 + local idx = 1 + + if args.add_us_secondary == false then add_us_secondary = false end + + local function kbd_run_settings(layout, variant) + kbdlayout_now = { + layout = string.match(layout, "[^,]+"), -- Make sure to match the primary layout only. + variant = variant + } + widget = kbdlayout.widget + settings() + end + + function kbdlayout.update() + helpers.async("setxkbmap -query", function(status) + kbd_run_settings(string.match(status, "layout:%s*([^\n]*)"), + string.match(status, "variant:%s*([^\n]*)")) + end) + end + + function kbdlayout.set(i) + if #layouts == 0 then return end + idx = ((i - 1) % #layouts) + 1 -- Make sure to wrap around as needed. + local to_execute = "setxkbmap " .. layouts[idx].layout + + if add_us_secondary and not string.match(layouts[idx].layout, ",?us,?") then + to_execute = to_execute .. ",us" + end + + if layouts[idx].variant then + to_execute = to_execute .. " " .. layouts[idx].variant + end + + if execute(to_execute) then + kbd_run_settings(layouts[idx].layout, layouts[idx].variant) + end end function kbdlayout.next() kbdlayout.set(idx + 1) end @@ -77,4 +75,4 @@ local function worker(args) return kbdlayout end -return setmetatable({}, { __call = function (_, ...) return worker(...) end }) +return factory diff --git a/widget/contrib/moc.lua b/widget/contrib/moc.lua index fda50fc..f841e31 100644 --- a/widget/contrib/moc.lua +++ b/widget/contrib/moc.lua @@ -21,7 +21,7 @@ local setmetatable = setmetatable -- lain.widget.contrib.moc local moc = {} -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 2 local music_dir = args.music_dir or os.getenv("HOME") .. "/Music" @@ -98,4 +98,4 @@ local function worker(args) return moc end -return setmetatable(moc, { __call = function(_, ...) return worker(...) end }) +return setmetatable(moc, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/cpu.lua b/widget/cpu.lua index 3e3b3a3..e8a6c9c 100644 --- a/widget/cpu.lua +++ b/widget/cpu.lua @@ -19,7 +19,7 @@ local setmetatable = setmetatable -- lain.widget.cpu local cpu = { core = {} } -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 2 local settings = args.settings or function() end @@ -79,4 +79,4 @@ local function worker(args) return cpu end -return setmetatable(cpu, { __call = function(_, ...) return worker(...) end }) +return setmetatable(cpu, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/fs.lua b/widget/fs.lua index 652fa8a..49345ca 100644 --- a/widget/fs.lua +++ b/widget/fs.lua @@ -7,15 +7,12 @@ --]] local helpers = require("lain.helpers") - local shell = require("awful.util").shell local focused = require("awful.screen").focused local wibox = require("wibox") local naughty = require("naughty") - local string = string local tonumber = tonumber - local setmetatable = setmetatable -- File system disk space usage @@ -45,7 +42,7 @@ function fs.show(seconds, scr) }) end -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 600 local partition = args.partition or "/" @@ -127,4 +124,4 @@ local function worker(args) return fs end -return setmetatable(fs, { __call = function(_, ...) return worker(...) end }) +return setmetatable(fs, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/imap.lua b/widget/imap.lua index 1049d03..0f7fde5 100644 --- a/widget/imap.lua +++ b/widget/imap.lua @@ -6,19 +6,18 @@ --]] -local helpers = require("lain.helpers") -local naughty = require("naughty") -local wibox = require("wibox") -local string = { format = string.format, - gsub = string.gsub } -local type = type -local tonumber = tonumber -local setmetatable = setmetatable +local helpers = require("lain.helpers") +local naughty = require("naughty") +local wibox = require("wibox") +local string = { format = string.format, + gsub = string.gsub } +local type = type +local tonumber = tonumber -- Mail IMAP check -- lain.widget.imap -local function worker(args) +local function factory(args) local imap = { widget = wibox.widget.textbox() } local args = args or {} local server = args.server @@ -84,4 +83,4 @@ local function worker(args) return imap end -return setmetatable({}, { __call = function(_, ...) return worker(...) end }) +return factory diff --git a/widget/init.lua b/widget/init.lua index 9619d79..f77f872 100644 --- a/widget/init.lua +++ b/widget/init.lua @@ -15,6 +15,6 @@ local wrequire = require("lain.helpers").wrequire local setmetatable = setmetatable -local widgets = { _NAME = "lain.widget" } +local widget = { _NAME = "lain.widget" } -return setmetatable(widgets, { __index = wrequire }) +return setmetatable(widget, { __index = wrequire }) diff --git a/widget/mem.lua b/widget/mem.lua index 74ebad0..cf0d314 100644 --- a/widget/mem.lua +++ b/widget/mem.lua @@ -18,7 +18,7 @@ local setmetatable = setmetatable -- lain.widget.mem local mem = {} -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 2 local settings = args.settings or function() end @@ -53,4 +53,4 @@ local function worker(args) return mem end -return setmetatable(mem, { __call = function(_, ...) return worker(...) end }) +return setmetatable(mem, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/mpd.lua b/widget/mpd.lua index b5281b0..88b9937 100644 --- a/widget/mpd.lua +++ b/widget/mpd.lua @@ -23,7 +23,7 @@ local setmetatable = setmetatable -- lain.widget.mpd local mpd = {} -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 2 local password = (args.password and #args.password > 0 and string.format("password %s\\n", args.password)) or "" @@ -134,4 +134,4 @@ local function worker(args) return mpd end -return setmetatable(mpd, { __call = function(_, ...) return worker(...) end }) +return setmetatable(mpd, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/net.lua b/widget/net.lua index c6ebaca..a4b8c34 100644 --- a/widget/net.lua +++ b/widget/net.lua @@ -7,17 +7,16 @@ --]] -local helpers = require("lain.helpers") -local naughty = require("naughty") -local wibox = require("wibox") -local string = { format = string.format, - match = string.match } -local setmetatable = setmetatable +local helpers = require("lain.helpers") +local naughty = require("naughty") +local wibox = require("wibox") +local string = { format = string.format, + match = string.match } -- Network infos -- lain.widget.net -local function worker(args) +local function factory(args) local net = { widget = wibox.widget.textbox() } net.last_t = 0 net.last_r = 0 @@ -120,4 +119,4 @@ local function worker(args) return net end -return setmetatable({}, { __call = function(_, ...) return worker(...) end }) +return factory diff --git a/widget/pulseaudio.lua b/widget/pulseaudio.lua index 44694d1..6c1344d 100644 --- a/widget/pulseaudio.lua +++ b/widget/pulseaudio.lua @@ -6,18 +6,17 @@ --]] -local helpers = require("lain.helpers") -local shell = require("awful.util").shell -local wibox = require("wibox") -local string = { gmatch = string.gmatch, - match = string.match, - format = string.format } -local setmetatable = setmetatable +local helpers = require("lain.helpers") +local shell = require("awful.util").shell +local wibox = require("wibox") +local string = { gmatch = string.gmatch, + match = string.match, + format = string.format } -- PulseAudio volume -- lain.widget.pulseaudio -local function worker(args) +local function factory(args) local pulseaudio = { widget = wibox.widget.textbox() } local args = args or {} local devicetype = args.devicetype or "sink" @@ -59,4 +58,4 @@ local function worker(args) return pulseaudio end -return setmetatable({}, { __call = function(_, ...) return worker(...) end }) +return factory diff --git a/widget/pulsebar.lua b/widget/pulsebar.lua index fede5ba..caaffdc 100644 --- a/widget/pulsebar.lua +++ b/widget/pulsebar.lua @@ -33,7 +33,7 @@ local pulsebar = { _muted = false } -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 5 local settings = args.settings or function() end @@ -145,4 +145,4 @@ local function worker(args) return pulsebar end -return setmetatable(pulsebar, { __call = function(_, ...) return worker(...) end }) +return setmetatable(pulsebar, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/sysload.lua b/widget/sysload.lua index ada349c..d7422d8 100644 --- a/widget/sysload.lua +++ b/widget/sysload.lua @@ -17,7 +17,7 @@ local setmetatable = setmetatable -- lain.widget.sysload local sysload = {} -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 2 local settings = args.settings or function() end @@ -40,4 +40,4 @@ local function worker(args) return sysload end -return setmetatable(sysload, { __call = function(_, ...) return worker(...) end }) +return setmetatable(sysload, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/temp.lua b/widget/temp.lua index b662346..8e3bc3c 100644 --- a/widget/temp.lua +++ b/widget/temp.lua @@ -16,7 +16,7 @@ local setmetatable = setmetatable -- lain.widget.temp local temp = {} -local function worker(args) +local function factory(args) local args = args or {} local timeout = args.timeout or 2 local tempfile = args.tempfile or "/sys/class/thermal/thermal_zone0/temp" @@ -42,4 +42,4 @@ local function worker(args) return temp end -return setmetatable(temp, { __call = function(_, ...) return worker(...) end }) +return setmetatable(temp, { __call = function(_, ...) return factory(...) end }) diff --git a/widget/watch.lua b/widget/watch.lua index 55226b9..36118b8 100644 --- a/widget/watch.lua +++ b/widget/watch.lua @@ -6,15 +6,14 @@ --]] -local helpers = require("lain.helpers") -local textbox = require("wibox.widget.textbox") -local setmetatable = setmetatable +local helpers = require("lain.helpers") +local textbox = require("wibox.widget.textbox") -- Template for asynchronous watcher widgets -- lain.widget.watch -local function worker(args) - local watch = {} +local function factory(args) + local watch = { widget = args.widget or textbox() } local args = args or {} local timeout = args.timeout or 5 local nostart = args.nostart or false @@ -22,8 +21,6 @@ local function worker(args) local cmd = args.cmd local settings = args.settings or function() widget:set_text(output) end - watch.widget = args.widget or textbox() - function watch.update() helpers.async(cmd, function(f) output = f @@ -40,4 +37,4 @@ local function worker(args) return watch end -return setmetatable({}, { __call = function(_, ...) return worker(...) end }) +return factory diff --git a/widget/weather.lua b/widget/weather.lua index 1b2e80f..1098146 100644 --- a/widget/weather.lua +++ b/widget/weather.lua @@ -6,25 +6,24 @@ --]] -local helpers = require("lain.helpers") -local json = require("lain.util").dkjson -local focused = require("awful.screen").focused -local naughty = require("naughty") -local wibox = require("wibox") -local math = { floor = math.floor } -local os = { time = os.time, - date = os.date, - difftime = os.difftime } -local string = { format = string.format, - gsub = string.gsub } -local tonumber = tonumber -local setmetatable = setmetatable +local helpers = require("lain.helpers") +local json = require("lain.util").dkjson +local focused = require("awful.screen").focused +local naughty = require("naughty") +local wibox = require("wibox") +local math = { floor = math.floor } +local os = { time = os.time, + date = os.date, + difftime = os.difftime } +local string = { format = string.format, + gsub = string.gsub } +local tonumber = tonumber -- OpenWeatherMap -- current weather and X-days forecast -- lain.widget.weather -local function worker(args) +local function factory(args) local weather = { widget = wibox.widget.textbox() } local args = args or {} local APPID = args.APPID or "3e321f9414eaedbfab34983bda77a66e" -- lain default @@ -171,4 +170,4 @@ local function worker(args) return weather end -return setmetatable({}, { __call = function(_, ...) return worker(...) end }) +return factory -- 2.39.5