kitty

Aus wiki.archlinux.de
Version vom 24. Mai 2023, 18:23 Uhr von Dirk (Diskussion | Beiträge) (Verschiebung community -> extra)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Kitty mit Sichtbarer Powerline und mehreren Tilingfenstern

kitty ist ein moderner, hochgradig konfigurierbarer Terminal-Emulator, der einen starken Fokus auf Skriptbarkeit und Tastaturbedienung legt. Zu seinen besonderen Funktionen zählen unter anderem ein integriertes Tab- und Tiling-System, sowie ein mächtiges Plugin-System namens „Kittens“. Das Rendern der Inhalte lagert kitty per OpenGL an die Grafikkarte aus.

Installation

kitty ist als kitty in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S kitty

Wenn man mit Kitty per SSH auf andere Hosts zugreifen will, sollte man auf diesen das Paket kitty-terminfo installieren, da man ansonsten Probleme mit der Darstellung im Terminal bekommt.

Layouts

Die Integrierte Tiling-Funkt von kitty unterstützt mehrere Layouts die standardmäßig mittels der Tastenkombination Strg + ⇧ Shift + L durchgeschaltet werden können. Zudem besteht die Möglichkeit, programmatisch Layouts auszuwählen.

  • fat – Eines oder mehrere Tilingfenster werden im oberen Bereich angezeigt. Weitere Fenster werden darunter in klein angezeigt.
  • grid – Alle Tilingfenster werden in einem Gittermuster sortiert.
  • horizontal – Alle Tilingfenster werden nebeneinander angezeigt.
  • stack – Es wird nur ein einziges Tilingfenster zur Zeit angezeigt.
  • tall – Eines oder mehrere Tilingfenster werden linksseitig angezeigt. Weitere Fenster werden rechts daneben in klein angezeigt.
  • vertical – Alle Tilingfenster werden untereinander angezeigt.

Für die Größenänderung von Tilingfenstern verfügt kitty über einen Größenänderungsmodus. Hierzu wechselt man in das Tilingfinter das man verändern möchte, und startet diesen standardmäßig mittels Strg + ⇧ Shift + R. Die Verwendung ist selbsterklärend.

Tastenkürzel

Um Tasten zu referenzieren unterstützt kitty sowohl GLFW keys (ohne den Prefix GLFW_KEY_) als auch XKB keys (ohne den Prefix XKB_KEY_). Auch können die reinen Keycodes (native_code) verwendet werden

Die Codes können mittels kitty --debug-keyboard angezeigt werden. Hierzu führt man den Befehl aus, und drückt dann eine beliebige Taste.

kitty --debug-keyboard
Press xkb_keycode: 0x26 clean_sym: a composed_sym: a text: a mods: none glfw_key: 65 (A) xkb_key: 97 (a)
on_key_input: glfw key: 65 native_code: 0x61 action: PRESS mods: 0x0 text: 'a' state: 0 sent text to child
Release xkb_keycode: 0x26 clean_sym: a mods: none glfw_key: 65 (A) xkb_key: 97 (a)
on_key_input: glfw key: 65 native_code: 0x61 action: RELEASE mods: 0x0 text:  state: 0 ignoring as keyboard mode does not allow release events

Die ersten beiden Zeilen sind das Drücken der Taste (hier A), die beiden letzten Zeilen das Loslassen der Taste. Folgende Angaben können für A in diesem Fall verwendet werden.

  • 0x61 (native_code)
  • a (XKB)
  • A (GLFW)

Es wird seitens der Entwickler empfohlen, nach Möglichkeit immer die GLFW-Angaben zu benutzen, und andere Angaben nur zu verwenden, wenn kein GLFW-Code existiert.

kitty_mod

Alle Tastenkürzel werden mit einer speziellen Kombination verwendet, dem kitty Modifier (kitty_mod). Es ist ratsam, eigene Tastenkürzel ebenfalls nur mit kitty_mod zu verwenden. Standardmäßig ist der kitty Modifier die Tastenkombionation Strg + ⇧ Shift. kitty_mod ist mittels der gleichnamigen Konfigurationsoption einstellbar. Es können alle Modifier-Tasten verendet werden. Die Taste ⊞ Super funktioniert leider nicht, da sie kein Modifier ist.

Eigene Tastenkürzel

Tastenkürzel werden in der Konfigurationsdatei mittel map erstellt. Es gibt diverse mögliche Aktionen für das Drücken der Kombinationen. Hier können aus Platzgründen nicht alle Optionen beschrieben werden.

map kitty_mod+F1 launch man kitty
map kitty_mod+F2 new_tab man kitty
map kitty_mod+F3 combine : goto_layout tall : launch vim : send_text normal i

Standardmäßig ist kitty_mod Strg + ⇧ Shift. Wenn man nun also Strg + ⇧ Shift + F1 drückt, wird die Manpage von kitty in einem neuen Tiling-Fenster angezeigt. Beim drücken von Strg + ⇧ Shift + F2 wird die Manpage in einem neuen Tab angezeigt. Und wenn man Strg + ⇧ Shift + F3 drückt, wird ein Kombiniertes Kommando ausgeführt: Zuerst wird in das tall-Layout gewechselt, dann wird in einem neuen Tiling-Fenster Vim gestartet und es wird an dieses Fenster gesendet, dass die Taste I gedrückt wurde, um Vim in den Bearbeitungsmodus zu schalten.

Konfiguration

Standardmäßig nutzt kitty die integrierte Konfiguration, die bereits sehr gut definiert und leicht zu merken ist. Einige Tastenkombinationen sind auf nicht-QWERTY-Layouts umständlicher zu erreichen.

