I'm trying to write a couple NetworkManager Dispatcher calls to futz with a few things that don't yet have NM capabilities. However I'm running into a snag, particularly with pidgin. Pidgin has a purple-remote call that uses dbus. nm-dispatcher runs as root so I have to switch to my user to accomplish things (currently via su - <user> -c "command args"). Seems though that a 'su - <user>' from root doesn't add the DBUS_SESSION_BUS_ADDRESS env entry, and purple-remote can't find dbus or can't find pidgin on the bus.
How can I programmatically figure out what the dbus address is, or otherwise accomplish what I'm trying to do?