gmail: reworked feed handling and changed username format
Nothing hard coded in the worker now. Feeds are together with user data, easily swaped. Feeds are not widget args because user needs to modify the file for login data anyway. No progress toward safer storage, Kwallet looks promising but dbus handling is hell - what of non KDE users? Every other script, including much praised checkgmail has plain text login. Nobody cares?
This commit is contained in:
parent
6c34e8532e
commit
24f23fa072
35
gmail.lua
35
gmail.lua
|
@ -17,21 +17,41 @@ local helpers = require("vicious.helpers")
|
|||
module("vicious.gmail")
|
||||
|
||||
|
||||
-- User data
|
||||
local user = "" -- Todo:
|
||||
local pass = "" -- * find a safer storage
|
||||
-- {{{ Variable definitions
|
||||
local rss = {
|
||||
inbox = {
|
||||
"https://mail.google.com/mail/feed/atom",
|
||||
"Gmail - Inbox for "
|
||||
},
|
||||
unread = {
|
||||
"https://mail.google.com/mail/feed/atom/unread",
|
||||
"Gmail - Label 'unread' for "
|
||||
},
|
||||
--labelname = {
|
||||
-- "https://mail.google.com/mail/feed/atom/labelname",
|
||||
-- "Gmail - Label 'labelname' for "
|
||||
--},
|
||||
}
|
||||
|
||||
-- Todo: safer storage, maybe hook into Kwallet
|
||||
local cfg = {
|
||||
user = "", -- user@gmail.com
|
||||
pass = "", -- users password
|
||||
feed = rss.unread -- default is all unread
|
||||
}
|
||||
-- }}}
|
||||
|
||||
|
||||
-- {{{ Gmail widget type
|
||||
local function worker(format, warg)
|
||||
local auth = user .. ":" .. pass
|
||||
local feed = "https://mail.google.com/mail/feed/atom/unread"
|
||||
local auth = cfg.user ..":".. cfg.pass
|
||||
local mail = {
|
||||
["{count}"] = 0,
|
||||
["{subject}"] = "N/A"
|
||||
}
|
||||
|
||||
-- Get info from the Gmail atom feed
|
||||
local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." "..feed)
|
||||
local f = io.popen("curl --connect-timeout 1 -m 3 -fsu "..auth.." "..cfg.feed[1])
|
||||
|
||||
-- Could be huge don't read it all at once, info we are after is at the top
|
||||
for line in f:lines() do
|
||||
|
@ -41,8 +61,7 @@ local function worker(format, warg)
|
|||
-- Find subject tags
|
||||
local title = string.match(line, "<title>(.*)</title>")
|
||||
-- If the subject changed then break out of the loop
|
||||
if title ~= nil and -- Todo: find a better way to deal with 1st title
|
||||
title ~= "Gmail - Label 'unread' for "..user.."@gmail.com" then
|
||||
if title ~= nil and title ~= cfg.feed[2] .. cfg.user then
|
||||
-- Check if we should scroll, or maybe truncate
|
||||
if warg then
|
||||
if type(warg) == "table" then
|
||||
|
|
2
mem.lua
2
mem.lua
|
@ -20,7 +20,7 @@ module("vicious.mem")
|
|||
local function worker(format)
|
||||
-- Get meminfo
|
||||
local f = io.open("/proc/meminfo")
|
||||
local mem = { buf = {}, swp = {}, }
|
||||
local mem = { buf = {}, swp = {} }
|
||||
|
||||
for line in f:lines() do
|
||||
if string.match(line, "^MemTotal.*") then
|
||||
|
|
|
@ -18,8 +18,7 @@ module("vicious.thermal")
|
|||
|
||||
-- {{{ Thermal widget type
|
||||
local function worker(format, warg)
|
||||
-- Known temperature data sources
|
||||
local zone = {
|
||||
local zone = { -- Known temperature data sources
|
||||
["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000},
|
||||
["core"] = {"/sys/devices/platform/", file = "temp1_input",div = 1000},
|
||||
["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"}
|
||||
|
|
Loading…
Reference in New Issue