Um die Konfiguration zu bearbeiten, kann man innerhalb von kitty standardmäßig mittels Strg + Alt + F2 die Konfigurationsdatei öffnen. Sofern sie noch nicht existiert, wird sie in ~/.config/kitty/kitty.conf erstellt. Dinge die man nicht konfigurieren möchte, können weg gelassen, bzw. gelöscht werden. Später kann man sich Konfigurationsoptionen, die von der Standardkonfiguration abweichen, mittels kitty --debug-config ausgeben lassen.

Zudem besteht die Möglichkeit, mittels kitty --config DATEI eine andere Konfiguration zu laden, oder mittels der Angabe mehrerer Dateinamen die Konfigurationen zu verknüpfen, spätere Einstellungen überschreiben dabei frühere Einstellungen.

Beispiele

Aufgrund des Umfangs der Konfiguierbarkeit werden in diesem Abschnitt nur einige Punkte erwähnt.

Schriftart einstellen

kitty erlaubt die Unterscheidung von vier Schrifttypen (normale Schrift, fett, kursiv, und fett-kursiv). Verwendbare Schriften und deren Namen kann man sich mittels kitty list-fonts anzeigen lassen, die Einstellung erfolgt mit vier Einträgen, in denen die entsprechenden Namen hinterlegt werden.

font_family       Operator Mono Book
bold_font         DejaVu Sans Mono Bold
italic_font       Operator Mono Book Italic
bold_italic_font  Source Code Pro Bold Italic

Die verwendeten Schriftstile müssen nicht von derselben Schriftart bereitgestellt werden.

Zudem besteht die Möglichkeit, für Schriftzeichen eines bestimmten „Wertes“ (die so genannten Unicode Points) oder eines Bereichs von Werten eine andere Schriftart zuzuweisen. Einsatzzweck wäre zum Beispiel eine Symbolschriftart für Emojis oder spezielle Textsymbole.

symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols

Mit diesem Beispiel wird den Unicode-Points E0A0 bis E0A2 sowie E0B0 bis E0B3 die Schriftart PowerlineSymbols zugewiesen. Die „Powerline“ ist eine bestimmte Art der Anzeige von Tabs.

Fensterlayout

Die Fenstergröße von kitty kann in Pixeln und in Spalten/Zeilen angegeben werden. Auch besteht die Möglichkeit, dass die Fenstergröße gespeichert, und für neue Fenster wiederverwendet wird.

remember_window_size   no
initial_window_width   108c
initial_window_height  32c
resize_debounce_time   0
resize_in_steps        yes

Diese Konfiguration bewirkt, dass neue kitty-Fenster immer gleich groß sind, nämlich 108 Spalten und 32 Zeilen, wenn die Angabe c weg gelassen wird, werden die Werte als Pixelangaben interpretiert. Zudem wird das Neuzeichnen des Fensters ohne Verzögerung ausgeführt, was zu einer flüssigeren Gesamtdarstellung führt. Auch wird das Fenster nicht in Pixeln in der Größe verändert, sondern immer in Schritten die so groß sind wie eine Zelle (ein Zeichen), was zu einer konsistenteren Anzeige führt.

Die Powerline von kitty zeigt mehrere Tabs an
Das Unicode-Kitten listet auswählbare Emojis auf
Ausschnitt aus dem Farbtest von msgcat

Tabs

Die Tab-Leiste wird standardmäßig ab zwei Tabs angezeigt, und befindet sich am unteren Fensterrand. Die Tabs haben einen Ein/ und Auslaufenden Grafikeffekt durch entsprechende ASCII-Zeichen, und Zeigen den Titel an.

tab_bar_min_tabs 1
tab_bar_style powerline
tab_title_template {index}: {title}

Durch diese Konfiguration wird die Tabliste als „Powerline“ dargestellt, zudem wird sie immer angezeigt, und die Tabs haben vor dem Titel noch die ID stehen.

Farben

kitty unterstützt 256 Farben, Durchnummeriert color0 bis color255. Die Farben color0 bis color15 sind dabei die Standard-Terminalfarben jeweils in einer dunklen und hellen Variante (color0 und color8, color1 und color9, color2 und color10, etc.). Zudem können neben Vorder- und Hintergrund für verschiedene Dinge noch andere Farben vergeben werden.

Farben können sowohl als Hexadezimalwerte (#RRGGBB) als auch per RGB-Notation (rgb:rrr/gggg/bbbb) angegeben werden.

background            #2e3436
foreground            #d3d7cf
selection_background  #d3d7cf
selection_foreground  #2e3436

Hierdurch wird für normalen Text ein dunkelgrauer Hintergrund gesetzt, der Text selbst ist hellgrau. Sobald der Text markiert wird, werden die Farben durch entsprechendes setzen „invertiert“.

Sessions

Sessions erlauben eine Standardkonfiguration an Tabs und Tilingfenstern zu laden, mit der kitty startet. Die Session kann entweder mittels der Konfigurationsoption startup_session DATEIPFAD definiert werden, oder mittels kitty --session DATEIPFAD übergeben werden. Session-Dateien selbst sind einfache Scripte.

session.conf
new_tab nummer eins
  launch htop
  launch bash
  launch man kitty

new_tab 😀
  layout tall
  launch vim
  launch bash

Hierdurch wird kitty mit zwei Tabs gestartet. Das erste Tab heißt „nummer eins“ und beinhaltet htop, bash, und die Manpage von kitty in eigenen Tilingfenstern. Das zweite Tab hat als Titel ein Emoji, verwendet das „tall“-Layout (siehe dort), und zeigt vim und die bash.

Weblinks