Neue Version von Browserstart

Wer viele Browser zur Webentwicklung, oder einfach aus Spaß installiert hat, kennt das Problem.
Ein Link in der Shell per alt+u angesteuert und angeklickt, es gehen auch grafische Anwendungen, und ein anderer Browser öffnet sich, obwohl schon einer offen ist.
Hier springt das Script Browserstart in die Bresche, als definitiver Standardbrowser angegeben, schaut es nach, welcher Browser offen ist und öffnet in jenem ein Tab.
Bei mir ist die Einstellungen, dass wenn kein Browser offen ist, Chromium gestartet werden soll, falls dieser nicht vorhanden ist, bitte den Opera starten.
Am besten legt man sich das Script in sein ~/bin/-Verzeichnis, macht es ausführbar und definiert es als Standardbrowser.
Bei mir ist es z.B. für die Shell:

URxvt.perl-ext-common: url-select
 URxvt.keysym.M-u: perl:url-select:select_next
 URxvt.underlineURLs: true
 URxvt.urlLauncher: /home/seraphyn/bin/browserstart

Enthalten sind die Browser: Opera, Firefox, Google-Chrome, Chromium
Natürlich kann man das Script auch sehr einfach erweitern für z.B. Konqueror, Galeon etc

#!/bin/bash
 order=(
 opera_new_tab
 firefox_new_tab
 google_chrome_new_tab
 chrome_new_tab
 chrome_new_win
 opera_new_win
 )

function mozlike_new_tab {
 if [ "`pidof $2-bin`" ]; then
 $2 -new-tab "$1"&
 else
 return 1
 fi
 }
 # new firefox tab
 function firefox_new_tab {
 mozlike_new_tab $1 firefox
 }
 # helper function for firefox_new_win and swiftfox_new_win
 function mozlike_new_win {
 $2 -new-tab "$1"&
 }
 # new firefox window
 function firefox_new_win {
 mozlike_new_win $1 firefox
 }
 function opera_new_tab {
 if [ "`pidof opera`" == "" ]; then
 return 1
 fi
 opera -newpage $1
 }
 # new opera win
 function opera_new_win {
 opera -newwindow $1
 }

function chrome_new_tab {
 if [ "`pidof chromium-browser`" == "" ]; then
 return 1
 fi
 chromium-browser --new-tab $1
 }

function chrome_new_tab {
 if [ "`pidof chrome`" == "" ]; then
 return 1
 fi
 google-chrome --new-tab $1
 }

function chrome_new_win {
 chromium-browser --new-window $1
 }

for i in `seq 1 ${#order[@]}`;
 do
 ${order[$i-1]} $1 && exit
 done