3 Punkte von GN⁺ 2025-09-24 | 3 Kommentare | Auf WhatsApp teilen
  • libghostty ist als eingebettete Terminal-Emulator-Bibliothek in Entwicklung, die in jeder Anwendung genutzt werden kann
  • Die erste Komponente, libghostty-vt, ist eine abhängigkeitsfreie API, optimiert für Parsing und Zustandsverwaltung
  • Sie entstand, um die Komplexität der Terminal-Emulation und das Problem wiederholter Implementierungen zu lösen, und zielt auf Cross-Platform-Unterstützung sowie hohe Portabilität ab
  • Künftig ist eine Erweiterung um zusätzliche Bibliotheken für Tastatureingabeverarbeitung, GPU-Rendering und die Anbindung an verschiedene Frameworks geplant
  • Aktuell ist die Zig-API testbar, eine C-API soll bald veröffentlicht werden, und Nutzerfeedback ist ausdrücklich erwünscht

Einführung und Hintergrund der Entwicklung von libghostty

  • libghostty ist ein Bibliotheksprojekt, das dafür entwickelt wurde, moderne, schnelle und vollständige Terminal-Emulator-Funktionalität in jede Anwendung einzubetten
  • Derzeit implementieren zahlreiche Programme ihre eigenen Terminal-Emulatoren oder entwickeln nur stark eingeschränkte Terminal-Funktionen separat
  • Solche individuell entwickelten Terminal-Emulations-Implementierungen sind oft ad hoc und einmalige Codebasen, die Ausnahmefälle und Komplexität nicht ausreichend abdecken, wodurch häufig Probleme mit Unvollständigkeit, Bugs und Leistungseinbußen auftreten
  • Für die meisten Entwickler gehört die Implementierung von Terminal-Emulation nicht zum Kerngeschäft, daher besteht Bedarf an einer gemeinsamen, gut wiederverwendbaren Lösung
  • libghostty bietet eine Cross-Platform-C-API mit minimalen Abhängigkeiten, sodass verschiedene Anwendungen stabile und schnelle Terminal-Emulationsfunktionen nutzen können

libghostty-vt: der Start der ersten Bibliothek

  • libghostty-vt ist eine vollständig abhängkeitsfreie Bibliothek (nicht einmal libc ist erforderlich), die eine API für das Parsen von Terminal-Sequenzen und die Verwaltung des Terminalzustands wie Cursorposition, Stil und Zeilenumbrüche bereitstellt
  • Dieses Parsing von Terminal-Sequenzen ist nicht nur eine Kernfunktion von Terminal-Emulatoren, sondern auch für Websites mit einfacher Stil-Ausgabe unverzichtbar, etwa GitHub Actions oder Vercel-Build-Logs
  • Das Parsen von Terminal-Protokollen wirkt oberflächlich einfach, ist in der Umsetzung jedoch sehr schwierig; tatsächlich zeigen mehrere Implementierungen wie Jediterm Probleme bei der Verarbeitung bestimmter Sequenzen
  • Manche Entwickler begnügen sich damit, nur ANSI-Sequenzen grob zu parsen, doch wegen komplexer Stilbehandlung, etwa verschiedener RGB-Notation, und der Anforderung vollständiger Kompatibilität ist ein präziser Parser unerlässlich
  • libghostty-vt wurde aus dem bewährten Kern von Ghostty herausgelöst und bietet SIMD-optimiertes Parsing, hervorragende Unicode-Unterstützung, eine fortgeschrittene Speicherstruktur und breite Protokollkompatibilität (Kitty Graphics, Tmux Control Mode usw.)
  • Es wird als Zero-Dependency-C-API in einer einzelnen Datei bereitgestellt und lässt sich dadurch leicht in alle gängigen Sprachen und Umgebungen einbetten; zunächst werden macOS und Linux (x86_64, aarch64) unterstützt, später sollen Windows, Embedded-Systeme und WASM folgen
  • Damit lässt sich ein noch breiteres Zielspektrum als mit der Ghostty-GUI abdecken

libghostty mit langfristiger Erweiterung

  • Auf libghostty-vt sollen weitere Bibliotheken für Eingabeverarbeitung, etwa Tastatur-Encoding, GPU-Rendering (OpenGL, Metal), GTK-Widgets und Swift-Frameworks folgen
  • Diese funktionalen Erweiterungen werden modular aufgebaut, um Abhängigkeiten, Codegröße und Wartungskomplexität zu minimieren

