Cover Image

Letzte Woche habe ich einen Podcast über golang und moderne Kommandozeilen Applikationen von Charm gehört. Falls ihr das noch nicht gesehen habt, holt dies nach. Die Kommandozeile kann sehr viel beeindruckender sein als wir bisher gewohnt sind. Das Kommandozeilen so aussehen wie vor 30 Jahren liegt an diversen Dingen. Im Podcast wurde der Terminal Emulator Kitty sehr gelobt. Da der Terminal Emulator zudem noch plattformunabhängig ist, musste ich diesen einfach ausprobieren. Ich suche schon eine Weile eine Lösung die auf meinem Firmen MacBook, sowie auf meinen Linux Rechnern gleich funktioniert. Kitty gibt es sowohl für Linux als auch für MacOS. Windows ist mir hier egal.

Installation

In meinem Arch Linux war die Installation denkbar einfach. Kitty ist als Paket gepflegt und damit über pacman installierbar.

sudo pacman -S kitty

Auf dem Mac konnte ich über Homebrew genauso einfach die Installation durchführen.

brew install kitty

Erster Eindruck

Der erste Eindruck von Kitty war interessant. Das Terminal fühlt sich sehr schnell an. Das kommt sicherlich durch die GPU Beschleunigung. Schriften sehen erstaunlich scharf aus. Auf meinem Linux Rechner sehe ich rein subjektiv betrachtet einen Unterschied. Alles wirkt wie auf dem Retina Display meines MacBooks. Laut Benchmarks soll Kitty auch deutlich weniger die CPU beanspruchen, was sich gerade beim scrollen in längeren Bildschirmausgaben bemerkbar machen kann. Das kann ich soweit erst mal bestätigen. Alles flott uns schick. Was mich dann aber wunderte war, dass ein Rechtsklick einfach nichts auslöste. Das ist aber so gewollt. Kitty setzt konsequent auf die Tastaturnutzung. Es gibt aber trotzdem Mausunterstützung. Diese ist aber überwiegend gedacht um URLs in Texten im Browser öffnen. Auch Tabs werden unterstützt und lassen sich per Maus wechseln. Allerdings geht auch dies schneller über die Tastatur. So wie fast alles einfach schneller über die Tastatur funktioniert, wenn man die Tastenkürzel im Muskelgedächtnis hat.

Fenster / Layouts

Wie jeder moderne Terminal Emulator können in einem Tab mehrere Fenster geöffnet werden. Kitty ordnet die Fenster dann entsprechen, wie bei einem Tiling Window Manager, automatisch an. Die Art, wie die Fenster angeordnet werden, lässt sich über die Konfiguration anpassen. Generell lässt sich so ziemlich alles über die Konfiguration anpassen. Darauf gehen wir aber gleich ein. Zurück zur Fensteranordnung. Die Anordnung lässt schnell über Layouts anpassen. Dazu kann man einfach Strg + Umschalt + l drücken und damit das Layout ändern, bzw. durch mehrfaches drücken der Tastenkombination entsprechend durchwechseln.

Verschiedene Fenster über Layouts angeordnet

Fenster lassen sich natürlich auch über die Tastatur in der Größe anpassen oder in der Position (innerhalb des aktuellen Layouts) verschieben.

Konfiguration

Kitty wird streng über die Datei ~/.config/kitty/kitty.conf konfiguriert. Sollte die Datei bei euch nicht nach der Installation automatisch vorhanden sein, so kann man diese manuell anlegen.

Eine Vorlage mit entsprechenden Hilfetexten findet man bei Arch Linux unter /usr/share/doc/kitty/kitty.conf.

Ein man kitty hilft enorm um alle wichtigen Tastenkürzel zu lernen.

Über man 5 kitty.conf bekommt man auch eine Anleitung, was in der Konfiguration angepasst werden kann.

Da ich ja Kitty unter Linux und MacOS nutzen möchte, da aber z.B. unterschiedliche Tastaturen im Einsatz sind, habe ich eine Möglichkeit gesucht um die Konfiguration sinnvoll für beide Betriebssysteme anzulegen.

