Listing 2. pidgin_rhythmbox.rb #!/usr/bin/env ruby require 'dbus' bus = DBus::SessionBus.instance rhythmbox = bus.service("org.gnome.Rhythmbox") player = rhythmbox.object("/org/gnome/Rhythmbox/Player") player.introspect player.default_iface = "org.gnome.Rhythmbox.Player" pidgin = bus.service("im.pidgin.purple.PurpleService") purple = pidgin.object("/im/pidgin/purple/PurpleObject") purple.introspect purple.default_iface = "im.pidgin.purple.PurpleInterface" player.on_signal("playingUriChanged") do |uri| status = purple.PurpleSavedstatusFind("rhythmbox").first if status == 0 status = purple.PurpleSavedstatusNew("rhythmbox", 2).first end purple.PurpleSavedstatusSetMessage(status, uri.to_s) purple.PurpleSavedstatusActivate(status) end