返回首页

Ghostling:基于 libghostty C API 的终端

Ghostling — 基于 libghostty-vt 和 Raylib 的极简终端演示项目。支持 VT 仿真、Unicode、鼠标/键盘协议,无依赖。适用于学习可嵌入终端的 C API。

基于 libghostty 的极简 Ghostling 终端
Advertisement 728x90

# Ghostling:使用 libghostty 演示 C API 的极简终端

Ghostty 团队发布了一个开源演示项目 Ghostling——一个单线程终端,仅用单个 C 文件,使用 libghostty-vt 进行 VT 仿真,Raylib 负责渲染。该项目展示了无需 GPU 加速的库集成,重点关注序列解析、状态管理和基本输入输出。

架构与关键组件

Ghostling 基于 libghostty-vt 构建——这是一个零外部依赖的库,甚至不依赖 libc。它负责解析 VT 序列、光标定位、样式应用、文本重流、滚动以及渲染器管理。渲染和窗口循环通过 Raylib 的 2D 渲染器实现,这简化了演示并突显了 libghostty 的可移植性。

该项目继承了 Ghostty 的多项优化:SIMD 解析、Unicode 支持以及高效内存使用。Libghostty 提供 C 和 Zig API,便于嵌入任意应用,将仿真与 UI 分离。

Google AdInline article slot

重要提醒: Ghostling 并非生产级终端。它是一个最小可行示例,未经彻底代码审查,仅供学习 API 使用。

支持的功能

该项目实现了核心终端仿真功能:

  • 窗口大小调整伴随文本重排;
  • 24 位真彩色和 256 色调色板;
  • 文本样式(粗体、斜体、下划线);
  • Unicode 及多码点字形簇,无瑕表现;
  • 键盘输入,支持修饰键(Shift、Ctrl、Alt、Super);
  • Kitty 键盘协议;
  • 鼠标跟踪(X10、标准、按钮、任意事件模式);
  • 鼠标报告格式(SGR、URxvt、UTF8、X10);
  • 鼠标滚轮用于滚动或透传至应用;
  • 支持拖拽滚动的滚动条。

这些功能覆盖了典型 shell 应用场景,展示了 libghostty-vt 在解耦模式下的稳健性。

Google AdInline article slot

与主 Ghostty 的区别

Ghostty 采用 GPU 渲染和多线程设计,实现高性能。Ghostling 则简化处理:单线程 CPU 2D 渲染。这适用于 GPU 不可用或希望避免额外开销的嵌入式场景。Raylib 提供跨平台支持,无需复杂窗口库。

对于中高级开发者,此项目可作为自定义终端起点:在 libghostty-vt 基础上添加自家渲染器(Vulkan、SDL、自定义画布)。

关键要点

  • Libghostty-vt 是一个独立 VT 引擎,无渲染功能,适合嵌入;
  • Ghostling 展示了 C API 与 Raylib 的单文件集成;
  • 完整 VT 兼容:颜色、Unicode、鼠标、键盘协议;
  • 无依赖、SIMD 优化、低内存占用;
  • 原型演示,非日常终端。

开发计划

开发者公布了路线图:

Google AdInline article slot
  • Kitty 图形协议,支持图像;
  • OSC 剪贴板支持;
  • OSC 窗口标题配置。

这将扩展其在 GUI 应用(如 IDE 插件或远程桌面客户端)终端输出中的实用性。

— Editorial Team

Advertisement 728x90

继续阅读