Entwicklungsstand von libghostty-vt

  • Kürzlich wurde ein PR (Pull Request) gemergt, der libghostty-vt als Zig-Modul extern verfügbar macht; Zig-Entwickler können es sofort nutzen
  • Die C-API befindet sich derzeit in der Definitionsphase und soll bald zu Testzwecken bereitgestellt werden (die Kernlogik ist bereits seit Jahren in Ghostty als verifizierte Quelle im Einsatz)
  • Auch die Ghostty-App für macOS verwendet intern eine C-API, doch die aktuellen internen Header eignen sich nicht für die externe Veröffentlichung und allgemeine Nutzung, daher wird eine völlig neue C-API entworfen
  • libghostty wird versionsseitig getrennt von der Ghostty-Anwendung verwaltet, befindet sich aktuell in der Alpha-Phase und hofft auf eine schnelle Einführung sowie die Beteiligung von Entwicklern für Sprach-Bindings
  • Das erste getaggte Release wird innerhalb der nächsten 6 Monate angestrebt

Bitte um Nutzerfeedback

  • Da sich das Projekt derzeit in der API-Designphase befindet, sind Meinungen und Feedback realer Nutzer besonders wichtig
  • Neben Ghostty entwickeln bereits verschiedene Community-Mitglieder Projekte auf Basis von libghostty, und man hofft auf noch mehr Beteiligung
  • Wer Ideen oder Anforderungen zur Nutzung des Projekts hat, kann direkt über den Ghostty-Discord oder per E-Mail mit den Entwicklern kommunizieren
  • libghostty liegt aktuell als Alpha-Version vor, die API ist noch nicht stabil, aber die Kernlogik garantiert eine in der Praxis bewährte hohe Stabilität

Ausblick und Einfluss

  • Auf Grundlage der erreichten Stabilität der Ghostty-Anwendung kann nun das größere Ziel libghostty angegangen werden
  • Wenn libghostty in vielen verschiedenen Anwendungen breit eingesetzt wird, könnte es über die einzelne Ghostty-App hinaus eine deutlich größere ökosystemische Reichweite und Wirkung entfalten
  • Mit zunehmender Nutzung von libghostty kann auch Ghostty selbst an Funktionsumfang und Stabilität gewinnen
  • Ghostty und libghostty werden sich komplementär weiterentwickeln und voraussichtlich sowohl Entwicklern als auch Nutzern Vorteile bringen

3 Kommentare

 
yshrust 2025-09-24

