Vor ein paar Wochen bin ich über die von MadMalik erstellte Font “monoOne” gestolpert. Für den täglichen Einsatz in der Shell und im Editor habe ich recht hohe Ansprüche an eine Font. Dazu zählen:
- Fixed Width, also dass alle Zeichen immer dieselbe Breite haben; hierdurch fallen alle Fonts mit variabler Zeichenbreite und Kerning raus
- Klare Unterscheidbarkeit der einzelnen Zeichen, was insbesondere für “l”, “I”, “1”, “!” und “|” gilt, aber auch für “O” und “0”
- Die Font soll nicht all zu groß eingestellt werden müssen, um die Unterscheidbarkeit zu gewährleisten
- In der kleinen Größe sollen auch fontspezifische Eigenschaften, wie Serifen, erkennbar sein oder allein die Richtung von “ordentlichen” Anführungszeichen
- Die gängigen Umlaute und diverse Symbole insbesondere für einfache mathematische Darstellungen sollen vorhanden sein
Mit der monoOne hat MadMalik eine Font geschaffen, die mir sehr gut gefällt. Im Büro sprachen mich Kollegen an, welche Font ich nutzen würde, da sie neben der fast schon einheitlichen Menlo positiv heraussticht.
In der Beschreibung zur monoOne las ich, dass diese die powerline Symbole beinhaltet, von denen ich bisher noch nie hörte.
powerline
Die powerline Symbole sind eigentlich nur sieben Zeichen, die im erweiterten Unicode-Bereich abgelegt werden. Zusammen mit anderen bereits vorhandenen Unicode-Zeichen können sie über Plugins in Editors und Shells geladen werden, um visuell erweiterte Informationen zum Zustand der editierten Datei oder dem System zu geben.
Konkret sieht es dann beispielsweise beim Editor vim so aus, dass die Statuszeile um einige Informationen aufgewertet wird (das Bild ist vom powerline Autor übernommen und zeigt die Font Pragmata Pro):
Es zeigt, dass ich mich im Normal-Modus vom vim befinde. Rechts daneben wird mit einem Symbol der aktuell verwendete Branch im git Repository angezeigt, erst dann der Dateiname. Auf der rechten Seite sind Informationen über das Dateiformat (unix), das Encoding (utf-8), das eingestellte Syntax-Highlightning (python), der aktuellen Cursorposition relativ zum Gesamtdokument (2%), Linebreak, Zeilen- und Spaltenposition.
Beim Wechsel des Editor-Modus schaltet sich die Zeile um:
Allein diese massive visuelle Änderung hilft ungemein, schnell Informationen über den Zustand des Editors und der Datei zu erfahren.
Shell
In der Dokumentation zur powerline steht, dass diese auch für andere Applikationen verfügbar ist. Das geht zwar eigentlich auch mit den für vim installierten powerline-Tools, aber irgendwie wollte das auf meinem Mac nicht wirklich zusammenarbeiten. Stattdessen gab es irgendwo den Hinweis, es gebe ein zsh–Theme für powerline.
Der Entwickler nutzt dazu das Framework oh-my-zsh. Seit Jahren nutze ich die hoch konfigurierbare zsh. Anfangs mit vielen eigenen Snippets, die ich mir im Web zusammensuchte oder mit anderen Bekannten im Hackspace austauschte. Später dann baute ich meine zsh-Config auf die vom Projekt grml auf.
Das Framework oh-my-zsh setzt auf eine schnelle Konfiguration der zsh, was vermutlich viele bisher abschreckte, auf diese Shell zu wechseln. Ohne Konfigurationsdatei ~/.zshrc zeigt die zsh keinen Prompt sondern einen minimalen Konfigurationsdialog. Die danach angezeigte Shell ist extrem Minimal. Die großen Stärken von zsh kommen einfach nicht hervor. Bei oh-my-zsh braucht nur das Repository von github gecloned und eine ~/.zshrc angelegt werden, die im Grunde nicht mehr als zwei Zeilen beinhaltet, um oh-my-zsh zu aktivieren. Weiterhin können in der eigenen ~/.zshrc Plugins oder Themes aktiviert werden.
Bei mir sieht die ~/.zshrc so aus:
ZSH_THEME="powerline"
COMPLETION_WAITING_DOTS="true"
POWERLINE_RIGHT_A="exit-status"
POWERLINE_NO_BLANK_LINE="true"
plugins=(git brew github osx python screen ssh-agent mosh terminalapp)
source $ZSH/oh-my-zsh.sh
Das Ergebnis sieht dann zusammen mit der monoOne so aus:
In der linken Infobox habe ich meinen Usernamen, den Host, dann den Pfad und noch ähnlich wie beim vim-Plugin die Information über das git-repository und den Status der Dateien. Die rechte Infobox mit der Uhrzeit und dem Return-Code verschwindet, wenn der eingetippte Befehl länger als die Lücke zwischen den Boxen ist.
Community-Configs
Vor allem oh-my-zsh machte mir bewusst, wie stark der Einfluss von github auf den Austausch von Konfigurationsdateien ist. Obwohl es vorher viele andere Projekte gab, bei denen mitgewirkt werden konnte, ist es bei github viel einfacher. Es kann schnell ein Fork erstellt werden, um die eigene Konfiguration anzupassen und zu erweitern. Und wenn alles schön aussieht, kann diese Konfiguration auch wieder hoch geladen werden – oder ein Pull-Request geschickt werden, um die Erweiterung im Hauptprojekt aufzunehmen.
Jürgen Geuter liked this on Facebook.
@PylonC cool 🙂 powerline kannte ich auch noch nicht und an zsh habe ich mich noch nicht getraut. Zeit das zu ändern.
RT @PylonC: Editor und Shell mit Powerline (und der Font monoOne): http://t.co/vpYPL0F1cb
Für vim bin ich von Powerline auf Airline gewechselt, welches die Funktionalität von Powerline in reinem vimscript nachbaut und dadurch etwas portabler und ressourcenschonender ist. (Ausserdem hatte Powerline ein Problem mit Gvim aber das betrifft dich auf dem Mac ja nicht ;))
Airline hatte ich mir kurz angeschaut. Verhielt sich aber nicht so wie powerline. Vielleicht hatte ich auch nur einen Tag erwischt, wo der Master-Branch gerade mal kaputt war. Werde Airline noch mal eine Chance geben 🙂
Sweet: RT @PylonC Editor und Shell mit Powerline (und der Font monoOne): http://t.co/oXINmkA86k
nach dem ich seit ewigkeiten wusste das zsh toll sein soll hat mich dein post motiviert das endlich mal zu installieren. jetzt ist alles besser. auch mit powerline. danke 🙂
Danke fürs Ausprobieren. Gerade erst entdeckt, dass du über meinen Font geschrieben hattest.
Ich bin gerade dabei, die Erfahrungen und das Feedback von ein paar Monaten, seitdem das veröffentlicht ist in eine Überarbeitung einfließen zu lassen. Dann wird es auch Bold und Italic Versionen geben.
Freue mich schon auf die weiteren Schnitte 🙂 Und danke für diese klare, schöne Font!