Wenn man den Fehler macht, den Heilsversprechungen derer, die am liebsten das komplette Betriebssystem in den Webbrowser schieben würden, zu glauben, wird man grundsätzlich im unpassendsten Moment daran erinnert, warum das eine furchtbare Idee ist: Verabschiedet sich der Webbrowser, verabschiedet sich auch alles, was man gerade formuliert hat. Wenn sich die eigenen Beiträge im Web nicht gerade auf Hashtagwellen auf Instagram oder grammatikalisch nicht empfehlenswerte Kurztexte auf Twitter beschränken, dann könnte das unter Umständen eher unangenehm werden. Wer tippt schon gern über Stunden – wenn nicht: Tage, gar Wochen – ausgefeilte Texte gern ein zweites Mal von vorn?
Einige „Webanwendungen“ – allein das Wort schon! – versuchen diesem selbst verursachten Problem inzwischen entgegenzuwirken; die Forensoftware XenForo und die Blogsoftware WordPress etwa speichern den Beitrag, den man gerade tippt, in kurzen Abständen in einem Zwischenspeicher, nach einem Neustart des Systems ist somit wenigstens ein Großteil des Geschriebenen noch nicht verloren. Dass die Zuverlässigkeit also vom Dienst selbst abhängt, hat in der Vergangenheit diverse Entwickler zum Programmieren von Browsererweiterungen veranlasst, etwa Textarea Cache, das sich die Inhalte von Textfeldern während des Schreibens „merkt“ und das Gemerkte für spätere Sitzungen vorhalten kann. Die inzwischen eingestellte Firefoxerweiterung It’s All Text! ging sogar noch einen Schritt weiter und verknüpfte den jeweils bevorzugten Texteditor direkt mit diesen Textfeldern, so dass man den Text im Browser nur noch abschicken musste. Seit Firefox kaum noch von Chrome zu unterscheiden ist, ist das aber vorbei.
Wohl dem, der rechtzeitig für Ersatz gesorgt hat. Wohl dem, der GhostText kennt.
Was macht GhostText denn überhaupt?
GhostText ermöglicht eine Anbindung jedes Texteditors an den Webbrowser (sofern dieser Webbrowser Chrome, Firefox oder Opera ist – andere auf Chromium basierende Webbrowser können, müssen aber nicht, auch funktionieren). Hierfür kommuniziert es nach der Auswahl eines Textfelds per WebSocket mit beliebigen Anwendungen, die einen geeigneten Server auf Port 4001 bereitstellen können. Mit diesen Anwendungen tauscht GhostText derzeit (sofern jeweils vorhanden) den Titel, den URL, den Inhalt und die Cursorauswahl des Textfelds aus. Das Protokoll ist auf GitHub dokumentiert.
Diese Technik funktioniert natürlich vor allem in Verbindung mit einem Texteditor gut.
Aber welcher Texteditor?
Über die Frage, welchen Texteditor ich empfehlen kann und warum man nicht stattdessen einen anderen nehmen sollte, könnte ich Bücher oder wenigstens Bildschirmseiten füllen. Als ich das aber zuletzt versucht habe, habe ich es wenige Jahre später bereut. Auch ich selbst nehme längst davon Abstand, einen bestimmten Texteditor als das Maß aller Dinge zu begreifen; diesen Text etwa schreibe ich in deadpixis sam, weil mir gerade danach ist, und hätte ich fünf Minuten später angefangen, so hätte ich vielleicht einen anderen benutzt. Ich benutze derzeit mehr oder weniger regelmäßig sechs verschiedene Texteditoren für unterschiedliche Zwecke, gelegentlich kommen auch mal ein siebter und ein achter hinzu.
Eigentlich spricht nichts dagegen, zum erstbesten Texteditor, und sei’s ed, zu greifen, praktisch hingegen ist das unter Umständen mit Komfortverlust verbunden, denn GhostText selbst kennt zwei Arten der Verbindung. Der Entwickler wirbt momentan mit der Echtzeitversion, hierfür benötigt man einen der unterstützten Texteditoren – das sind derzeit Sublime Text, Atom, Visual Studio Code, Vim, NeoVim, GNU Emacs und sogar Acme – und die jeweils passende Erweiterung. Der Rest funktioniert, je nach Editor, meist weitgehend automatisch, wie ich in einem kurzen Test mit der GNU-Emacs-Version festgestellt habe. Die weitere Lektüre meines folgenden Geschwalls wäre in diesem Fall ohne ersichtlichen Mehrwert. Bevorzugt man jedoch einen anderen Texteditor, so soll man zu It’s All Ghosts greifen.
Tut man das, so ist die Wahl des Texteditors völlig egal, unterstützt wird wohl jeder, der Dateinamen als Aufrufparameter akzeptiert. Der benutzerseitige Unterschied zu den offiziellen und halboffiziellen Editorplugins ist, dass It’s All Ghosts sich, daher wohl der Name, beinahe wie das gute alte It’s All Text! verhält: Es gibt keine Liveaktualisierung, stattdessen wird der Text erst in den Webbrowser übernommen, wenn der Editor beendet wird. Das wird erst dann zu einem Problem, wenn der Texteditor (oder der Computer) selbst abstürzt und kein Backup der aktuellen Editorsitzung vorliegt. In dem Fall empfehle ich einen anderen Texteditor oder ein vernünftiges Maß an Fatalismus und/oder Sarkasmus. Da es sich mir nicht erschließt, warum man für das Bearbeiten von bloßem Text unbedingt eine grafische Oberfläche haben muss, spricht wenigstens für diesen Anwendungsfall nichts gegen einen konsolenbasierten Editor. Ein solcher ist zumeist noch immer komfortabler zu benutzen als eine textarea, wenn man sich nicht gerade mit weiteren Browsererweiterungen behelfen möchte, und belegt anders als „moderne“ Alternativen nur wenige Systemressourcen. Davon kann man bekanntlich nie genug haben.
Wenn man nicht gerade Windows nutzt (denn unter Windows ist seine Unterstützung für die Kommandozeile noch eher mau), aber sich für ungewohnte Konzepte begeistern kann, könnte poe einen Blick wert sein, ein nicht übler Nachbau des Texteditors Acme, der sich ebenso wie sein Vorbild komplett mit der Maus bedienen lässt. Ich hörte, das werde von vielen Menschen als Vorteil verstanden. Ansonsten habe ich den tastaturfreundlichen Editor micro als gut genug bedienbar wahrgenommen. Wer – wie ich – cmd nicht übermäßig gut leiden kann, der möge, da Console2 anscheinend nicht mehr gepflegt wird, sich einmal ConEmu ansehen, das sich auch als Systemstandard setzen lässt; micro wird dann automatisch in ConEmu statt in cmd gestartet.
Installation
An notwendiger Software haben wir nun also die folgende zusammengetragen:
- Einen brauchbaren Texteditor.
- Eine brauchbare Konsole (optional, je nach System und Texteditor).
- GhostText (die jeweilige Browsererweiterung).
- It’s All Ghosts.
- Python 3 (für It’s All Ghosts).
Ich gehe im Folgenden davon aus, dass meine obigen Empfehlungen wenigstens teilweise berücksichtigt werden. Unter Windows bietet es sich an, bei dieser Gelegenheit, sofern noch nicht geschehen, das hervorragende Chocolatey zu installieren, denn das macht die Installation der übrigen Software etwas weniger aufwendig – der Administrator muss anschließend zur Installation von micro, ConEmu und Python nur noch folgenden Befehl eintippen oder ‑kopieren:
$ cinst micro conemu python3
Andere Konsolen und Texteditoren sind nach Belieben auf ähnliche Weise zu installieren. Ansonsten spricht außer etwas mehr Aufwand auch nichts gegen eine händische Installation der gewünschten Komponenten.
Einrichtung
It’s All Ghosts ist ein nicht besonders ungewöhnliches Python-3-Paket und lässt sich auch als ein solches installieren:
$ pip install ItsAllGhosts
Wenn das nur einen Fehler ausgibt, könnte pip3 ein besser funktionierender Befehl sein:
$ pip3 install ItsAllGhosts
Sofern Chocolatey installiert ist, genügt jetzt refreshenv, ansonsten sollte (unter Windows) die Konsole einmal neu gestartet werden, um die neuen Pfade zu finden. Anschließend sollte der Befehl itsallghosts zur Verfügung stehen.
It’s All Ghosts versucht standardmäßig Notepad++ (Windows) oder uxterm mit nano (Unix, Linux, BSD) zu benutzen. Dieses Verhalten lässt sich ändern, indem man eine eigene Konfigurationsdatei schreibt.
Windows
Es ist unter C:\Users\<Benutzer>\.config\ – gegebenenfalls mittels echo %XDG_CONFIG_HOME% vorher prüfen, ob der Ordner explizit woanders liegt, normalerweise sollte das aber nicht der Fall sein – eine neue Datei namens itsallghosts.cmd anzulegen, die den gewünschten Editor aufruft. Für micro sieht das zum Beispiel so aus:
micro "%*"
It’s All Ghosts ersetzt %* durch den Pfad zu der temporären Datei, die angelegt und bearbeitet wird – Anführungszeichen sind (wegen möglicher Leerzeichen) hier also durchaus zu empfehlen.
Unix, Linux, BSD
Es ist unter ~/.config – gegebenenfalls mittels echo $XDG_CONFIG_HOME vorher prüfen, ob der Ordner explizit woanders liegt, normalerweise sollte das aber nicht der Fall sein – eine neue Datei namens itsallghosts_cmd anzulegen, die den gewünschten Editor in der gewünschten Konsole aufruft. Für micro in einer KDE-Konsole sieht das zum Beispiel so aus:
exec konsole --separate -e micro "$*"
Ich habe das jetzt nicht getestet, gehe aber davon aus, dass ich keinen völligen Unsinn geschrieben habe. It’s All Ghosts ersetzt $* durch den Pfad zu der temporären Datei, die angelegt und bearbeitet wird – Anführungszeichen sind (wegen möglicher Leerzeichen) hier also durchaus zu empfehlen.
Nutzung
itsallghosts stellt auf Port 4001 eine Schnittstelle zu dem eingestellten Editor bereit, die übliche GhostText-Erweiterung sollte also in der Lage sein, mit ihm zu kommunizieren. Hierfür sollten, sofern niemand einen Fehler gemacht hat, nach dem Start der Anwendung ein Klick auf das GhostText-Symbol im Browser und eine Auswahl des gewünschten Textfeldes, das dann einen hellblau „schimmernden“ Rand bekommt, genügen.
Hat man das Textfeld ausreichend gefüllt, kann die Datei gespeichert (Strg‑S) und der Texteditor geschlossen (Strg‑Q) werden. Die Inhalte sollten anschließend im Browser zu sehen sein.
Das war alles!
Fragen, Anmerkungen, Korrekturen und/oder Lobhudelei sind auch diesmal gern gesehen.
Wow, recht herzlichen Dank fuer den ausfuehrlichen Text.
Ich hab viele Dinge kennengelernt die ich noch nicht kannte (unter anderem auch Choloatey und Poe.
Dein Beitrag bietet viele interessante Facetten und Links an um sich dem Problem zu widmen. Selbiges wird eingangs deutlich erklaert.
Was ich schreiben moechte. Ich habe schon lange nicht mehr einen solch schoenen Beitrag gelesen. Ich merke wie viel Zeit und Muehe du in deinen Text gesteckt hast, dankeschoen.
Das wollte ich nicht!
Passiert jedem mal!
TL;DR
Was spricht gegen: Editor/Textverareibtung starten, Text schreiben (ggf. manuell oder automatisch sichern), Strg+a, Strg+c, Strg+v im Textfeld des Browsers?
Mehr Aufwand. Entwickler sind faul, darum sind sie ja Entwickler.
Die furchtbarste Idee ist es allerdings, der Deutschen IT solche Probleme und deren Lösungen an und in die Hand zu geben. Das Resultat wird sich von Dachau kaum unterscheiden lassen. FAIL! WTF Arrrrr!
Was soll dieser stumpfsinnige Vergleich? Provokation oder wolltest Du uns wirklich etwas mitteilen?