local timer = require("gears.timer")
local debug = require("debug")
local io = { lines = io.lines,
- open = io.open,
- popen = io.popen }
+ open = io.open }
local rawget = rawget
local table = { sort = table.sort }
-- {{{ Pipe operations
--- return the full output of an input command (synchronous pipe)
--- @param cmd the input command
--- @return command output (string)
-function helpers.read_pipe(cmd)
- local f = io.popen(cmd)
- local output = f:read("*all")
- f:close()
- return output
-end
-
-- run a command and execute a function on its output (asynchronous pipe)
-- @param cmd the input command
-- @param callback function to execute on cmd output
--]]
local helpers = require("lain.helpers")
-local wibox = require("wibox")
+local textbox = require("wibox.widget.textbox")
local setmetatable = setmetatable
--- Basic template for custom widgets (asynchronous version)
+-- Template for custom asynchronous widgets
-- lain.widgets.abase
local function worker(args)
- local abase = { widget = wibox.widget.textbox() }
+ local abase = {}
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
- local settings = args.settings or function() end
+ local settings = args.settings or function() widget:set_text(output) end
- abase.widget = wibox.widget.textbox()
+ abase.widget = args.widget or textbox()
function abase.update()
helpers.async(cmd, function(f)
+++ /dev/null
-
---[[
-
- Licensed under GNU General Public License v2
- * (c) 2014, Luke Bonham
-
---]]
-
-local helpers = require("lain.helpers")
-local wibox = require("wibox")
-local setmetatable = setmetatable
-
--- Basic template for custom widgets
--- lain.widgets.base
-
-local function worker(args)
- 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
- local settings = args.settings or function() end
-
- function base.update()
- output = helpers.read_pipe(cmd)
- if output ~= base.prev then
- widget = base.widget
- settings()
- base.prev = output
- end
- end
-
- base.timer = helpers.newtimer(cmd, timeout, base.update, nostart, stoppable)
-
- return base
-end
-
-return setmetatable({}, { __call = function(_, ...) return worker(...) end })
-Subproject commit eb6bd5b9ca0b333864322bcb585b53dc6b026199
+Subproject commit 33fae84ccc501b01b3a8e170eacc87a50364ea56