Linux und das liebe Terminal: Einsteiger haben Angst vor ihm, fortgeschrittene Linux-User wollen es überhaupt nicht mehr missen. Der Start in ein jedes Terminalfenster ist nun immer der Prompt: also die blinkende Eingabeaufforderung mit dem Namen eures Benutzers davor. Dieses lässt sich nun unter Linux jedoch auf tausenden von unterschiedlichen Wegen anpassen. Es gibt unzählige Howtos, zahlreiche Wikis und sogar webbasierte Prompt-Generatoren im Netz. Mit Powerline lässt sich nun das Linux-Prompt jedoch noch deutlich umfangreicher gestalten. Mit Tmux als Zusatzprogramm, zeigt es sogar dynamische Informationen wie die Zeit oder die Systemlast im Terminal als Statusleiste an.

Powerline ist ein in Python geschriebenes Programm, das den Prompt dynamisch gestaltet. So zeigt Powerline beispielsweise den Pfad zum aktuellen Verzeichnis als Breadcrumbs an, das Programm kümmert sich um den Git-Status und symbolisiert Änderungen oder es klinkt sich via Plugin in Programme wie den Editor Vim, in den Terminal-Multiplexer Tmux oder in Fenstermanager wie Awesome ein. Ich beschränke mich hier in diesem Beitrag lediglich auf die Bash und Tmux. Wer „mehr“ möchte, der muss einfach mal die sehr ausführliche Dokumentation der Entwickler studieren. Bei der Installation von Powerline konzentriere ich mich auf zudem die systemweite Installation des Programms unter Ubuntu und Arch Linux. Weitere Hinweise zur Installation findet ihr auch wieder in der Powerline-Doku.

Powerline unter Arch einrichten

Unter Arch Linux lässt sich Powerline sehr leicht installieren, da das Programm mitsamt der dafür nötigen Fonts im AUR vorhanden ist. Für die Installation greift ihr zu eurem Lieblings-AUR-Helper, in meinem Fall wäre das eben pacaur, und braut euch mit den PKGBUILDs python-powerline-git und powerline-fonts-git die von den Powerline-Entwicklern offiziell unterstützten Pakete. Beachtet dabei, dass es im AUR noch PKGBUILDs für Python2 gibt, zudem schwirren dort auch noch veraltete Einträge rum. Lasst euch daher von den unterschiedlichen Treffern nicht verwirren und installiert am besten die offiziellen Pakete.

$ pacaur -S python-powerline-git powerline-fonts-git tmux

Nach der Installation der Software, müsst ihr euer System nun noch ein wenig anpassen. Die Anleitung für Powerline gibt dazu Hilfestellungen für Shells (bspw. Bash, Zsh oder Fish), Fenstermanager (bspw. Awesom oder lemonbar) und andere von Powerline unterstützte Anwendungen wie Vim oder Tmux. Ich setze an dieser Stelle die Unterstützung für die Bash und Tmux um, da die Bash in den meisten Distributionen Standard ist und sich mit Tmux leicht das Terminal noch weiter aufbohren lässt. Öffnet dazu nun also die entsprechenden Konfigurationsdateien in einen Editor (etwa nano ~/.bashrc sowie nano ~/.tmux.conf) und fügt den Inhalt der beiden Listings ein. Die Konfigurationsdatei von Tmux gibt es üblicherweise nicht, der Editor legt sie automatisch an.

~/.bashrc

[...]
# Powerline
if [ -f `which powerline-daemon` ]; then
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. /usr/lib/python3.5/site-packages/powerline/bindings/bash/powerline.sh
fi

~/.tmux.conf

source /usr/lib/python3.5/site-packages/powerline/bindings/tmux/powerline.conf
set-option -g default-terminal "screen-256color"

Öffnet ihr jetzt ein neues Terminalfenster, dann erscheint nun automatisch das Powerline-Prompt. Ruft ihr danach noch zusätzlich tmux auf, dann kommt die Leiste am unteren Rand des Terminalfensters hinzu — Tmux kann man auch automatisch laden lassen, darauf gehe ich am Ende des Artikels ein. Bei mir musste ich zusätzlich noch die Einstellungen des von Gnome mitgelieferten Terminals öffnen und dort einen der Powerline-Fonts auswählen, erst dann stimmen die Sonderzeichen wie die Uhr in der unteren Leiste oder die Pfeile im Prompt. Ihr erkennt einen nicht angepassten Font an Spalten zwischen den Ordnernamen und den Pfeilen.

Unter Arch Linux fällt die Installation von Powerline nicht weiter schwer.
Unter Arch Linux fällt die Installation von Powerline nicht weiter schwer.
Im Terminal müsst ihr eventuell noch einen Powerline-Font gezielt auswählen.
Im Terminal müsst ihr eventuell noch einen Powerline-Font gezielt auswählen.

Powerline unter Ubuntu einrichten

Ubuntu führt Powerline noch nicht in den Paketquellen, es gibt meinen Recherchen nach auch noch kein PPA, aus dem man das Programm direkt installieren könnte. Ihr müsst Powerline daher aus dem Git auschecken und selber bauen, was dank der Paketverwaltung für Python-Module Pip nicht sonderlich schwer fällt. Anschließend holt ihr euch noch die Fonts und installiert diese im System. Die Anleitung für die Installation stammt von Ask Ubuntu, ich habe sie auf einem Ubuntu 15.10 erfolgreich nachvollziehen können. Alternativ wird dort die Installation im Benutzeraccount beschrieben, so müsstet ihr Powerline auch ohne Root-Rechte zum Laufen bekommen.

