
Inhaltsverzeichnis
Da ich sehr viel mit der Kommandozeile arbeite, ist ein Terminal-Emulator für mich ein wichtiges Tool im Alltag. Über die Jahren habe ich einige Emulatoren getestet. So habe ich z.B. iTerm2, Kitty, Alacritty und Wezterm im Einsatz gehabt. Nun bin ich über Ghostty gestolpert. Man konnte das Ghostty Terminal eigentlich auch nicht übersehen da sehr viele Leute darüber berichten. Da stellt sich die Frage warum das so ist? Ist es einfach nur gehypt oder einfach ein Terminal was für viele einfach eine Lücke schließt, die die anderen Terminals vielleicht nicht konnten?
Grundprinzipien des Terminals
Ghostty wurde von Mitchell Hashimoto, dem Gründer von Hashicorp, entwickelt. Die Vision hinter Ghostty ist es, einen Terminal-Emulator zu schaffen, der nicht nur schnell und funktional ist, sondern auch über eine native Benutzeroberfläche verfügt und plattformübergreifend funktioniert. Dies sind genau die Kriterien, die ich beim Wechsel zwischen MacOS und Linux benötige – eine Konfiguration, die so weit wie möglich über beide Systeme hinweg verwendet werden kann.
Das passt seht gut zu der Idee von Mitchell Hashimoto, dass der Editor auch ohne eine Anpassung der Grundfunktion in der jeweiligen Plattform schon gut funktionieren soll. Ob das für meine Konfiguration auch gilt sehen wir gleich.
Ghostty wurde in der Programmiersprache Zig geschrieben die heutzutage auch als konkurrierend mit Rust angesehen wird. Zig erlaubt es sehr performante Anwendungen zu erstellen.
Wichtige Funktionen von Ghostty
Hier sind die herausragenden Merkmale, die Ghostty zu einer hervorragenden Wahl machen:
Standards-Konformität
Ghostty legt großen Wert auf die Einhaltung von Standards, was bedeutet, dass es mit bestehenden Shells und Software kompatibel ist. Dies ist besonders wichtig für eine konsistente Benutzererfahrung.
Hohe Performance
Ghostty bietet eine beeindruckende Geschwindigkeit bei der Ausführung von Befehlen. Die Verwendung einer Multi-Renderer-Architektur, die OpenGL auf Linux und Metal auf MacOS nutzt, sorgt für eine flüssige Darstellung und eine hohe Bildrate, selbst unter hoher Belastung.
Das Rendern von Bildern direkt im Terminal ist möglich da Ghostty die gängige Protokolle unterstützt.
Bei Kitty kann man direkt über das eingebaute kitty +kitten icat <pfad>
ein Bild ausgeben. Eine eingebaute Funktion scheint es bei Ghostty nicht zu geben. Man kann aber über ein externe Tools wie chafa.
Wenn ihr parallel noch Kitty installiert habt, funktioniert auch der oben gezeigte Aufruf da Ghostty auch das von Kitty genutzte Protokoll unterstützt.
Erweiterte Anpassungsfähigkeit
Benutzer können grundlegende Änderungen vornehmen, wie Schriftarten und Hintergrundfarben anpassen, um ihre Arbeitsumgebung zu personalisieren.
Die Optik des Terminals kann über vorgefertigte Themes leicht angepasst werden. Themes gibt es Dunkel und Hell. Ihr könnt auch einen dunklen und hellen Theme konfigurieren, der dann je nach Systemeinstellung des Betriebssystem gewechselt wird.
Über ghostty +list-themes
bekommt man eine nette interaktive Vorschau zu sehen.
Wichtig ist auch, dass man die Tastenkombinationen leicht anpassen kann. Hier hat jeder was anderes im Muskelgedächtnis.
Plattformunabhängigkeit und doch optimiert
Ghostty unterstützt Multi-Window, Tabbing und Splits. Dies erleichtert das gleichzeitige Arbeiten an mehreren Aufgaben und verbessert die Produktivität.
Ghostty ist als plattformübergreifende Lösung konzipiert, was bedeutet, dass es auf verschiedenen Betriebssystemen wie MacOS und Linux konsistent funktioniert.
Damit der Benutzer sich wohlfühlt versucht man möglichst die Bibliotheken der jeweiligen Plattform die für die UI-Entwicklung gängig sind zu nutzen. Auf dem Mac hat man eine native Mac-Anwendung, die mit SwiftUI entwickelt wurde und grundlegende Funktionen wie echte Fenster, Menüleisten und eine GUI für die Einstellungen bietet.
Unter Linux gibt es SSD Unterstützung für Wayland. X11 ist momentan nicht wirklich unterstützt. Dazu kann ich aber wenig sagen da ich inzwischen mit meinem Linux auf Wayland unterwegs bin. Es steht aber zumindest auch auf der Roadmap das (alte) X11 noch gut zu unterstützen. Für Linux setzt man auf GTK Adwaita. Das kommt aus der Gnome-Ecke. Ich selbst nutze KDE. Für KDE wurde jetzt aber mit dem Release 1.1 auch eine Verbesserung nachgeliefert, sodass das Aussehen der Anwendung für den Plasma Desktop optimiert wurde.
Für mich wichtig. Ghostty bietet direkt Tabs und das Splitten von Fenstern in der Anwendung an. Für Leute die Termux nutzen mag das nicht so wichtig sein.
Konfiguration zwischen MacOS und Linux teilen
Ein Grund für meinen Wechsel zu Ghostty war der Wunsch, eine ebenso leistungsstarke wie benutzerfreundliche Lösung zu finden, die mir ermöglicht, zwischen MacOS und Linux zu wechseln, ohne ständig meine Einstellungen anpassen zu müssen. In der Vergangenheit hatte ich viele Probleme mit den Escapesequenzen in anderen Emulatoren, die oft zu unerwünschten Verhaltensweisen führten. Ghostty hat mich mit seiner Klarheit und seiner durchdachten Benutzeroberfläche überzeugt.
Wie habe ich das für mich gelöst?
Die Konfiguration unter MacOS und Linux wird über die Datei ~/.config/ghostty/config
geladen.
Die meisten Einstellungen von Ghostty sind so gemacht, dass diese auf allen Systemen funktioniert oder falls nur für eine Plattform kompatible einfach auf der anderen Plattform ignoriert werden. Das bedeutet, dass man im Grunde nicht viel falsch konfigurieren kann.
Meine Grundkonfiguration sieht gerade (Stand 15.02.2025) so aus:
# -------------------------------------------
# APPEARANCE
# -------------------------------------------
# Themes
#theme = dark:Everblush,light:primary
#theme = Everblush
theme = Adventure
window-decoration=auto
window-width=120
window-height=40
window-padding-x = 10
window-padding-y = 20
window-padding-balance = true
window-inherit-font-size = true
window-colorspace = "display-p3"
window-theme = ghostty
window-save-state = always
cursor-style = block
cursor-style-blink = false
#background-opacity = 0.95
#unfocused-split-opacity = 0.8
background-blur-radius = 20
# Font configuration
font-family = JetBrainsMono Nerd Font
font-size = 16.0
# Clipboard
copy-on-select = clipboard
clipboard-read = allow
clipboard-write = allow
app-notifications=no-clipboard-copy
selection-foreground = 111111
selection-background = efefef
scrollback-limit = 50_000_000
# Shell
shell-integration = zsh
shell-integration-features = true
# If true, new windows and tabs will inherit the working directory of the
# previously focused window. If no window was previously focused,
# the default working directory will be used (the working-directory option).
window-inherit-working-directory = true
# -------------------------------------------
# KEYBINDINGS
# -------------------------------------------
# see: https://github.com/ghostty-org/ghostty/blob/main/src/input/key.zig
keybind = super+enter=toggle_split_zoom
# Split panes
keybind = alt+enter=new_split:down
keybind = alt+shift+enter=new_split:right
keybind = alt+shift+left=new_split:left
keybind = alt+shift+right=new_split:right
keybind = alt+shift+up=new_split:up
keybind = alt+shift+down=new_split:down
# Pane navigation
keybind = alt+left=goto_split:left
keybind = alt+right=goto_split:right
keybind = alt+up=goto_split:top
keybind = alt+down=goto_split:bottom
# Tab navigation
keybind = ctrl+shift+t=new_tab
keybind = shift+left=previous_tab
keybind = shift+right=next_tab
# Resize panes
keybind = ctrl+shift+left=resize_split:left,20
keybind = ctrl+shift+right=resize_split:right,20
keybind = ctrl+shift+up=resize_split:up,20
keybind = ctrl+shift+down=resize_split:down,20
# Font Size ("zoom")
#keybind = ctrl+kb_add=increase_font_size:1
#keybind = ctrl+kb_subtract=decrease_font_size:1
# Themes (currently not possible)
#keybind = command+alt+d=theme:Everblush
#keybind = command+alt+l=theme:primary
Wie ihr seht habe ich mit den Themes etwas herumexperimentiert. Der aktuelle Theme hat einen recht dunklen Hintergrund was ich als angenehmer empfinde. Ein heller Theme ist manchmal besser beim Präsentieren.
Bei den Tastenkombinationen habe ich versucht die von mir bewohnten für das Splitten von Fenstern oder auch den Wechsel zwischen Tabs beizubehalten.
Wich habe ich nun die Spezialkonfiguration für MacOS und Linux gelöst?
Dazu habe ich am Ende noch folgendes in die Konfiguration eingefügt:
# -------------------------------------------
# Other config files
# -------------------------------------------
config-file = ?linux
config-file = ?macos
Das Fragezeichen sagt hier, dass der Dateiname linux
und macos
optional sind. Ist die Datei da, wird diese geladen sonst nicht.
Ich versioniere meine Konfiguration mit yadm in GIT. Was ich nun mache ist, die Datei ~/.config/ghostty/config
in GIT zu packen.
Die Dateien für Linux und MacOS habe ich in einer ~/.config/ghostty/.gitignore
drin.
Die Dateien sind aber fast leer da wie vorher beschrieben fast alle Konfigurationen schon über die Grundkonfigurationsdatei abgedeckt sind.
Hier die meine Linux Konfiguration:
gtk-adwaita = false
gtk-tabs-location = bottom
Ich lege unter Linux meine Tab-Anzeige nach unten. Standard ist der von Gnome, dass die Tabs oben sind. Und ich schalte das Adwait ab da ich gerne die Darstellung von Plasma für KDE möchte.
Auf dem Mac habe ich nur ein wenig an der Optik geschraubt und folgendes einstellt:
background-opacity = 0.9
background-blur-radius = 10
Praktisch sind auch die eingebauten Kommandos um schnell mal die Konfiguration zu prüfen oder einfach zu sehen.
ghostty +list-fonts
zeigt die installierten Fonts mit den Namen an, sodass ihr nicht raten müsste wie diese heissen müssen. Das Problem kenne ich z.B. von Kitty.
ghostty +list-keybinds
zeigt alle aktuell konfigurierten Tastenkombinationen an.
ghostty +list-actions
zeigt die für die Tastenkombinationen verfügbaren Aktionen an. Besonders hilfreich ist es, wenn man diese mit ghostty +list-actions --docs
aufruft was dann auch gleich eine Beschreibung mitliefert.
ghostty +list-colors
die Farben des aktuellen Themen mit Name + Hexwert an.
Fazit
Abschließend lässt sich sagen, dass Ghostty nicht nur ein weiterer Terminal-Emulator ist; es macht mich effizienter auf allen meinen genutzten Plattformen. Ich muss mir weniger Gedanken über die jeweilige Plattform machen da alles sehr ähnlich und doch für das OS optimiert ist.
Dazu ist es sehr schnell durch das GPU Rendering.
Wichtig ist für mich auch, dass das Terminal stabil läuft. Und genau das macht Ghostty für mich. Es ist ein stabiles Werkzeug für den Alltag.
Die Frage ob Ghostty zurecht in aller Munde ist? Ja, denn es ist einfach, stabil, schnelle und kommt mit wenig Konfiguration aus.
Offizielle Ghostty Webseite: https://ghostty.org
Github: https://github.com/ghostty-org