Zpět na domů

Ghostling: terminál na libghostty C API

Ghostling — demo-projekt minimálního terminálu na bázi libghostty-vt a Raylib. Podporuje VT-emulaci, Unicode, mouse/keyboard protokoly bez závislostí. Užitečný pro studium C API vestavěných terminálů.

Minimální terminál Ghostling na libghostty
Advertisement 728x90

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.

Google AdInline article slot

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.

Google AdInline article slot

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:

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

Advertisement 728x90

Číst dál