blog · git · desktop · images · contact


Browser-Werkzeuge

2016-06-19

Hintergrund

Es fing damit an, dass ich meine Firefox-Einstellungen zwischen Desktop und Laptop synchronisieren wollte. „Firefox Sync“ gab es damals zwar schon, aber diesen Weg wollte ich nicht gehen, weil ich damit von einem „Drittanbieter“ abhängig bin. „Mozilla Weave“ kann man zwar auch auf seinem eigenen Server installieren, was damals (um 2012 herum) aber kompliziert und buggy war.

Außerdem hatte ich ohnehin schon die Configs vieler meiner Programme in einem Git-Repo, also könnte man Firefox doch einfach dazutun, oder?

Probiert, funktionierte. Sogar Einstellungen wie die Positionen von Icons waren damals erfasst.

Wichtiges Detail: Es ging mir nie darum, die Session zu synchronisieren. Offene Tabs, History und sowas. Das war nicht wichtig. Es ging nur um die Einstellungen des Browsers.

Es hat sich dann aber gezeigt, dass dieses Vorhaben ziemlich anstrengend ist. Firefox fasst ständig irgendwelche Dateien an. Firefox-Updates ändern manchmal „alles“. Irgendwann war ich dann so frustriert, dass ich lariza geschrieben habe. Das war aber auch nicht die endgültige Antwort, weil „das Web“ „kaputt“ ist und WebKit da nicht hinterherkommt.

Mit der Zeit hat mich mein Vorhaben aber zu immer mehr Minimalismus getrieben. Bestimmte Details der Konfiguration waren irgendwann nicht mehr so wichtig: Icon-Positionen, Hotkeys, Theming, sowas in der Richtung. Die Browser-Defaults sind oft gut genug. Das macht es natürlich einfacher.

Aktueller Stand

Das hier erwarte ich heute von einem Browser:

Das ist dann mein „Hauptbrowser“. Derjenige, der den ganzen Tag über läuft.

Ab und zu möchte ich aber einen zusätzlichen Browser starten, der komplett unabhängig vom Hauptbrowser ist.

Es folgen nun einige Tools, die mich dabei unterstützen. Perfekt ist das nicht und an manchen Stellen auch etwas umständlich. Es ist auch sicher nicht die Antwort – denn das wäre eher sowas wie eine lariza mit Gecko oder Blink als Rendering-Engine. Vielleicht ist das ja mit Qt5 und QtWebEngine irgendwann möglich.

browser-wrapper

Um nicht einen bestimmten Browser irgendwo hardcoden zu müssen, verwende ich das:

Nahezu trivial.

cleanfox

Hierum dreht sich alles:

Das Skript erstellt ein sauberes Profil mit ein paar grundlegenden Einstellungen und startet Firefox dann mit diesem Profil. Nach dem Beenden wird das Profil wieder weggeworfen.

Damit habe ich also einen temporären Firefox. Ich kann auch zwei davon starten, ohne dass die sich gegenseitig stören.

cleanfox-session

Dass das Profil immer weggeworfen wird, kann störend sein. Deswegen habe ich noch einen Wrapper drumherum geschrieben:

Hier wird nun ein fester Pfad für das Profil verwendet. Und es wird nicht gelöscht.

Trotzdem wird noch ein Verzeichnis in „/tmp“ benutzt. Das ist Absicht. Ich will bei jedem Boot ein absolut sauberes Browser-Profil haben.

Das ist nun also der Hauptbrowser.

Und nochmal alles für Chromium

Hin und wieder brauche ich eine saubere Chromium-Instanz. Manchmal wechsle ich sogar komplett zu Chromium, weil er einfach schneller ist als Firefox (dafür hat er andere Nachteile). Den Wechsel selbst kann ich leicht durch eine Änderung von „~/.browser“ bewerkstelligen.

Ergo:

Sieht fast genauso aus.

Adblock und andere Add-Ons

Normalerweise werden Add-Ons im Profil des Browsers gespeichert – bei Firefox und Chromium. Mein Profil wird aber immer wieder zerstört, also muss ich mir hier einen Workaround überlegen.

Zum Glück kann man bei beiden Browsern Erweiterungen auch systemweit installieren. Ich kann also einfach Pakete wie dieses verwenden:

Das installiere ich einmal und muss mich danach nicht mehr um Adblock für Firefox sorgen.

Bei Chromium gibt es einen ähnlichen Mechanismus, siehe Branch private/chromium-extension-adblockpro im arch-packages-Repo.

Das eigentliche Add-On wird dadurch zwar nicht installiert, aber es wird eine „autoinstall“-Datei im System abgelegt, die dann von jeder Chromium-Instanz ausgewertet wird. Sie sorgt dafür, dass Chromium das jeweilige Plugin automatisch zur Laufzeit installieren soll.

Keyword-Suchen und Bookmarks

Das obige Vorgehen enthält erstmal keinerlei Support für Bookmarks oder Keyword-Suchen. Damit meine ich, dass man zum Beispiel „yt foobar“ in den Browser eingibt und er sucht dann auf YouTube nach „foobar“. Das ist schon ein sehr nützliches Feature, das ich nicht missen will.

Natürlich haben alle Browser nativen Support für sowas. Diese Einstellungen im Profil zu verwalten, ist aber wirklich lästig. Warum? Weil Firefox und Chromium reichlich Features in diesem Umfeld beinhalten (böse Zungen mögen von „Bloat“ sprechen). Chromium speichert die Einstellungen sogar in einer sqlite-Datenbank.

Für Bookmarks habe ich lange Zeit eine „bookmarks.xhtml“ benutzt. Die habe ich von Hand geschrieben und das war auch okay so. Bloß wie öffnet man die im Browser? Automatisch als „New Tab Page“? Dann muss man im Browser wieder konfigurieren, was die „New Tab Page“ sein soll – sofern der Browser eine Änderung überhaupt zulässt. Öffnet man die Bookmarks über einen globalen Hotkey, der nur „browser-wrapper bookmarks.xhtml“ aufruft? Ja, das ginge.

Letztendlich habe ich aber einen Workaround für das gesamte Thema gefunden, indem ich die Eingabezeile des Browsers aus dem Browser herausoperiert habe. Und zwar so:

Das Skript benutzt dmenu oder rofi oder ähnliches. Man kann Bookmarks durchsuchen, Keyword-Suchen benutzen oder URLs direkt öffnen. Das ist so ziemlich das, was die eingebauten Eingabezeilen der Browser auch machen.

Passwortverwaltung

Ich habe noch nie die eingebauten Passwortmanager der Browser benutzt. Hier gab es also keinen großen Änderungsbedarf. Seit einiger Zeit verwende ich einfach das hier:

Das funktioniert so ziemlich überall und mit allem, einschließlich Lynx oder VNC-Sitzungen.

Fazit

Wie schon erklärt, ist das hier nicht die perfekte Lösung. Es ist aber eine Verbesserung. Ich gewinne ein bisschen mehr Unabhängigkeit von einem bestimmten Browser.

Und ein großes Plus: Dieses Setup ist deutlich einfacher zu synchronisieren und verwalten als alles, was ich vorher hatte. Ich versuche, die Browser „dumm“ zu halten, damit ich mich gar nicht erst um so viele Browser-Einstellungen kümmern muss.

Comments?