diff options
author | Adrian C. (anrxc) <anrxc@sysphere.org> | 2010-08-29 00:49:57 +0200 |
---|---|---|
committer | Adrian C. (anrxc) <anrxc@sysphere.org> | 2010-08-29 00:49:57 +0200 |
commit | 26b0395ba988948a7cc8b79d08faf6a57058886a (patch) | |
tree | ae475623e8b249aa8b8d29b57878737f09c165f5 /contrib/mpc.lua | |
parent | 0d6333ed61a305c8a18fd4eb42ad33a353627bc9 (diff) | |
download | vicious-legacy-26b0395ba988948a7cc8b79d08faf6a57058886a.tar.xz |
contrib: imported contrib widgets
Diffstat (limited to 'contrib/mpc.lua')
-rw-r--r-- | contrib/mpc.lua | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/contrib/mpc.lua b/contrib/mpc.lua new file mode 100644 index 0000000..8f1f0a9 --- /dev/null +++ b/contrib/mpc.lua @@ -0,0 +1,47 @@ +--------------------------------------------------- +-- Licensed under the GNU General Public License v2 +-- * (c) 2010, Adrian C. <anrxc@sysphere.org> +-- * (c) 2009, Lucas de Vries <lucas@glacicle.com> +--------------------------------------------------- + +-- {{{ Grab environment +local type = type +local io = { popen = io.popen } +local setmetatable = setmetatable +local string = { find = string.find } +local helpers = require("vicious.helpers") +-- }}} + + +-- Mpc: provides the currently playing song in MPD +module("vicious.contrib.mpc") + + +-- {{{ MPC widget type +local function worker(format, warg) + -- Get data from mpd + local f = io.popen("mpc") + local np = f:read("*line") + f:close() + + -- Not installed, + if np == nil or -- off or stoppped. + (string.find(np, "MPD_HOST") or string.find(np, "volume:")) + then + return {"Stopped"} + end + + -- Check if we should scroll, or maybe truncate + if warg then + if type(warg) == "table" then + np = helpers.scroll(np, warg[1], warg[2]) + else + np = helpers.truncate(np, warg) + end + end + + return {helpers.escape(np)} +end +-- }}} + +setmetatable(_M, { __call = function(_, ...) return worker(...) end }) |