ADMIN

2023

07

2023-06-29T12:00:00

Optimiertes Rechenzentrum

PRAXIS

054

Open-Source-Tipp

Terminal

Oh-My-Posh

Terminal mit Oh-My-Posh aufhübschen

Farbenprächtig

von Thorsten Scherf

Veröffentlicht in Ausgabe 07/2023 - PRAXIS

Administratoren verbringen wahrscheinlich einen Großteil der Arbeitszeit innerhalb eines Terminals. Von daher ist es wünschenswert, diese Arbeitsumgebung an die eigenen Bedürfnisse anpassen zu können. Dies gilt sowohl für die zur Verfügung stehenden Funktionen als auch die optische Darstellung. Der Open-Source-Tipp in diesem Monat wirft deshalb einen Blick auf die Prompt-Theme-Engine Oh-My-Posh.

Egal, welche Shell Sie in einem Terminal einsetzen, der Prompt sieht wahrscheinlich in den allermeisten Fällen sehr trist aus und stellt lediglich grundlegende Informationen zur Verfügung – zumeist nur, in welchen Verzeichnis Sie sich gerade befinden. Zum Glück bieten die allermeisten Shells jedoch eine Funktion an, um den Prompt anzupassen. Das machen sich Prompt-Engines wie beispielsweise Powerline oder Oh-My-Zsh zu Nutze. In der Regel findet dies durch den Einsatz unterschiedlicher Themes statt, die die Umgebung optisch verschönern.
Des Weiteren können diese Engines aber auch nützliche Informationen innerhalb der Eingabezeile darstellen. Diese werden dann meist in unterschiedliche Segmente unterteilt, was Ihnen die Möglichkeit gibt, die jeweiligen Abschnitte mit den für Sie relevanten Informationen zu versehen. So können Sie im einfachsten Fall das Datum oder die Uhrzeit innerhalb eines Segments darstellen. Komplexere Konfigurationen erlauben das Einfügen nahezu beliebiger Daten. So visualisieren Sie beispielsweise innerhalb von Git-Verzeichnissen die Git-relevanten Informationen, wie etwa den Status des aktuellen Repositories, innerhalb eines Segments.
Theme-Engines und Nerd-Fonts
Mit Powerline [1] steht eine sehr mächtige Engine zur Anpassung nicht nur des Shell-Prompts zur Verfügung. Stattdessen kann die Software eine Vielzahl an unterschiedlichen Statuszeilen, so auch im Vim-Editor, anpassen. Oh-My-Zsh [2] ist ein beliebtes Konfigurationstool für die zsh und wurde bereits im Open-Source-Tipp 06/2022 besprochen [3]. In diesem Monat befassen wir uns mit der Software Oh-My-Posh [4], die ähnlich wie Oh-My-Zsh eine individuelle Anpassung des Shell-Prompts ermöglicht. Anders jedoch als bei Oh-My-Zsh funktioniert dies unabhängig davon, welche Shell Sie tatsächlich in Ihrer Umgebung einsetzen.
Egal, welche Shell Sie in einem Terminal einsetzen, der Prompt sieht wahrscheinlich in den allermeisten Fällen sehr trist aus und stellt lediglich grundlegende Informationen zur Verfügung – zumeist nur, in welchen Verzeichnis Sie sich gerade befinden. Zum Glück bieten die allermeisten Shells jedoch eine Funktion an, um den Prompt anzupassen. Das machen sich Prompt-Engines wie beispielsweise Powerline oder Oh-My-Zsh zu Nutze. In der Regel findet dies durch den Einsatz unterschiedlicher Themes statt, die die Umgebung optisch verschönern.
Des Weiteren können diese Engines aber auch nützliche Informationen innerhalb der Eingabezeile darstellen. Diese werden dann meist in unterschiedliche Segmente unterteilt, was Ihnen die Möglichkeit gibt, die jeweiligen Abschnitte mit den für Sie relevanten Informationen zu versehen. So können Sie im einfachsten Fall das Datum oder die Uhrzeit innerhalb eines Segments darstellen. Komplexere Konfigurationen erlauben das Einfügen nahezu beliebiger Daten. So visualisieren Sie beispielsweise innerhalb von Git-Verzeichnissen die Git-relevanten Informationen, wie etwa den Status des aktuellen Repositories, innerhalb eines Segments.
Theme-Engines und Nerd-Fonts
Mit Powerline [1] steht eine sehr mächtige Engine zur Anpassung nicht nur des Shell-Prompts zur Verfügung. Stattdessen kann die Software eine Vielzahl an unterschiedlichen Statuszeilen, so auch im Vim-Editor, anpassen. Oh-My-Zsh [2] ist ein beliebtes Konfigurationstool für die zsh und wurde bereits im Open-Source-Tipp 06/2022 besprochen [3]. In diesem Monat befassen wir uns mit der Software Oh-My-Posh [4], die ähnlich wie Oh-My-Zsh eine individuelle Anpassung des Shell-Prompts ermöglicht. Anders jedoch als bei Oh-My-Zsh funktioniert dies unabhängig davon, welche Shell Sie tatsächlich in Ihrer Umgebung einsetzen.
Wie bei den meisten anderen Prompt-Engines auch, ist die Nutzung von sogenannten Nerd-Fonts [5] in Kombination mit Oh-My-Posh ratsam. Nerd-Fonts erweitern den regulären Zeichensatz um eine Vielzahl von Icons, die Sie dann innerhalb der einzelnen Shell-Segmente einsetzen können. Oh-My-Posh empfiehlt den Einsatz von "Meslo LGM" [6], jedoch können Sie auch jeden anderen Font verwenden, solange dieser ausreichend Icons mit sich bringt. Die Installation des gewünschten Fonts kann manuell oder auch über Oh-My-Posh stattfinden – dazu später mehr.
Cross-Platform einsetzbar
Oh-My-Posh ist eine Cross-Platform-Software, sodass Sie diese sowohl unter Linux als auch macOS und Windows innerhalb der PowerShell einsetzen können. Unter macOS installieren Sie die Engine einfach mithilfe des homebrew-Paketmanagers:
brew install jandedobbeleer/oh-my-posh/oh-my-posh
Der Aufruf installiert sowohl das Tool Oh-My-Posh als auch die zur Verfügung stehenden Themes. Unter Linux laden Sie zuerst die Software und im Anschluss ein Archiv mit sämtlichen Themes herunter, das Sie im Anschluss auspacken:
sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
 
sudo chmod +x /usr/local/bin/oh-my-posh
 
mkdir ~/.poshthemes
 
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/ latest/download/themes.zip -O ~/.poshthemes/themes.zip
 
 unzip ~/.poshthemes/themes.zip -d
     ; ~/.poshthemes    
 
 chmod u+rw ~/.poshthemes/*.omp.*
            
rm ~/.poshthemes/themes.zip
Mit dem Default-Theme präsentiert Oh-My-Posh bereits einen ansprechenden Prompt.
Shell-Prompt aktivieren
Um nun Oh-My-Posh in der von Ihnen verwendeten Shell zu aktivieren, initialisieren Sie die Prompt-Engine in der Konfigurationsdatei der Shell. Setzen Sie beispielsweise Bash ein, fügen Sie die folgende Zeile in der Datei "~/.bashrc" ein:
eval "$(oh-my-posh init bash)"
Um die Änderungen zu aktivieren, starten Sie entweder eine neue Shell oder lesen die geänderte Konfigurationsdatei mit dem Kommando source ~/.bashrc erneut ein. Ähnlich gehen Sie vor, wenn Sie die zsh einsetzen. Natürlich ist in dem Fall die zsh als init-Argument zu übergeben. Eine komplette Übersicht, wie die jeweilige Konfiguration sämtlicher von Oh-My-Posh unterstützten Shells aussieht, finden Sie in der Dokumentation [7].
Das Tool Oh-My-Posh können Sie ebenfalls auch interaktiv aufrufen, um eine ganze Reihe an Konfigurationseinstellungen vorzunehmen. Möchten Sie beispielsweise einen Nerd-Font auf Ihrem System installieren, rufen Sie einfach das folgende Kommando auf:
oh-my-posh font install
In einem Drop-Down-Menü wählen Sie dann den gewünschten Font zum Download aus. Die Konfiguration in dem von Ihnen eingesetzten Terminal muss anschließend jedoch manuell erfolgen.
Theme auswählen und anpassen
Um nun das Aussehen des Prompts anzupassen, können Sie im ersten Schritt ein anderes Theme auswählen. Haben Sie die Designvorlagen im Verzeichnis "~/ .poshthemes/" gespeichert, wählen Sie bei der Initialisierung der Prompt-Engine innerhalb der jeweiligen Konfigurationsdatei der eingesetzten Shell das gewünschte Theme wie folgt aus:
eval "$(oh-my-posh init bash --config ~/blue-owl.omp.json)"
Nach dem Einlesen der Änderungen wird das neue Theme aktiviert. Die Konfiguration der Designs basiert auf Blöcken, in denen Sie eines oder mehrere Segmente definieren. Innerhalb der Segmente stellen Sie dann die gewünschten Informationen zur Verfügung. Standardmäßig kommt hierfür JSON zum Einsatz. Sie können die Definition der Themes aber wahlweise auch in YAML oder TOML schreiben.
Um ein Theme anzupassen, können Sie eine Kopie der zugehörigen Datei erzeugen und die gewünschten Modifikationen an der Kopie vornehmen. Alternativ hierzu haben Sie auch die Möglichkeit, das Tool Oh-My-Posh mit der Option "config export" aufzurufen, um die Kopie des aktuellen Themes zu erzeugen:
# oh-my-posh config export --output ~/.my-theme.omp.json
Innerhalb der Kopie passen Sie dann bestehende Blöcke und Segmente an oder fügen neue hinzu. Jeder Block enthält ein oder mehrere Segmente. In der Konfiguration des Blocks definieren Sie dann beispielsweise, ob Segmente rechts oder links innerhalb eines Terminals erscheinen oder innerhalb einer einzelnen oder über mehrere Zeilen verteilt sein sollen. In einem Segment bestimmen Sie anschließend die Eigenschaften des Segments. Im einfachsten Fall ist dies die Farbe, in der das Segment dargestellt werden soll.
Die Segmente können unterschiedliche Typen aufweisen, womit Sie die Logik, die innerhalb von einem Segment zum Einsatz kommen soll, definieren. So existiert beispielsweise der Typ git, um gewisse Statusinformationen zu einem Git-Repository innerhalb eines Segments anzuzeigen. Mithilfe von Templates und typspezifischen Optionen legen Sie dann genau fest, wie das Segment im Detail aussieht. Die Dokumentation listet alle verfügbaren Segmenttypen sowie die hierfür verfügbaren Optionen zur Konfiguration auf. Unter [8] finden Sie zudem ein Beispiel für die Git-Integration.
Fazit
Die Arbeit auf der Kommandozeile kann zumindest optisch mit der Zeit langweilig werden. Auch zeigen sich die Prompts nicht immer besonders auskunftsfreudig. Mit Oh-My-Posh steht eine umfangreiche Prompt-Engine für unterschiedliche Plattformen und eine Vielzahl an Shells zur Verfügung. Durch den Einsatz von Themes lassen sich sehr schnell ansprechende Ergebnisse erzielen. Die Anpassung der Designs gestaltet sich dabei erfreulich einfach.
(dr)
Link-Codes
[2]  Oh-My-Zsh: https://ohmyz.sh/
[4] Oh-My-Posh: https://ohmyposh.dev/