X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/40798583795b58e496db607d9d23324b4a7ae09c..4c392a6d980af9c72052145c6a7a812c51e6ecee:/.config/awesome/lain/widget/watch.lua diff --git a/.config/awesome/lain/widget/watch.lua b/.config/awesome/lain/widget/watch.lua new file mode 100644 index 0000000..36118b8 --- /dev/null +++ b/.config/awesome/lain/widget/watch.lua @@ -0,0 +1,40 @@ + +--[[ + + Licensed under GNU General Public License v2 + * (c) 2014, Luke Bonham + +--]] + +local helpers = require("lain.helpers") +local textbox = require("wibox.widget.textbox") + +-- Template for asynchronous watcher widgets +-- lain.widget.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 + local stoppable = args.stoppable or false + local cmd = args.cmd + local settings = args.settings or function() widget:set_text(output) end + + function watch.update() + helpers.async(cmd, function(f) + output = f + if output ~= watch.prev then + widget = watch.widget + settings() + watch.prev = output + end + end) + end + + watch.timer = helpers.newtimer(cmd, timeout, watch.update, nostart, stoppable) + + return watch +end + +return factory