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")
|
module("vicious.gmail")
|
||||||
|
|
||||||
|
|
||||||
-- User data
|
-- {{{ Variable definitions
|
||||||
local user = "" -- Todo:
|
local rss = {
|
||||||
local pass = "" -- * find a safer storage
|
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
|
-- {{{ Gmail widget type
|
||||||
local function worker(format, warg)
|
local function worker(format, warg)
|
||||||
local auth = user .. ":" .. pass
|
local auth = cfg.user ..":".. cfg.pass
|
||||||
local feed = "https://mail.google.com/mail/feed/atom/unread"
|
|
||||||
local mail = {
|
local mail = {
|
||||||
["{count}"] = 0,
|
["{count}"] = 0,
|
||||||
["{subject}"] = "N/A"
|
["{subject}"] = "N/A"
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Get info from the Gmail atom feed
|
-- 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
|
-- Could be huge don't read it all at once, info we are after is at the top
|
||||||
for line in f:lines() do
|
for line in f:lines() do
|
||||||
|
@ -41,8 +61,7 @@ local function worker(format, warg)
|
||||||
-- Find subject tags
|
-- Find subject tags
|
||||||
local title = string.match(line, "<title>(.*)</title>")
|
local title = string.match(line, "<title>(.*)</title>")
|
||||||
-- If the subject changed then break out of the loop
|
-- If the subject changed then break out of the loop
|
||||||
if title ~= nil and -- Todo: find a better way to deal with 1st title
|
if title ~= nil and title ~= cfg.feed[2] .. cfg.user then
|
||||||
title ~= "Gmail - Label 'unread' for "..user.."@gmail.com" then
|
|
||||||
-- Check if we should scroll, or maybe truncate
|
-- Check if we should scroll, or maybe truncate
|
||||||
if warg then
|
if warg then
|
||||||
if type(warg) == "table" then
|
if type(warg) == "table" then
|
||||||
|
|
2
mem.lua
2
mem.lua
|
@ -20,7 +20,7 @@ module("vicious.mem")
|
||||||
local function worker(format)
|
local function worker(format)
|
||||||
-- Get meminfo
|
-- Get meminfo
|
||||||
local f = io.open("/proc/meminfo")
|
local f = io.open("/proc/meminfo")
|
||||||
local mem = { buf = {}, swp = {}, }
|
local mem = { buf = {}, swp = {} }
|
||||||
|
|
||||||
for line in f:lines() do
|
for line in f:lines() do
|
||||||
if string.match(line, "^MemTotal.*") then
|
if string.match(line, "^MemTotal.*") then
|
||||||
|
|
|
@ -18,8 +18,7 @@ module("vicious.thermal")
|
||||||
|
|
||||||
-- {{{ Thermal widget type
|
-- {{{ Thermal widget type
|
||||||
local function worker(format, warg)
|
local function worker(format, warg)
|
||||||
-- Known temperature data sources
|
local zone = { -- Known temperature data sources
|
||||||
local zone = {
|
|
||||||
["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000},
|
["sys"] = {"/sys/class/thermal/", file = "temp", div = 1000},
|
||||||
["core"] = {"/sys/devices/platform/", file = "temp1_input",div = 1000},
|
["core"] = {"/sys/devices/platform/", file = "temp1_input",div = 1000},
|
||||||
["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"}
|
["proc"] = {"/proc/acpi/thermal_zone/",file = "temperature"}
|
||||||
|
|
Loading…
Reference in New Issue