Custom URLs in Chromium (Edited)

I’ve been tinkering with Second Life and Spotify on Linux, and discovered there’s a known bug in XDG whereby it complains when you try to access a custom protocol link (e.g. secondlife:// or spotify://) that is already registered within XDG. There’s a (rather cumbersome) way of getting around it, if you’re using Chromium (probably works with Chrome, but I haven’t tried it) First step, add a mime desktop entry – usually in ~/.local/share/application/. This entry must contain a MimeType entry, and a NoDisplay entry. Use the %u to pass the url. This desktop entry will NOT be visible on the menus, and is solely to “connect” to the application you want to invoke when the link is clicked. This example is using the Singularity viewer as an example.

[Desktop Entry]
 Name=Singularity
 Comment=Client for Online Virtual Worlds, such as Second Life
 Exec=~/.singularity-install/handle_secondlifeprotocol.sh %u
 Icon=~/.singularity-install/singularity_icon.png
 Terminal=false
 Type=Application
 Categories=Application;Network;
 StartupNotify=true
 X-Desktop-File-Install-Version=3.0
 MimeType=x-scheme-handler/x-secondlife-url
 NoDisplay=true

Next, inside the program you are calling, you may need to do some manipulation of the passed URL as it will come with escapes (e.g. %20 = space).  See later in the post for an example

Finally, make Chromium aware of this new handler, by editing the Chromium preferences, found in (for the Default user), in ~/.config/chromium/Default/Preferences. Chromium must be closed for this to work, or you will lose your changes. In the Preferences file, add this block of code:

"custom_handlers": {
 "enabled": true,
 "ignored_protocol_handlers": [ ],
 "registered_protocol_handlers": [ {
 "default": true,
 "protocol": "secondlife",
 "title": "Second Life",
 "url": "x-secondlife-url:%s"
 } ]
 },

Note the trailing comma, and the url must be prefixed with the mime type you declared in the desktop entry. Start up Chromium afterwards, then click the link. When you click on the link, Chromium gets the link, finds there is a custom handler (in Preferences file), passes it to the mime desktop link you created (which contains the mime type), finds the program to use from the desktop link, and passes the url to the program using the arguments you specified.

Here’s an example of what I mean by manipulating of the passed URL. This is the script from the Firestorm Viewer. Singularity uses a VERY similar script so the code should be nearly interchangeable. I have hacked this script (changes I have made are in bold) so that it works with SLURLs (Second Life URLs)  with both spaces, and prefixed with “app/region”

#!/bin/bash

URL="$1"
NEWURL=$(echo $URL| perl -pe 's/^x-secondlife-url://; tr/+/ /; s/%([a-fA-F0-9]{2,2})/chr(hex($1))/eg;')
URL=echo $NEWURL | sed 's/secondlife:\/\///g' | sed 's/\/app\/region\///g'
if [ -z "$URL" ]; then
#echo Usage: $0 secondlife://...
echo "Usage: $0 [ secondlife:// | hop:// ] ..."
exit
fi
RUN_PATH=
dirname "$0" || echo .
#cd “${RUN_PATH}/..”
cd “${RUN_PATH}”
#exec ./firestorm -url \'”${URL}”\’
if [ pidof do-not-directly-run-firestorm-bin ]; then
exec dbus-send –type=method_call –dest=com.secondlife.ViewerAppAPIService /com/secondlife/ViewerAppAPI com.secondlife.ViewerAppAPI.GoSLURL string:$URL
else
exec ../firestorm -url $URL
fi

C25K – Week 2 Day 2

I completed C25K Week 2 Day 2 (timed) (3.21 km), in 19:00, pace 05:55 min/km, with @RunDouble http://rndb.co/J52U

Nike+ Track

 

Hips Don’t Lie – Charity Single – Out of the Blue – Shakira – YouTube

Don’t laugh, but this acapella medley of Shakira’s songs is strangely catchy.

ROM Reflash – Cyanogenmod 11 (Flemmard) – Part 3

I am not impressed. After flashing and restoring my applications, the phone seems extra sluggish and seems to have locked me out of recovery mode. When I tried to set my alarm for weekdays, I was fighting the phone to click the days of the week. I was pressing Monday, Tuesday, Wednesday, then the phone took several seconds before showing up the change, then unticking them, and ticking them back on again.

I reflashed my recovery from 4EXT, since I could still get into the main OS, and now I’m reflashing from my image back to my albinoman build. This Flemmard build is going on my “do not use” list.

ROM Reflash – Cyanogenmod 11 (Flemmard) – Part 2

I am not impressed. After flashing and restoring my applications, the phone seems extra sluggish and seems to have locked me out of recovery mode.

ROM Reflash – Cyanogenmod 11 (Flemmard)

Reflashing my phone again. Using Cyanogenmod again, this time, a different build. This build is V4.4.4 instead of V4.4.2 which is the one on the albinoman build. The build is also later than albinoman’s one, so might contain some fixes to problems encountered in V4.4.2.

Restoring my backups as I type this post.

Screenshot_2014-07-26-15-45-00

C25K – Week 2 Day 1

I completed C25K Week 2 Day 1 (timed) (3.12 km), in 19:00, pace 06:05 min/km, with @RunDouble http://rndb.co/Z4Xt

I carry so much tech with me on my runs, this is what the plugs in my bedroom look like after a run. Charging my Nike+ Fuelband, GPS SmartWatch, Jabra Bluetooth Headphones and my Fitbit One.

Nike+ Track

CameraZOOM-20140726131314472

 

Reflashing 3

So, I have been using the albinoman build of Cyanogenmod for a while now, and reflashing has fixed a few quirks, but I still get what appears to be a memory problem and the system interface restarts. So I’m going to later try reflashing a different build.