Zurück zur Startseite

Ghostling: Terminal auf libghostty C API

Ghostling — Demoprojekt eines minimalistischen Terminals basierend auf libghostty-vt und Raylib. Unterstützt VT-Emulation, Unicode, Maus-/Tastaturprotokolle ohne Abhängigkeiten. Nützlich zum Studium des C API eingebettbarer Terminals.

Minimales Ghostling-Terminal auf libghostty
Advertisement 728x90

# 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.

Google AdInline article slot

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.

Google AdInline article slot

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:

Google AdInline article slot
  • 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

Advertisement 728x90

Weiterlesen