Actually the design issue is a bit deeper than that: As of now (even with my suggested change) there is no proper way of retrieving the browser name. This can be problematic especially when it comes to managing processes and frames (e.g. with EXWM). So I suggest the following refactoring: - Remove `browse-url-generic'. - `browse-url-browser-function' should return a browser name (the function might need a new name). - `browse-url-default-browser' should obey the change and return a browser name, with the first check being on `browse-url-generic-program`, second check on the environment variable, third check on xdg-open, and the rest as usual. Everything gets simple, both the code and the user configuration, plus it's more flexible.