Notification basique pour Maildir
Je collecte mes courriels avec offlineimap et les lis avec mu/mu4e. L'ensemble fonctionne bien et rapidement, mais il me manquait les notifications de nouveau courriel. Voila une solution basique mais efficace.
#!/usr/bin/env python
import os
import dbus
from email.parser import Parser
from pyinotify import WatchManager, Notifier
from pyinotify import ProcessEvent, EventsCodes
INBOX = os.path.join(os.getenv('HOME'), 'Maildir', 'INBOX', 'new')
def notify(summary, body='', app_name='', app_icon='',
timeout=5000, actions=[], hints=[], replaces_id=0):
bus_name = 'org.freedesktop.Notifications'
dbus.Interface(dbus.SessionBus().get_object(
bus_name, '/org/freedesktop/Notifications'),
bus_name).Notify(
app_name, replaces_id, app_icon,
summary, body, actions, hints, timeout)
class PTmp(ProcessEvent):
def process_default(self, event):
email = Parser().parse(open(event.pathname))
notify("Nouveau courriel de '%s'" % email.get('From'),
email.get('Subject'))
if __name__ == "__main__":
wm = WatchManager()
FLAGS = EventsCodes.ALL_FLAGS
mask = FLAGS['IN_MOVED_TO']
notifier = Notifier(wm, PTmp())
wm.add_watch(INBOX, mask, rec=True, auto_add=True)
notifier.loop()