Dazu habe ich dann folgende Lösung gefunden. Ich habe alle Dinge die auf beiden Systemen liegen in eine Datei _general.conf gepackt. Die Konfigurationen, die speziell nur für Linux oder MacOS gelten sollten habe ich den Dateien _linux.conf und _darwin.conf abgelegt.

/home/cmuench/.config/kitty
├── _darwin.conf
├── _general.conf
├── _linux.conf
└── kitty.conf

In der jeweiligen kitty.conf auf dem entsprechenden Betriebssystem habe ich dann die Möglichkeit genutzt die Dateien zu inkludieren.

Linux

include _general.conf
include _linux.conf

MacOS

include _general.conf
include _darwin.conf

Um die Konfiguration überall aktuell zu halten, nutze ich schon sehr lange yadm. Das klappt auch mit der Kitty Konfiguration super gut.

Besonders gut machen sich die Nerd Fonts in der Kommandozeile.

Unter Linux musste ich ein wenig suchen, bis ich den korrekten Namen des Font für die Konfiguration gefunden hatte. Am Ende sorgte ein font_family MesloLGS NF für die Optik aus dem Bildschirmfoto.

Falls dich meine Konfiguration genauer interessiert, habe ich diese in der Box ganz am Ende des Blog-Posts verlinkt.

Sonstige tolle Dinge

Kitty hat einige Dinge an Bord die gewohnte Terminal Emulatoren nicht bieten. Spezielle Funktionen stehen über Plugins, sogenannte Kittens bereit. Hier ein paar ausgewählte Funktionen.

Emojis

So werden Emojis direkt unterstützt. Über die Tastenkombination Strg+Umschalt+u (das “u” merke ich mir mit “Unicode”), öffnet sich ein Emoji Browser direkt in der Konsole. Das ausgewählte Zeichen wird dann direkt an der Cursor-Position eingefügt.

Emoji Browser direkt in der Konsole

Bilder direkt auf dem Terminal

Um Bilder direkt auf dem Terminal auszugeben, muss ImageMagick installiert sein. Das lässt sich aber leicht installieren.

Danach kann man das icat kitten aufrufen.

kitty +kitten icat <dateiname>

Praktisch ist hier ein Alias wie:

alias icat='kitty +kitten icat'

In Aktion kann man so z.B. ein altes Magento Logo schnell mal auf dem Terminal ausgeben.

Magento Logo über icat in der Konsole anzeigen

Kitty definiert hier sogat mit dem Terminal graphics protocol einen eigene Spezifikation um mit Grafiken auf dem Terminal umzugehen.

Themes

Die Farben des Terminals können natürlich in Kitty dem eigenen Geschmack entsprechend angepasst werden. Einfacher geht es, wenn man den eingebauten Theme Browser nutzt.

kitty +kitten themes

Ich selbst habe mich für den dunklen Galaxy Theme entschieden. In Präsentationen ist es manchmal aber besser einen hellen Themen zu verwenden. Praktischerweise kann man die Theme-Auswahl auch wieder auf ein Tastenkürzel legen.

In meinem Fall habe ich die Taten F9 und F10 damit belegt.

map F9 launch kitty +kitten themes --reload-in=all Material
map F10 launch kitty +kitten themes --reload-in=all Galaxy

Auch die Schrift kann über die Tastatur größer und kleiner eingestellt werden.

Dazu habe ich mir noch Tastenkürzel angelegt die das ebenfalls etwas beschleunigen.

map ctrl+shift+0 change_font_size all 0
map ctrl+shift+9 change_font_size all +10%

SSH

Loggt man sich über Kitty auf einem externen Rechner via SSH ein, so kann man z.B. eine Datei auf den lokalen Rechner direkt aus dem Terminal laden.

Getestet werden kann dies über ein ls --hyperlink=auto auf dem Remote-Rechner.

Klickt man dann auf eine Datei, öffnet Kitty ein Fenster im Terminal, dass es ermöglicht die ausgewählte Datei über einen auf dem lokalen Rechner befindlichen Editor zu bearbeiten, oder diese herunterzuladen.

SSH Datei Dialog

Skripten

Kitty lässt sich auch “von außen” über Skripte vielfältig anpassen und automatisieren.

https://sw.kovidgoyal.net/kitty/remote-control/