Opening `.url` Files Like a Pro
Previous: Graham's Scan Convex Hull Algorithm
Next: Local Hoogle Daemon
I go back and forth between Linux, Windows, and OS X, and I end up getting a lot of proprietary files in my Dropbox.
It’s been bugging me for a long time that there’s no xdg handler for Windows .url files in Linux, so I finally strung one together.
A .url files in windows looks something like this:
; ~/example.url
[InternetShortcut]
URL=http://www.example.comSimple, elegant, clean.
In order to pull the url out of a file like that, we just have to find the line that begins with URL=, cut that line at the =, and take the second piece.
That’s a one-liner in Bash:
cat "${MY_FILE}" | grep "URL=" | cut -d = -f 2Once we have the URL, we can feed it to xdg-open to open it in the default browser.
Here’s a Bash script that does that with a few embellishments.
#!/bin/bash
# ~/bin/openurl
# A script for opening windows `.url` files.
URL=$(cat "$1" | grep "URL=" | cut -d= -f2)
echo -e "Opening\n$URL\nin default browser..."
xdg-open "$URL" & sleep 3Remember to make it executable:
$ chmod +x ~/bin/openurlThe $1 refers to the first argument, so if we invoke as openurl example.url, then $1 will expand to example.url.
We can try this from the command line, and you should see that it works as intended.
$ openurl example.url
Opening
http://www.example.com
in default browser...
Created new window in existing browser session.
$The last line of output is created by chromium-browser, my default browser.
Nice, but not enough.
We ultimately want to be able to just double click on example.url in our file manager, and then have a browser tab open with the correct URL.
The program that makes all of that work is called xdg-open, so we need xdg-open example.url to invoke ~/bin/openurl example.url.
For this, we need to create a .desktop file for ~/bin/openurl.
We need to know the MIME-type of a .url files, so we check real quick:
$ xdg-mime query filetype example.url
application/x-mswinurlAnd now we can write our .desktop file.
; ~/.local/share/applications/openurl.desktop
[Desktop Entry]
Version=1.0
Name=openurl
Comment=A script for opening windows `.url` files.
Exec=<FULL PATH TO EXECUTABLE, eg /home/me/bin/openurl>
Type=Application
MimeType=application/x-mswinurlFinally, we just need to tell xdg to open application/x-mswinurl types with openurl.desktop.
$ xdg-mime default openurl.desktop application/x-mswinurlNow, we can open .url files in Linux by double clicking them.
Not sure how I’m going to do all this wiring in OS X, though.
Here are a few pages that I referenced to get this working:
Previous: Graham's Scan Convex Hull Algorithm
Next: Local Hoogle Daemon