A little more error handling for browser launches

Implement a timeout and deal with the case where xdg-open isn't
avialable for whatever reason.