Gmail Widget

From awesome
Jump to: navigation, search
This widget is written for awesome 2.

The following script will check an atom feed for your gmail account and output a command that can be piped to awesome-client to set the contents of a text box. For example, if you have 1 unread message, the script will output. The first argument to the script will be taken as the name of the widget you want the text to appear in.

Requires:

  • awesome-git
  • python
  • python-feedparser

Usage (the second line will be piped to awesome-client):

# checkgmail.py mywidgetname
0 widget_tell mywidgetname 1

Python script:

#!/usr/bin/env python

import urllib
import feedparser
import sys

_url = "https://mail.google.com/gmail/feed/atom"

_pwd = "password"
_username = "username"
_widgetName = "emailbox"

class GmailRSSOpener(urllib.FancyURLopener):
	def prompt_user_passwd(self, host, realm):
		return (_username, _pwd)


def auth():
	opener = GmailRSSOpener()
	f = opener.open(_url)
	feed = f.read()
	return feed

def getUnreadMsgCount(feed):
    atom = feedparser.parse(feed)
    newmails = len(atom.entries)
    return newmails

if __name__ == "__main__":
    if len(sys.argv) > 1:
        _widgetName = sys.argv[1]
    feed = auth()
    print "0 widget_tell %s %d" % (_widgetName, getUnreadMsgCount(feed))

In order to use this script to check your email regularly, you need a shell script like the following:

#!/bin/bash
# sleep for 5 seconds before beginning in case awesome needs more time to set up
sleep 5
while true; do
    echo `checkgmail.py mywidget`
    sleep 120
done | awesome-client

It might be useful, if you set a longer interval between checking messages, to set up your widget so that right clicking it immediately checks for new messages. And you can set left click to open gmail in your browser.

#In .awesomerc statusbar section
textbox emailbox {
    text = "N/A"
    mouse {
       button = "1"
       command = "spawn"
       arg = "firefox www.gmail.com"
    }
    mouse {
       button = "3"
       command = "spawn"
       arg = "echo `checkgmail.py emailbox` | awesome-client"
    }
}
Personal tools