# 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 分离。
重要提醒: Ghostling 并非生产级终端。它是一个最小可行示例,未经彻底代码审查,仅供学习 API 使用。
支持的功能
该项目实现了核心终端仿真功能:
- 窗口大小调整伴随文本重排;
- 24 位真彩色和 256 色调色板;
- 文本样式(粗体、斜体、下划线);
- Unicode 及多码点字形簇,无瑕表现;
- 键盘输入,支持修饰键(Shift、Ctrl、Alt、Super);
- Kitty 键盘协议;
- 鼠标跟踪(X10、标准、按钮、任意事件模式);
- 鼠标报告格式(SGR、URxvt、UTF8、X10);
- 鼠标滚轮用于滚动或透传至应用;
- 支持拖拽滚动的滚动条。
这些功能覆盖了典型 shell 应用场景,展示了 libghostty-vt 在解耦模式下的稳健性。
与主 Ghostty 的区别
Ghostty 采用 GPU 渲染和多线程设计,实现高性能。Ghostling 则简化处理:单线程 CPU 2D 渲染。这适用于 GPU 不可用或希望避免额外开销的嵌入式场景。Raylib 提供跨平台支持,无需复杂窗口库。
对于中高级开发者,此项目可作为自定义终端起点:在 libghostty-vt 基础上添加自家渲染器(Vulkan、SDL、自定义画布)。
关键要点
- Libghostty-vt 是一个独立 VT 引擎,无渲染功能,适合嵌入;
- Ghostling 展示了 C API 与 Raylib 的单文件集成;
- 完整 VT 兼容:颜色、Unicode、鼠标、键盘协议;
- 无依赖、SIMD 优化、低内存占用;
- 原型演示,非日常终端。
开发计划
开发者公布了路线图:
- Kitty 图形协议,支持图像;
- OSC 剪贴板支持;
- OSC 窗口标题配置。
这将扩展其在 GUI 应用(如 IDE 插件或远程桌面客户端)终端输出中的实用性。
— Editorial Team
暂无评论。