I have the following scenario: Ubuntu 16.04 machine with firefox and chrome installed, chrome being my default browser.
I check this actions in the shell :
cat /usr/share/applications/defaults.list
cat /etc/mailcap
cat /.config/mimeapps.list
cat /.local/share/applications/mimeinfo.cache
x-www-browser-> chrome is launch
xdg-mime query default text/html
response:
google-chrome.desktop
And does not appear firefox by any side, always chrome. This is fine. Also check:
Click on a desktop file file.html -> chrome is launch
And now comes the strange, if I run:
xdg-open "http://www.example.com"
For some strange reason it always opens firefox. I do not know why, could anyone help me?
xdg-open opens a file or URL in the user's preferred application. If a URL is provided the URL will be opened in the user's preferred web browser. If a file is provided the file will be opened in the preferred application for files of that type. xdg-open supports file, ftp, http and https URLs.
xdg-open command in the Linux system is used to open a file or URL in the user's preferred application. The URL will be opened in the user's preferred web browser if a URL is provided. The file will be opened in the preferred application for files of that type if a file is provided.
To set a default browser, make sure that a .desktop
file exists for your preferred browser. I'll be setting Mozilla Iceweasel for this example:
$ ls /usr/share/applications/iceweasel.desktop
iceweasel.desktop
Assured you have the file, run:
$ xdg-settings set default-web-browser iceweasel.desktop
# Test that it works
$ xdg-open "http://example.com"
I use the program surf
, which doesn't have a .desktop file. To set this as your web browser, first create the file ~/.local/share/applications/surf.desktop
with this following content:
[Desktop Entry]
Type=Application
Name=surf
Comment=Surf minimal web browser
Terminal=false
Exec=surf
Categories=Network;WebBrowser
While not all of this content is required, it helps categorize the file for any future use.
Set the default browser like normal:
$ xdg-settings set default-web-browser surf.desktop
And now you're good to go!
text/html is for html files, i.e. if you open a html file then it would open in google chrome. For opening urls, you need to have the x-scheme-handler/https
and x-scheme-handler/http
entries.
you can set that either with xdg-mime. For example to set google chrome as the default browser for xdg-open:
xdg-mime default google-chrome.desktop x-scheme-handler/https
xdg-mime default google-chrome.desktop x-scheme-handler/http
Or you can put the following lines in ~/.config/mimeapps.list
x-scheme-handler/http=google-chrome.desktop
x-scheme-handler/https=google-chrome.desktop
The above command basically insert these lines to that file.
Note: you should obviously have the google-chrome.desktop file under ~/.local/share/applications or the systemwide alternative location - /usr/share/applications.
For changing the default browser overall, you also have to use xdg-settings as shown by Nolan Akash. xdg-settings changes the value of $BROWSER so another way to change it is to explicitly assign the program ( not the .desktop file) to $BROWSER environment variable and export it.
export BROWSER=google-chrome
you usually would want to keep this like in ~/.bashrc (or the equivalent for the shell you use) or in ~/.profile and log out and log in to have the environment updated and available for other programs to see.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With