import dbus import time import gobject import datetime import dbus.mainloop.glib as glib class Main(): def __init__(self): dbus_loop = glib.DBusGMainLoop(set_as_default=True) bus = dbus.SessionBus(mainloop = dbus_loop) screensaver = bus.get_object('org.gnome.ScreenSaver', '/org/gnome/ScreenSaver') screensaver.connect_to_signal('ActiveChanged', self.screensaverStatusChanged) self.bus = bus self.audioPlaying = False self.lastEvent = datetime.datetime.today() self.log('%s boot\n' % time.asctime()) gobject.MainLoop().run() def screensaverStatusChanged(self, active): now = datetime.datetime.today() delta = now - self.lastEvent self.lastEvent = now # log events self.log('%s %s %s\n' % (time.asctime(), 'lock ' if active else 'unlock', delta)) # turn off/on music banshee = self.bus.get_object("org.bansheeproject.Banshee", "/org/bansheeproject/Banshee/PlayerEngine") if active: self.audioPlaying = banshee.GetCurrentState() == 'playing' banshee.Pause() else: if self.audioPlaying: banshee.Play() def log(self, msg): pass if __name__ == "__main__": Main()