When browsing the web with Chrome for Android, I save the URLs on my Nextcloud server by sharing using the Nextcloud App. Each URL is then stored as a .url file looking like this
[InternetShortcut] URL=https://devio.wordpress.com/
Today I noticed that those .url files cannot be opened on Ubuntu, i.e. a double-click won’t start a browser with the contained URL.
Instead, I get a an error dialog
Could not display “<HTML page title>.url”.
There is no application installed for “Internet shortcut” files.
Do you want to search for an application to open this file?No Yes
Clicking the Yes button, a toast message appears
which you have to click before it disappears, which finally opens the software installer:
Not good.
Surprisingly, Firefox does not register itself as an application to handle the .url file extension on Ubuntu. It also does not know that the Windows Firefox would know how to open the file.
More surprisingly, Ubuntu knows that .url files are “Internet shortcut” files, and have the associated MIME type application/x-mswinurl.
So I had to solve two problems:
- Retrieve the URL stored in a .url file
- Start Firefox using this URL using Ubuntu’s MIME type handling
Retrieving the URL stored in a .url file
As shown above, a .url file is simply a text file in .ini format. In it’s simplest form, it contains a section [InternetShortcut] with a single Key “URL=”. The key’s value is the URL to navigate to.
With a little help from askubuntu, I figured out the command to extract the URL value
grep -Po 'URL=\K[^ ]+' *.url
Using the result of the grep operation as argument for firefox would look something like this:
firefox `grep -Po 'URL=\K[^ ]+' "$1"`
After a bit of digging, I found how you can manually add MIME type handlers in Ubuntu. Following those instructions, I created a file
/usr/share/applications/mswinurl.desktop
(you need sudo in this directory) with the following content (spoiler: don’t copy this yet!):
[Desktop Entry] Name=Firefox Shortcut GenericName=Firefox Shortcut Type=Application Exec=firefox `grep -Po 'URL=\K[^ ]+' %U` TryExec=firefox MimeType=application/x-mswinurl; Icon=firefox
However, this did not work as intended, as I got an error message complaining about the backtick `. So, if I cannot have shell operations in the .desktop file, let’s create a batch file
/usr/local/bin/runurl
and place the shell magic there:
firefox `grep -Po 'URL=\K[^ ]+' "$1"` &
Don’t forget to make the batch file executable using
sudo chmod 755 runurl
and reference the runurl script rather than Firefox in /usr/share/applications/mswinurl.desktop:
[Desktop Entry] Name=Firefox Shortcut GenericName=Firefox Shortcut Type=Application Exec=runurl %U TryExec=firefox MimeType=application/x-mswinurl; Icon=firefox
After creating the file, run
sudo update-desktop-database
to register the new .desktop file.
Double-clicking a .url file now opens the URL in a new Firefox tab.
I’ve made something similar, but it doesn’t clutter the application chooser with a “Firefox Shortcut” app entry. It also comes with a simple installer. It also uses your default web browser (as configured in GNOME/KDE Settings.) Check out url-open.
Great application, but how can I install it? Please make the instructions clearer, thank you. Since I get “make: unrecognised option ‘–prefix=/usr/local'” Surely I’ve got to replace something which I don’t know. Thanks.
Pingback: Create .url files when drag and drop from browser instead of .desktop - Boot Panic
My system running Linux Mint has always opened ‘.url’ files in Firefox – I don’t think I have done anything special to enable it. The .URL file shows it as opening with ‘rundll32’ which may be part of the Wine installation ?
Does installing Wine and if required associating .URL file types with ‘rundll32’ cure the problem in a simpler way ?