# Ghostling: Minimaler Terminal-Emulator mit libghostty zur Demonstration der C-API
Das Ghostty-Team hat ein Open-Source-Demoprojekt namens Ghostling veröffentlicht – einen einzelthreadigen Terminal-Emulator in einer einzigen C-Datei, der libghostty-vt für die VT-Emulation und Raylib für das Rendering nutzt. Das Projekt demonstriert die Integration der Bibliothek ohne GPU-Beschleunigung und konzentriert sich auf das Parsen von Sequenzen, Zustandsverwaltung sowie grundlegende Ein- und Ausgabe.
Architektur und zentrale Komponenten
Ghostling basiert auf libghostty-vt – einer Bibliothek ohne externe Abhängigkeiten, einschließlich libc. Sie übernimmt das Parsen von VT-Sequenzen, Cursor-Positionierung, Anwenden von Stilen, Textumbruch, Scrollen und Renderer-Verwaltung. Rendering und die Fenster-Schleife werden über Raylib mit einem 2D-Renderer umgesetzt, was das Demo vereinfacht und die Portabilität von libghostty hervorhebt.
Das Projekt erbt Optimierungen aus Ghostty: SIMD-Parsing, Unicode-Unterstützung und effiziente Speichernutzung. Libghostty stellt C- und Zig-APIs für die Einbettung in beliebige Anwendungen bereit und trennt die Emulation von der Benutzeroberfläche.
Wichtige Warnung: Ghostling ist kein Produktions-Terminal. Es handelt sich um ein minimales, funktionsfähiges Beispiel ohne umfassenden Code-Audit, das zur API-Untersuchung gedacht ist.
Unterstützte Funktionen
Das Projekt implementiert Kernfunktionen eines Terminal-Emulators:
- Fenstergrößenänderung mit Textumbruch;
- 24-Bit-Farben und 256-Farben-Palette;
- Textstile (fett, kursiv, unterstrichen);
- Unicode und mehrcodepointige Grapheme-Cluster ohne Artefakte;
- Tastatureingabe mit Modifikatoren (Shift, Ctrl, Alt, Super);
- Kitty-Tastaturprotokoll;
- Maus-Tracking (X10, normal, Button, Any-Event-Modi);
- Maus-Berichtsformate (SGR, URxvt, UTF8, X10);
- Mausrad für Scrollen oder Weiterleitung an die App;
- Bildlaufleiste mit Drag-to-Scroll.
Diese Funktionen decken typische Szenarien von Shell-Anwendungen ab und demonstrieren die Robustheit von libghostty-vt im entkoppelten Modus.
Unterschiede zu Ghostty
Ghostty nutzt GPU-Rendering und Multithreading für hohe Leistung. Ghostling ist vereinfacht: einzelthreadig mit CPU-basiertem 2D-Rendering. Das ermöglicht Tests von libghostty in eingebetteten Szenarien, in denen GPU nicht verfügbar ist oder Overhead unerwünscht. Raylib bietet plattformübergreifende Unterstützung ohne komplexe Windowing-Bibliotheken.
Für Mid- und Senior-Entwickler dient das Projekt als Ausgangspunkt für eigene Terminal-Emulatoren: Fügen Sie Ihren Renderer (Vulkan, SDL, eigener Canvas) auf libghostty-vt hinzu.
Wichtige Erkenntnisse
- Libghostty-vt ist ein eigenständiger VT-Engine ohne Rendering, ideal zur Einbettung;
- Ghostling zeigt die Ein-Datei-Integration der C-API mit Raylib;
- Volle VT-Kompatibilität: Farben, Unicode, Maus- und Tastaturprotokolle;
- Keine Abhängigkeiten, SIMD-Optimierungen, geringer Speicherbedarf;
- Demo zum Prototyping, nicht für den täglichen Einsatz.
Entwicklungspläne
Die Entwickler haben eine Roadmap angekündigt:
- Kitty-Graphics-Protokoll für Bilder;
- OSC-Zwischenablage-Unterstützung;
- OSC-Fenster-Titel-Konfiguration.
Das erweitert die Nützlichkeit für GUI-Anwendungen mit Terminal-Ausgabe, wie IDE-Plugins oder Remote-Desktop-Clients.
— Editorial Team
Noch keine Kommentare.