Ghostling: minimální terminál na libghostty pro demonstraci C API
Tým Ghostty vydal open-source demo projekt Ghostling — jednovláknový terminál v jednom C souboru, který používá libghostty-vt pro emulaci VT a Raylib pro vykreslování. Projekt demonstruje integraci knihovny bez GPU akcelerace, zaměřuje se na parsování sekvencí, správu stavu a základní vstup-výstup.
Architektura a klíčové komponenty
Ghostling je postaven na libghostty-vt — knihovně bez externích závislostí, včetně libc. Ta je zodpovědná za parsování VT sekvencí, pozicování kurzoru, aplikaci stylů, reflow textu, scrolling a řízení renderovacího enginu. Vykreslování a smyčka okna jsou implementovány přes Raylib s 2D renderem, což zjednodušuje demonstraci a zdůrazňuje přenositelnost libghostty.
Projekt dědí optimalizace z Ghostty: SIMD parsování, podporu Unicode, efektivní využití paměti. Libghostty poskytuje C- a Zig-API pro vestavění do jakýchkoli aplikací, oddělujíc emulaci od UI.
Důležité varování: Ghostling není produkční terminál. Jedná se o minimální funkční příklad bez důkladného auditu kódu, určený k studiu API.
Podporované funkce
Projekt realizuje základní funkcionalitu emulátoru terminálu:
- Změna velikosti okna s reflow textu;
- 24bitová barva a 256barevná paleta;
- Styly textu (tučné, kurzíva, podtržení);
- Unicode a multi-codepoint grapheme clustery bez artefaktů;
- Klávesnicový vstup s modifikátory (Shift, Ctrl, Alt, Super);
- Kitty keyboard protocol;
- Mouse tracking (X10, normal, button, any event modes);
- Formáty hlášení myši (SGR, URxvt, UTF8, X10);
- Kolečko myši pro scroll nebo předání do app;
- Scrollbar s drag-to-scroll.
Tyto funkce pokrývají typické scénáře shell aplikací, demonstrujíce robustnost libghostty-vt v decoupled režimu.
Rozdíly od hlavního Ghostty
Ghostty používá GPU rendering a vícevláknovost pro vysoký výkon. Ghostling je zjednodušený: single-threaded, CPU-2D render. To umožňuje testovat libghostty v embedded scénářích, kde GPU není dostupné nebo je overhead nezhelený. Raylib zajišťuje multiplatformnost bez složitých knihoven oken.
Pro middle/senior vývojáře je projekt užitečný jako výchozí bod pro custom terminály: přidejte svůj renderer (Vulkan, SDL, custom canvas) na libghostty-vt.
Co je důležité
- Libghostty-vt — standalone VT-engine bez vykreslování, ideální pro vestavění;
- Ghostling ukazuje single-file integraci C API s Raylib;
- Plná VT kompatibilita: barvy, Unicode, mouse, keyboard protocols;
- Žádné závislosti, SIMD optimalizace, nízký memory footprint;
- Demo pro prototypování, ne pro daily driver.
Plány rozvoje
Vývojáři oznámili roadmap:
- Kitty graphics protocol pro obrázky;
- OSC clipboard support;
- OSC window title configuration.
To rozšíří užitečnost pro GUI aplikace s terminálním výstupem, jako jsou IDE pluginy nebo remote desktop klienti.
— Editorial Team
Zatím žádné komentáře.