Firefox auf 2 XServern


Hallo,

wie bereits hier beschrieben und viel diskutiert verwende ich für Laptop+externen Monitor 2 eigenständige XServer.

Nun gab es leider das Problem, dass Firefox (aus mir unbekannten Gründen) nur 1 Instanz starten möchte. Wenn ich am zweiten Monitor Firefox ebenfalls nutzen will, meckert er herum, dass das Profil bereits in Benutzung wäre. Naja, die Lösung liegt quasi schon auf der Hand – für jeden Screen ein eigenes Profil.

Hier würde ich fast sogar soweit gehen und sagen it’s not a bug – it’s a feature, weil ich so auch gleich auf jedem Screen verschiedene Extensions installieren und nutzen kann.

Firefox kann man netterweise gleich in der Commandline mitgeben, welches Profil genommen werden soll, nämlich über den Parameter -p „profilname„.

Was aber nicht so angenehm ist, sind zwei Dinge:

  1. Öffnet man einen Link aus einem Programm heraus, meckert er herum (wenn man das am „falschen“ Screen tut)
  2. Man benötigt 2 Starter – für jeden Screen einen.

Hierfür habe ich nun perfekte Abhilfe. Ich habe ein Script gebaut, welches ermittelt auf welchem Screen man sich gerade befindet, auf dem jeweiligen Screen dann prüft, ob auf dem betreffenden Screen bereits ein Firefox läuft. Wenn auf dem betreffenden Screen noch kein Firefox läuft, wird er neu gestartet, anderenfalls wird im bestehenden Firefox ein Tab geöffnet (bzw. die Standardoption, die man selbst in den Firefox-Einstellungen getroffen hat).

So, nun zur Anleitung:

Firefox-Profile anlegen

Zuallererst benötigen wir die beiden Firefox-Profile. Schwups in den Profilmanager (Alt+F2: firefox -ProfileManager)

Und die beiden Profile angelegt mit Namen screen1 und screen2.

Script anlegen

Man öffne eine Konsole und gebe folgendes ein:

nano ~/bin/my-firefox

Nun kopiere man den gesamten Inhalt und füge ihn in den Editor ein. (Tipp: Alles markieren und dann im Editor die mittlere Maustaste drücken – fügt automatisch den markierten Text ein)

#!/bin/bash
# Copyleft Robert Schrenk

FF=“/usr/lib/firefox-3.0.3/firefox“
SCR=$DISPLAY
URL=$1
if [ „$URL“ = „“ ]; then
  URL=“about:blank“
fi

if [ „$SCR“ = „:0.0″ ]; then
  screen=“screen1“
fi
if [ „$SCR“ = „:0.1″ ]; then
  screen=“screen2″
fi

command=“$FF -no-remote -p $screen“

fffound=“0″
for p in `pidof firefox`; do
  echo „PID $p“
  chk=`ps -C -o $p | grep $screen`
  echo „CHK: $chk“
  if [ „$chk“ = „“ ]; then
    # Check leer –> KEIN Firefox gefunden
    echo „nix“
  else
    fffound=“1″
  fi
done

if [ „$fffound“ = „0“ ]; then
  echo „Opening Firefox for $screen“
  # zenity –info –text „Opening Firefox for $screen to target $URL“
  $FF -no-remote -p $screen „$URL“
else
  # zenity –info –text „No running Firefox found“
  echo „Opening new Tab in existing Firefox“
  # zenity –info –text „Opening new Tab in existing Firefox for $screen to target $URL“
  $FF „$URL“
fi

Als einziges muss man überprüfen, ob der Befehl zur richtigen Firefox-Version passt. (Hier /usr/bin/firefox-3.0.3/firefox). Bei eventuellen Updates muss dieser Befehl berichtigt werden. Leider funktioniert es nicht die Zeile mit FF=`which firefox` zu ersetzen, weil das nur /usr/bin/firefox zurückgibt, was im weiteren Programmverlauf nicht funktioniert.

Das Script als „Standardbrowser“ einrichten

Als nächsten Schritt ist es erforderlich das erstellte Script als „Standardbrowser“ einzurichten. Als erstes (noch im Terminal) machen wir es ausführbar:

chmod a+x my-firefox

Nun gehen wir im Ubuntu-Hauptmenü auf „System“ / „Einstellungen“ / „Bevorzugte Anwendungen“. Hier beim Webbrowser auf „Benutzerdefiniert“ stellen und als Befehl den gesamten Pfad zum Script eingeben + %s hinten dran. In meinem Fall also

/home/rschrenk/bin/my-firefox %s

Unbedingt hier natürlich EUREN Benutzernamen reinschreiben….
Das %s ist notwendig, damit der Firefox die zu öffnende URL übermittelt bekommt.

Et voila…. that’s it.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s