But this becomes annoying when somebody sends me a Facebook link on Pidgin, because it would open in Firefox when I click it and I'd have to copy/paste the link to Chrome instead. So, I wrote a little wrapper script to make this all automatic for me.
I set this script to be my default web browser, so anytime a program wants to open a link, it calls my script instead of Firefox. Then my script looks at the domain name from the URL, and opens it in Chrome if it's a facebook link, or Firefox otherwise.
Here's the script for others to use. You can also download it here.
#!/usr/bin/perl # browser-wrap: Set this as your default browser to open certain links with # certain browsers. # # To get `xdg-open` to use this, put this in your ~/.profile (update the path # to match where you installed the script to): # # if [ -n "$DISPLAY" ]; then # BROWSER=/home/kirsle/bin/browser-wrap # fi # # --Kirsle # http://sh.kirsle.net/ use 5.14.0; use strict; use warnings; #------------------------------------------------------------------------------# # Configuration Section # #------------------------------------------------------------------------------# # Define your browser rules here. my $rules = { # These are domain names to match. Use a regular expression. qr/(facebook|fbcdn)\.(com|net)/ => "google-chrome", }; # Default browser for links that don't have rules that match. my $default = "firefox"; #------------------------------------------------------------------------------# # End Configuration Section # #------------------------------------------------------------------------------# # Get the URL passed in. my $url = shift(@ARGV); my $browser = $default; # Looks okay? if ($url =~ /^https?:\/\/([^\/]+)\/?/i) { print "Domain: $1\n"; my $domain = $1; # Look for the best rule. my @sorted = sort { length($b) <=> length($a) } keys %{$rules}; foreach my $rule (@sorted) { if ($domain =~ /$rule/i) { # Matched! $browser = $rules->{$rule}; last; } } } # Launch the browser. my ($app, @args) = split(/\s+/, $browser); exec($app, @args, $url, @ARGV);
[ Kirsle's Blog ]