--------------------------------------------------- -- Licensed under the GNU General Public License v2 -- * (c) 2010, Adrian C. --------------------------------------------------- -- {{{ Grab environment local type = type local tonumber = tonumber local string = { match = string.match } local helpers = require("vicious.helpers") local spawn = require("vicious.spawn") -- }}} -- Gmail: provides count of new and subject of last e-mail on Gmail -- vicious.widgets.gmail local gmail_all = {} -- {{{ Gmail widget type local function parse(warg, stdout, stderr, exitreason, exitcode) local count = -- Count comes before messages and matches at least 0 tonumber(string.match(stdout, "([%d]+)")) or 0 -- Find subject tag local title = string.match(stdout, ".-(.-)") or "N/A" -- Check if we should scroll, or maybe truncate if type(warg) == "number" then title = helpers.truncate(title, warg) elseif type(warg) == "table" then title = helpers.scroll(title, warg[1], warg[2]) end return { ["{count}"] = count, ["{subject}"] = title } end function gmail_all.async(format, warg, callback) -- Get info from the Gmail atom feed using curl --netrc. -- With username 'user' and password 'pass' -- $HOME/.netrc should look similar to: -- machine mail.google.com login user password pass -- BE AWARE THAT MAKING THESE SETTINGS IS A SECURITY RISK! spawn.easy_async("curl -fsn https://mail.google.com/mail/feed/atom", function (...) callback(parse(warg, ...)) end) end -- }}} return helpers.setasyncall(gmail_all)