A resposta de SirCharlo funcionou para mim. O mesmo problema no Ubuntu 12.04 (pangolim preciso). Sim, eu uso su (root) também. Vergonha, vergonha. O mesmo problema ao iniciar o emacs também.
O problema parece ser que DBUS_SESSION_BUS_ADDRESS retém seu valor quando você su em vez de pegar o valor em /root/.dbus/session-bus /
do man dbus-launch:
...
The second common reason for autolaunch is an su to another user, and
display of X applications running as the second user on the display
belonging to the first user. Perhaps the ideal fix in this case would
be to allow the second user to connect to the session bus of the first
user, just as they can connect to the first user's display. However, a
mechanism for that has not been coded.
...
Use sudo, suedit, gksu.
Ou se você DEVE usar su, tente adicionar isso ao seu /root/.bashrc:
sessionfile='find "${HOME}/.dbus/session-bus/" -maxdepth 1 -type f'
if [ -f "$sessionfile" ] ; then
if grep -q "^DBUS_SESSION_BUS_ADDRESS=" "${sessionfile}" ; then
export 'grep "^DBUS_SESSION_BUS_ADDRESS=" "${sessionfile}"'
else
echo "DBUS_SESSION_BUS_ADDRESS not found in ${sessionfile}"
fi
else
echo "no session address file found in ${HOME}/.dbus/session-bus"
fi