$ sudo apt-get install python-pip git tmux
$ sudo pip install git+git://github.com/Lokaltog/powerline
$ wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
$ sudo mv PowerlineSymbols.otf /usr/share/fonts/
$ sudo fc-cache -vf
$ sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/

Anschließend müsst ihr auch unter Ubuntu wieder die Konfigurationsdateien der Bash und von Tmux anpassen (wieder als Beispiel: nano ~/.bashrc und nano ~/.tmux.conf). Unter Ubuntu sind die Pfade ein wenig anders als bei Arch, zudem unterscheidet sich bei älteren Ubuntu-Versionen eventuell die Python-Version. Prüft daher am besten vor dem Speichern der Dateien nach, ob der Pfad auf eurem System stimmt, und sucht euch mit locate powerline.sh bei Bedarf den korrekten Pfad heraus. Anschließend speichert ihr die Dateien wieder ab und öffnet ein neues Terminalfenster. Auch unter Ubuntu sollte nun das Powerline-Prompt automatisch starten und sich die Fußzeile mit tmux nachladen lassen.

~/.bashrc

[...]
# Powerline
if [ -f /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh ]; then
source /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh
fi

~/.tmux.conf

source /usr/local/lib/python2.7/dist-packages/powerline/bindings/tmux/powerline.conf
set-option -g default-terminal "screen-256color"
Unter Ubuntu muss man bei der Installation von Powerline ein wenig mehr Aufwand treiben.
Unter Ubuntu muss man bei der Installation von Powerline ein wenig mehr Aufwand treiben.

Tmux automatisch starten

Wer öfters mal länger dauernde Aufgaben auf einem Server erledigt, der wird mit Sicherheit das Kommando screen kennen. Mit ihm kann man Programme starten, sich aus der Sitzung ausklinken und später zurückkehren — ohne dass das Programm zwischendurch beendet wird. Tmux ist nun ein noch leistungsfähiger Terminal-Multiplexer, der noch diverse andere Funktionen kennt. Auf dieses Programm greift Powerline wie schon beschrieben zurück, um am unteren Rand des Terminalfensters ein paar Statusinformationen anzeigen zu lassen, allerdings müsst ihr Tmux eben bewusst aufrufen.

Ihr könnt Tmux nun aber auch automatisch beim Öffnen der Shell starten lassen. Bearbeitet dazu wieder mit nano ~/.bashrc die Konfigurationsdatei der Bash und fügt den Inhalt aus dem folgenden Listing ein. Die Kommandos prüfen ob Tmux überhaupt installiert ist und ob das Programm eventuell aus einer bestehenden Screen- oder Tmux-Sitzung aufgerufen werden soll. Passt alles, lädt die Bash dann automatisch Tmux und die Fußleiste von Powerline erscheint am unteren Rand. Beachtet jedoch, dass sich dadurch der Aufbau des Terminalfenster einen deutlich spürbaren Tick verlangsamt.

~/.bashrc

[...]
# Start Tmux by default
# If not running interactively, do not do anything
if command -v tmux>/dev/null; then
[[ ! $TERM =~ screen ]] && [ -z $TMUX ] && exec tmux
fi

Mit dem von mir vor ein paar Tagen beschriebenen Gnome-Terminal Terminix, Powerline und Tmux ergibt sich dann am Ende zum Beispiel dieses Bild — was ich allerdings nur für diesen Screenshot eingerichtet habe. Ich persönlich nutze in der Regel nur die Breadcrumb-Funktion von Powerline, da mir sonst der Aufbau des Terminalfensters ein wenig zu lange dauert. Die Tmux-Fußleiste ist eher etwas für Situationen, in denen das Linux-Terminal in all seiner Pracht glänzen soll 😉

Die Kombination aus Terminix, Powerline und Tmux ergibt dann dieses Bild.
Die Kombination aus Terminix, Powerline und Tmux ergibt dann dieses Bild.

7 Kommentare

  1. Powerline hat einen kleinen Nachteil: Da es ein Python-Script ist, hängt natürlich immer auch der Python-Interpreter dazwischen, was ab und an dazu führen kann, das die Shell ein wenig träge reagiert.

  2. Hi Christoph.

    Kannte Powerline schon länger, du hast mich drauf gebracht es mal wieder auf meiner neuen Maschine aufzusetzen. Danke für die Idee 😉

    Ich hatte allerdings Probleme mit der VIM Integration:

    ERROR:vim:powerline:Failed to create renderer: [Errno 28] Auf dem Gerät ist kein Speicherplatz mehr verfügbarYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
    

    Deswegen hier einfach schnell der Workaround für Leser, die evtl. das selbe Problem haben:

    echo fs.inotify.max_user_watches=32768 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
    

    (Weitere Infos/Quelle: https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers)

  3. Hallo Christoph,

    Powerline unter Arch zu installieren war überhaupt kein Problem und läuft auch einwandfrei. Das Problem ist Tmux: Die Fußleiste wird normal mit Powerline dargestellt, der Prompt selbst ist jedoch ohne Powerline und auch einfach nur weiß (im normalen Terminal ist das ja standartmäßig grün). Bisher habe ich keine Lösung für mein Problem gefunden – hast du da eine Idee?

    In der .bashrc und .tmux.conf sind die entsprechenden Einträge gemacht. Wenn ich .tmux.conf lösche und statt dessen un einer tmux Session ‚powerline-config tmux setup‘ eintippe, bin ich bei der Situation wie vorher (Prompt nein, Status ja).

    Liebe Grüße,
    Mathias

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein