So I've updated my Pidgin script fairly significantly. The goal here is to be able to be as keyboard-driven as possible. It's always bugged me how you need to find the pidgin window, scroll down to find the buddy you want, and double-click to start talking. So much excess motion. We can improve on this. I've discovered a nifty tool called dmenu that provides super-lightweight menus. (If you've used wmii or dwm you'll recognize it.) Basically you send it a list of options, and it provides you with an autocompleting choice of what has been piped in. It emits the one you chose as output, making it very convenient for inclusion in scripts.
I've tied this in with Pidgin using some ruby-dbus glue. When you want to talk to someone, you invoke the launch script and it will give you an autocompleting choice between all your buddies currently online. When you choose one, a conversation will be opened with them.
Invocation is handled by the pidgin-do.rb script. Bind a key to pidgin-do.rb launch for maximal convenience.
Added bonus: If you don't like keeping your buddy list visible at all times, you can use the list command to get a transient notification window with the currently online buddies: pidgin-do.rb list
The only issue is that when you launch a conversation and the window is not visible, it won't bring it front-and-center. Not sure why—this seems like it's obviously the more useful behaviour. A minor point that I intend to address soon. The ruby-dbus library is still needed, but you don't need to use the trunk version any more.
Grab it while it's hot.
Update: created a wiki entry.