There are many questions similar to mine (e.g. xdg-open not open default browser or xdgutils - xdg-settings not setting default-web-browser in gentoo, but none of the answers helped in my case. Therefor I ask for my particular situation:
On Centos 7 I have no free desktop manager running, I just run some X11 applications (like VS Code) from the command line where the DISPLAY variable is set to the X server on the (Windows) machine I connect from.
On the Centos machine I have two browsers installed, firefox
and google-chrome
. I can start both browsers just by typing firefox
resp. google-chrome
in the bash terminal.
xdg-open
is available and it opens links in google-chrome
- as does VS Code. However I want to change this to firefox
.
I tried:
Ticking "Default browser" in Firefox's GUI preferences.
Using xdg-settings
, but
xdg-settings get default-web-browser
returns "xdg-settings: unknown desktop environment"
Setting $BROWSER. In bash I issued
export BROWSER=firefox
but still google-chrome
is started by xdg-open
How can I set in this environment the default browser to firefox?
Note: Strangely on another machine with Centos 6 (and "no desktop environment" either) the export BROWSER
method works!
The desired behavior can be set in the mimeapps.list
configuration files described in the XDG MIME Applications specification.
TLDR:
In order to configure firefox as the default browser for your user create ~/.config/mimeapps.list
containing the following lines:
[Default Applications]
x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop
x-scheme-handler/ftp=firefox.desktop
x-scheme-handler/chrome=firefox.desktop
text/html=firefox.desktop
application/x-extension-htm=firefox.desktop
application/x-extension-html=firefox.desktop
application/x-extension-shtml=firefox.desktop
application/xhtml+xml=firefox.desktop
application/x-extension-xhtml=firefox.desktop
application/x-extension-xht=firefox.desktop
Details:
xdg-utils
like xdg-open(1)
and xdg-mime(1)
look for this file in the locations listed under the File name and location section of this specification:
$XDG_CONFIG_HOME/$desktop-mimeapps.list
user overrides, desktop-specific (for advanced users)$XDG_CONFIG_HOME/mimeapps.list
user overrides (recommended location for user configuration GUIs)$XDG_CONFIG_DIRS/$desktop-mimeapps.list
sysadmin and ISV overrides, desktop-specific$XDG_CONFIG_DIRS/mimeapps.list
sysadmin and ISV overrides$XDG_DATA_HOME/applications/$desktop-mimeapps.list
for completeness, deprecated, desktop-specific$XDG_DATA_HOME/applications/mimeapps.list
for compatibility, deprecated$XDG_DATA_DIRS/applications/$desktop-mimeapps.list
distribution-provided defaults, desktop-specific$XDG_DATA_DIRS/applications/mimeapps.list
distribution-provided defaultsThe locations for the $XDG
variables are governed by the XDG Base Directory specification. If you want to figure out where xdg-utils
are looking for configuration in your particular case, run them with the XDG_UTILS_DEBUG_LEVEL
environment variable like so:
$ XDG_UTILS_DEBUG_LEVEL=10 xdg-open 'https://www.example.com'
...
Checking /home/USERNAME/.config/mimeapps.list
...