Ich nutze es seit 1.0, und abgesehen davon, dass es kein Scrollen und keine Suche gibt, bin ich zufrieden, haha. Ich habe vorher iTerm benutzt, aber jetzt bin ich dabei geblieben.

 
GN⁺ 2025-09-24
Hacker-News-Kommentare
  • Es ist wirklich legendär, wie diese Person nach Unternehmensgründung, Börsengang und einem Verkauf in Milliardenhöhe wieder in die Welt des Codens zurückkehrt.

    • Ich finde, Hashimoto ist nicht nur ein Genie, sondern vor allem wegen seiner außergewöhnlichen Fähigkeit zur Abstraktion bewundernswert: Systeme und Interfaces extrem zu modularisieren und Verflechtungen auf ein Minimum zu reduzieren. Er wirkt wie jemand, der Rich Hickeys Philosophie von "Simple Made Easy" eins zu eins in die Praxis umsetzt. Seine Software fühlt sich so an, als wäre sie strukturell dazu bestimmt, korrekt zu funktionieren. Und ich habe Ghostty zum ersten Mal ausprobiert: In iTerm2 mit Zsh/Powerlevel10k hatte ich immer eine leichte Rendering-Verzögerung, aber in Ghostty reagiert alles nahezu sofort.

    • Einerseits bin ich wirklich neidisch, andererseits klingt das wie ein Traumleben. Nach dem Erreichen von Wohlstand weiter kreativ zu arbeiten, nur um des Projekts selbst willen, in einer Situation, in der man bei der Qualität keine Kompromisse für Geld machen muss. Das erinnert mich an ein altes Zitat von Knuth.

      Tausende Informatiker frei tun zu lassen, was sie wirklich tun wollen, treibt den Fortschritt der Wissenschaft voran.

      Tatsächlich werden Projekte, die mit Liebe gemacht sind, zunehmend erfolgreicher. Es zeigt, dass man bessere Ergebnisse erzielen kann, wenn man nicht am Geld hängt. Gleichzeitig bringt es einen dazu, über unsere Gesellschaftsstruktur und die Wirtschaft insgesamt nachzudenken, denn um so ein Leben zu führen, braucht es bis zu einem gewissen Grad zunächst Kapital. Wie Knuth sagt: Wenn uns nur etwas mehr Zeit gegeben wäre, könnten wir alle bessere Ergebnisse schaffen; wenn immer alles unter Zeitdruck geschieht, wird vieles geopfert. Und wie in seinem anderen berühmten Zitat:

      Wenn man versucht, alles zu optimieren, kann man niemals glücklich sein.

      An diesem Punkt stellt sich die Frage, ob wir Menschen, die Probleme wirklich gut lösen und das Leben einfacher machen, tatsächlich angemessen belohnen, oder ob wir nur bedeutungslose Spielstände erhöhen. Wie schafft man mehr Legenden? Wie schafft man eine Gesellschaft, in der Menschen wie Mitchell ihrer Leidenschaft folgen können, ohne dem Vorstand erst den Wert von Qualität erklären zu müssen?

    • Ich habe ihn tatsächlich einmal getroffen, und er war wirklich ein warmer, sympathischer Mensch. Vor der Gründung von HashiCorp habe ich bei Kiip auf einer Konferenz mit ihm zu Mittag gegessen, und Mitchell war ein echter Hacker. Man merkte, dass er alles rund um Computing aufrichtig liebte. Besonders auf einer Konferenz zu verteilten Systemen war er unglaublich vertieft. Ich war überzeugt, dass er bei allem, was er anfasst, Erfolg haben würde. Seit ich Ghostty entdeckt und ausprobiert habe, nutze ich es zufrieden weiter.

    • Und dazu vertieft sich diese Person sogar noch in die Entwicklung von tty-Software, also in einen Bereich des Unix-Technologie-Stacks, der wirklich voller Nerd-Leidenschaft steckt.

    • Ich benutze Ghostty jeden Tag und habe erst jetzt erfahren, dass es von Mitchell Hashimoto stammt. Wirklich eine großartige Erfahrung.

  • Ghostty ist wirklich großartig. Ich freue mich darauf, dass sich ein echter Omni-Platform-Terminal-Emulator sogar bis auf Mobilgeräte ausdehnen könnte. Spannend ist auch, dass Ghostty in Zig geschrieben ist. Es ist das erste Zig-basierte Programm, das ich regulär benutze, und ich finde es interessant, dass die Repository-Struktur genau wie im Golang-Stil wirkt. https://github.com/ghostty-org/ghostty

    • (Sieht nicht wie ein Go-Layout aus.) Das ist eher ein Pluspunkt. Die Verzeichnisstruktur von Go mit pkg/, src/ usw. ist keine besonders gute Struktur.
  • Ich würde Ghostty wirklich gern lieben, aber es gibt ein paar Enttäuschungen.

    • Es gibt noch keine Unterstützung für Suchen mit ⌘F.
    • Es gibt keine Möglichkeit, vorherige Ausgaben oder bestimmte Strings nur mit der Tastatur auszuwählen bzw. zu kopieren.
    • Mit ⌘. wird kein CTRL-C gesendet (eine Funktion, die Mac-Nutzer erwarten).
    • Das Font-Rendering ist noch nicht so geschmeidig wie in Terminal.app. Ich habe es mit font-thicken-strength angepasst, aber es ist nicht zu 100 % identisch. Wegen der Eigenheiten des Metal-Renderings scheint das entweder unmöglich oder sehr schwierig zu sein. Wenn man den ganzen Tag nur auf Text schaut, ist das ein enorm wichtiger Punkt.
    • Eine Konfiguration, bei der ⌘. CTRL-C sendet, ist möglich.
      keybind = "cmd+.=text:\x03"
      
      Relevante Diskussion: https://news.ycombinator.com/item?id=42889411
    • Wird bald unterstützt: https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
    • Die Scrollback-Suche soll in Version 1.3 kommen, aber es dürfte noch etwa 6 Monate dauern. Ghostty entwickelt sich in letzter Zeit ohnehin schnell weiter, daher lohnt sich auch ein Blick in die Release Notes zu 1.2.
    • An den schwankenden Punkten sehe ich, dass mein Beitrag wohl missverstanden wurde. Tatsächlich ist das Konzept, plattformübergreifend für jeden Anbieter native GUIs zu implementieren, einfach großartig. Ich freue mich sehr, dass dieses Projekt überhaupt existiert, persönlich finde ich es aber noch nicht ganz perfekt. Trotzdem verfolge ich es mit Spannung.
    • Der zweite Kritikpunkt (vorherige Ausgaben per Tastatur auswählen) ist der Hauptgrund, warum ich weiterhin WezTerm benutze.
  • Mitchells Leidenschaft für die Developer Experience und seine Liebe zum Detail sind wirklich beeindruckend. Ich erinnere mich noch lebhaft daran, wie begeistert ich 2011 in Santa Monica war, als ich Vagrant zum ersten Mal benutzt habe. Ich hatte nie vor, iTerm2 zu ersetzen, aber als ich Ghostty ausprobierte, war ich sofort begeistert.

  • Ich benutze Ghostty in letzter Zeit jeden Tag und bin erst vor Kurzem umgestiegen. Unter macOS habe ich Caps Lock auf cmd gemappt, deshalb funktioniert auch cmd+c gut. Die Standardeinstellungen sind klug gewählt, und abgesehen davon, dass Customizing nicht ganz einfach ist, bin ich mit allem zufrieden. Das Gruvbox-Light-Theme sieht ebenfalls wirklich gut aus. Schon allein dass es in Zig geschrieben ist, ist extrem cool; wenn man sich fragt, ob Zig für den praktischen Einsatz schon bereit ist, könnte Ghostty die Antwort darauf sein. Ich glaube nicht, dass ich wieder zu einem anderen Terminal zurückkehren werde. Es ist wirklich eine sehr zufriedenstellende Erfahrung. Zur Info: Kombiniert man Ghostty noch mit Aerospace, hat man auf dem Mac mit nur der Tastatur nahezu eine perfekte Umgebung.

    • Mich würde interessieren, warum man Ghostty benutzen sollte. (Ich nutze hauptsächlich Terminal.app.)
    • ClickHouse und Bun sind ebenfalls gewaltige Projekte.
  • Ich benutze Ghostty auf meinem Air Mac, einem Mac, den mir mein älterer Bruder zum Coden vererbt hat. Ich bin Ghostty wirklich dankbar, weil es so gut ist. Vielleicht ist es nur ein kleines Detail, aber dass es keine libc-Abhängigkeit hat, fühlt sich aus irgendeinem Grund ziemlich wertvoll an.

  • Das Häufigkeitsanalyse-Histogramm von visidata wurde nicht korrekt gerendert: Ein Teil erschien als saubere Kästchen, der Rest als Diamant mit Fragezeichen. Wegen dieses Problems kann ich iTerm noch nicht verlassen. Ich wusste nicht einmal, nach welchen Stichwörtern ich suchen sollte, daher war das schwer zu lösen.

    • Es könnte sein, dass sowohl im Hauptfont als auch im Fallback-Font die entsprechenden Codepoints fehlen. Wenn du Ghostty nutzt, würde ich empfehlen zu prüfen, mit welchem Font iTerm2 diese Glyphen anzeigt, und dann nachzusehen, ob es in Ghostty eine passende Einstellung dafür gibt.
  • Ich beobachte Ghostty weiterhin in der Hoffnung, dass dessen Text-Reflow – besonders inklusive Scrollback – auch in Neovim-basierten Terminals gelöst werden kann. Es ist großartig, dass Ghostty neue Innovation in die Terminal-Welt bringt. https://github.com/neovim/neovim/issues/33155

    • Mich würde interessieren, ob du ein Poweruser des Neovim-Terminals bist. Ich hatte früher versucht, meinen Workflow von tmux, das Neovim startet, dahin zu ändern, dass Neovim selbst direkt das Terminal verwaltet. Es schien praktisch, Dateien nur in einem einzigen Buffer zu öffnen. Ich habe das ausprobiert, weil eine Datei oft in einem Pane geöffnet wurde, obwohl sie bereits in einer anderen Neovim-Instanz offen war. Beim Testen habe ich kein besonderes Reflow-Problem bemerkt, das sich durch den Wechsel zu libghostty hätte lösen lassen; schwieriger war eher die Anpassung an das Paradigma. Als jemand, der tief im integrierten Neovim-Terminal steckt, würde ich gern Erfahrungsberichte hören, was der Einsatz von libghostty konkret verbessern kann.
  • Ich möchte Ghostty wirklich benutzen, aber ohne cmd+f-Support habe ich es noch nicht ausprobiert. Trotzdem freue ich mich sehr auf die Weiterentwicklung dieses Projekts.

    • Ist auf der Roadmap.
      https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
    • Man kann den gesamten Buffer auch über eine Taste wie cmd+shift+f im Standard-Texteditor öffnen und dort suchen. Viele Leute konnten sich damit behelfen, ich auch; bis eine eingebaute Scrollback-Suche kommt, ist das eine ausreichend praktische Alternative.
    • Ich frage mich, warum diese Funktion nicht schon früh hinzugefügt wurde. Verlaufssuche ist in einem Terminal essenziell – gab es dafür irgendeinen komplizierten Grund? Tatsächlich hatte Mitchell selbst schon vor zwei Jahren ein entsprechendes Issue eröffnet.
      https://github.com/ghostty-org/ghostty/issues/189
    • Viele Leute beschweren sich über das Fehlen einer Verlaufssuche wie cmd+f, aber obwohl ich diese Funktion habe, habe ich sie nie benutzt. Es wäre interessant, wenn jemand den Workflow erklären könnte, in dem sie so wichtig ist. Vielleicht entgeht mir da etwas Großes.
    • Man kann auch tmux darin starten und cmd+f auf copy-mode + / mappen.