#!/usr/bin/python # Copyright 2007 Dan Smith import dbus import gobject import dbus.mainloop.glib import locations import sys def change_status(id, caption): global pidgin status = pidgin.PurpleSavedstatusNew("", 2) pidgin.PurpleSavedstatusSetMessage(status, caption) pidgin.PurpleSavedstatusActivate(status) def dev_changed(*args, **kwargs): if not kwargs["member"] == "DeviceNowActive": return loc = locations.LocationService(sys.argv[1]).current_location() change_status(loc.name, loc.caption) def monitor_nm(): dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(dev_changed, interface_keyword="dbus_interface", member_keyword="member") loop = gobject.MainLoop() loop.run() def connect_to_pidgin(): global pidgin bus = dbus.SessionBus() obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject") pidgin = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface") if len(sys.argv) < 2: print "Usage: %s " % sys.argv[0] sys.exit(1) connect_to_pidgin() monitor_nm()