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
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?
Clicking the Yes button, a toast message appears
which you have to click before it disappears, which finally opens the software installer:
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
(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
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
to register the new .desktop file.
Double-clicking a .url file now opens the URL in a new Firefox tab.