#!/usr/bin/python
import os
import dbus, gobject, dbus.glib
import dbus.decorators
import gtk
import mx610
sysbus = dbus.SystemBus()
sesbus = dbus.SessionBus()
notify_obj = sesbus.get_object('org.freedesktop.Notifications',
'/org/freedesktop/Notifications')
notifications = dbus.Interface(notify_obj,
'org.freedesktop.Notifications')
icon = gtk.StatusIcon()
icon.set_visible(False)
icon.set_from_icon_name('evolution')
icon.set_tooltip('New mail arrived!')
watch_boxes = [
"INBOX",
"INBOX/big",
"ethz/qo",
"lists/debian/devel/announce"
]
def safe_mx610_state(*a, **k):
try:
mo = mx610.mx610("/dev/hiddev0")
mo.state(*a, **k)
except:
pass
def newmail_received(box_path, box_name):
#os.system('play /usr/share/sounds/gaim/receive.wav >/dev/null 2>&1 &')
if box_name in watch_boxes:
gobject.idle_add(icon.set_visible, True)
notifications.Notify('dbus-hooks', 0, '', 'New Mail!',
"New mail in " + box_name, [], {}, -1)
safe_mx610_state(s0="on")
def newmail_read(*args, **keywords):
gobject.idle_add(icon.set_visible, False)
safe_mx610_state(s0="off")
sesbus.add_signal_receiver(newmail_received, signal_name='Newmail',
dbus_interface='org.gnome.evolution.mail.dbus.Signal',
path='/org/gnome/evolution/mail/newmail')
sesbus.add_signal_receiver(newmail_read, signal_name='MessageReading',
dbus_interface='org.gnome.evolution.mail.dbus.Signal',
path='/org/gnome/evolution/mail/newmail')
def gaim_gotmsg(a, fr, body, b, c):
# print fr, body
safe_mx610_state(s1="pulse")
def gaim_viewedmsg(a, fr, body, b, c):
# print fr, body
safe_mx610_state(s1="off")
sesbus.add_signal_receiver(gaim_gotmsg, signal_name='ReceivingImMsg',
dbus_interface='net.sf.gaim.GaimInterface',
path='/net/sf/gaim/GaimObject')
sesbus.add_signal_receiver(gaim_viewedmsg, signal_name='DisplayedImMsg',
dbus_interface='net.sf.gaim.GaimInterface',
path='/net/sf/gaim/GaimObject')
mainloop = gobject.MainLoop()
mainloop.run()