If exo_url_show_on_screen() doesn't know how to handle a certain URL, try to ge the GNOME handler for the URL. This way we can benefit from the various registered handlers automatically. In order to not link libexo to gconf, we can use the following simple gconftool-2 call: gconftool-2 -R /desktop/gnome/url-handlers/<scheme> I.e. for mms:// URLs: % gconftool-2 -R /desktop/gnome/url-handlers/mms command = totem "%s" need-terminal = false enabled = true This should be fairly easy to parse and makes exo-open even more useful.
Done, using gnome-open instead.