Skip to content

Instantly share code, notes, and snippets.

@randomekek
Created November 23, 2011 05:28
Show Gist options
  • Save randomekek/1387945 to your computer and use it in GitHub Desktop.
Save randomekek/1387945 to your computer and use it in GitHub Desktop.
Log gnome screen saver and also pause banshee
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()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment