Oh My Zsh im neuen Windows Terminal


Zsh ist eines der beliebtesten Terminals auf Linux-Systemen. Auf Windows kann Zsh leider nicht direkt ausgeführt werden, sondern muss in einer Linux-Umgebung gestartet werden. Microsoft hat erst vor kurzem ein neues Terminal vorgestellt. Bis dies jedoch standardmäßig verfügbar ist bedarf es einiger Tricks für den produktiven Einsatz. In diesem Artikel werde ich beschreiben wie man Zsh auf Windows 10 lauffähig macht und wie man mit Oh My Zsh die Funktionalität von Zsh erheblich verbessert.

Terminal selber bauen

Zu aller Erst sollte das neue Terminal heruntergeladen werden. Das Git-Repo findet ihr hier. Falls ihr das neue Terminal bereits installiert habt könnt ihr diesen Schritt überspringen. Ebenso ist es möglich Ubuntu auch ohne das neue Terminal zu installieren. Falls es dies euch nicht wichtig ist könnt ihr diesen Schritt auch überspringen.

git clone https://github.com/microsoft/terminal.git

Nachdem ihr das Git-Repo kopiert habt müsst ihr zusätzlich noch die Submodule laden.

git submodule update --init --recursive

Das Projekt muss in Visual Studio gebaut werden. Daher solltet ihr euch die neueste Visual Studio Version herunterladen. Die Community-Edition gibt es kostenlos zum Download. Die erforderlichen Pakete bei der Installation sind „Desktop Development with C++“ und „Universal Windows Platform Development“. Nachdem ihr das Projekt in Visual Studio geöffnet habt müsst ihr unter Umständen noch weitere Pakete laden. Wichtig ist auch das Windows SDK in einer aktuellen Version zu installieren. Ein Hinweis darauf sollte jedoch in VS angezeigt werden. Man sollte sich dabei Zeit nehmen. Das ganze kann mehrere Minuten dauern. Bevor ihr mit dem Bauen beginnen könnt solltet ihr sicher sein, dass die Platform mit eurem System übereinstimmt. Für die meisten sollte x64 die richtige Wahl sein. Hierzu klickt ihr mit einem Rechtsklick auf die Projektmappe und wählt „Konfiguration-Manager“.

Als Platform sollte x64 oder x86 ausgewählt sein.

Im aktuellen Build gibt es zusätzlich ein Problem mit dem nur Deutsche Betriebssysteme zu kämpfen haben. Anstatt den befehl echo f | xcopy muss der Befehl echo d | xcopy heißen. In der Datei src/cppwinrt.build.post.props muss der Befehl daher ausgetauscht werden. Im Anschluss baut ihr das CascadiaPackage. Um das Package auszuführen ist die neueste Windows Version 1903 nötig. Unter Umständen müsst ihr euer System manuell updaten. Um dieses Tutorial zu schreiben habe ich sogar auf die Preview-Builds zurück greifen müssen.

Ubuntu installieren

Bevor eine Linux-Distribution installiert werden kann muss das „Windows Subsystem for Linux“ installiert werden. Das ganze erfordert nur einen Befehl und unter Umständen einen Neustart des Systems.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Sobald das Feature installiert ist kann ein Linux-System direkt aus dem Microsoft Store installiert werden. Die Installation von Ubuntu sollte dabei kein Problem darstellen. Wer möchte kann natürlich auch openSUSE, Debian oder eine andere Distribution wählen.

Ubuntu kann über den Microsoft Store bezogen werden

Ubuntu muss im Anschluss noch im Terminal registriert werden. Aktuell geschieht das über eine Json-Datei. Hierzu klickt ihr auf Settings (Strg+,) und kopiert den folgenden Absatz in die Profiles-Sektion.

	{
            "guid": "{23596f84-c3ea-4cd8-a7df-550dce37bcd0}",
            "name": "Ubuntu",
            "colorscheme": "Vintage",
            "historySize": 9001,
            "snapOnInput": true,
            "cursorColor": "#FFFFFF",
            "cursorShape": "bar",
            "commandline": "ubuntu.exe",
            "fontFace": "Consolas",
            "fontSize": 11,
            "acrylicOpacity": 0.75,
            "useAcrylic": true,
            "closeOnExit": false,
            "padding": "0, 0, 0, 0"
       }

