Source code for libqtile.widget.gmail_checker

from . import base
import imaplib
import re
import logging


logger = logging.getLogger('qtile')


[docs]class GmailChecker(base.ThreadedPollText): """ A simple gmail checker. """ defaults = [ ("update_interval", 30, "Update time in seconds."), ("username", None, "username"), ("password", None, "password"), ("email_path", "INBOX", "email_path"), ("fmt", "inbox[%s],unseen[%s]", "fmt"), ("status_only_unseen", False, "Only show unseen messages"), ] def __init__(self, settings=None, **config): if settings is not None: base.deprecated("parameter settings is deprecated") config.updateAll(settings) base._TextBox.__init__(self, **config) self.add_defaults(GmailChecker.defaults) def poll(self): self.gmail = imaplib.IMAP4_SSL('imap.gmail.com') self.gmail.login(self.username, self.password) answer, raw_data = self.gmail.status(self.email_path, '(MESSAGES UNSEEN)') if answer == "OK": dec = raw_data[0].decode() messages = int(re.search('MESSAGES\s+(\d+)', dec).group(1)) unseen = int(re.search('UNSEEN\s+(\d+)', dec).group(1)) if(self.status_only_unseen): return self.fmt % unseen else: return self.fmt % (messages, unseen) else: logger.exception( 'GmailChecker UNKNOWN error, answer: %s, raw_data: %s' % (str(answer), str(raw_data))) return "UNKNOWN ERROR"