Oh My Zsh installieren

Als nächstes startet ihr euer Linux-System und folgt den Anweisungen für die erste Anmeldung. Zsh könnt ihr dann mit apt installieren. Für Oh My Zsh wird zudem git und curl benötigt. Ach ja, vim wäre vielleicht auch nicht schlecht um die Shell später zu konfigurieren.

apt-get install zsh git curl vim

Um zsh als Shell einzurichten führ ihr folgenden Befehl aus

which zsh

Nach einem Neustart sollte zsh dann automatisch starten. Ihr könnt daraufhin Oh My Zsh installieren.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Möchtet ihr das Erscheinungsbild von zsh verändern könnt ihr das über die zur Verfügung gestellten Themes machen. Diese findet ihr hier. Um ein Theme einzurichten editiert ihr die Datei .zshrc aus eurem Home-Verzeichnis mit einem Editor wie etwa Vim. Der Eintrag nach dem ihr suchen müsst ist ZSH_THEME="robbyrussell". Ändert diesen mit dem Namen eures gewünschten Themes.

Powerline-Fonts installieren

Einige Themes wie etwa agnoster benutzen die Powerline-Fonts. In Linux lassen diese sich ohne Probleme installieren. Da das Terminal jedoch über das Linux Subsystem läuft müssen die Schriftarten unter Windows installiert werden. Ladet dazu das Powerline-Repo wahlweise über git oder als Zip-Paket von Windows aus herunter und extrahiert die Dateien. Die Schriftarten befinden sich in den einzelnen Ordnern. Ihr könnt jedoch auch alle gleichzeitig über die Powershell installieren. Begebt euch dazu in das Terminal und führt folgenden Befehl als Administrator aus.

Set-ExecutionPolicy Bypass

Das erlaubt es euch den mitgelieferten Powershell-Script install.ps1 auszuführen. Nachdem ihr das gemacht habt sollten alle Schriftarten der Reihe nach installiert werden. Eine dieser Schriftarten muss dann nur noch in der Terminal-Konfiguration gesetzt werden.

"fontFace": "Roboto Mono for Powerline",

Farbschema ändern

Das war es dann auch schon. Naja, fast. Die Standardfarben sind ziemlich unglücklich gewählt und kaum zu lesen. Glücklicherweise lassen sich die Farben des Terminals ändern. Dies geschieht über die Konfigurationsdatei. Eine Inspiration für die Farbgebung inklusive RGB-Values kann etwa Solarized sein. Um Farben zu ändern muss ein neues Farbprofil in der Konfigurationsdatei eingefügt und als „colorscheme“ im Ubuntu-Profil angegeben werden. Ein original Ubuntu-Schema habe ich hier gefunden. Es ist von Mehul Mohan.

    {
      "name": "UbuntuLegit",
      "foreground": "#EEEEEE",
      "background": "#2C001E",
      "colors": [
        "#4E9A06",
        "#CC0000",
        "#300A24",
        "#C4A000",
        "#3465A4",
        "#75507B",
        "#06989A",
        "#D3D7CF",
        "#555753",
        "#EF2929",
        "#8AE234",
        "#FCE94F",
        "#729FCF",
        "#AD7FA8",
        "#34E2E2",
        "#EEEEEE"
      ]
    }

Eine weitere Farbpalette wird über die dircolors bestimmt. Diese bestimmen die Farbwahl bei Befehlen wie ls. Im Internet lassen sich viele solcher Schemata finden. Eine Sammlung ist etwa dircolors-solarized. Das Schema wird durch folgenden Befehl geladen.

eval `dircolors ~/dircolors-solarized/dircolors.256dark`

Damit dies bei jedem Start ebenfalls geschieht sollte der oben gezeigte Befehl in die .zshrc geschrieben werden. Euer Terminal sollte anschließend in jeder Situation ein hübsches Farbschema haben.