返回目录
开源项目开发者工具类新手

Ghostty:快速、原生、跨平台的终端模拟器(含 libghostty 嵌入式终端库)

Ghostty 是一个强调速度、功能丰富与平台原生体验的跨平台终端模拟器,使用 Zig 编写共享核心,macOS 端为 SwiftUI + Metal,Linux 端为 GTK,并提供可嵌入的 C/Zig 库 libghostty(含 libghostty-vt),支持 Kitty 图形/图像协议、剪贴板序列、同步渲染等现代终端特性。

0 次阅读2026/09/11 发布
Ghostty:快速、原生、跨平台的终端模拟器(含 libghostty 嵌入式终端库) 来源图片

社区作者 · zZz

它解决什么问题

Ghostty 的定位是「快速、原生、功能丰富」的终端模拟器,项目自述其目标是同时提供速度、功能与原生 UI 三者,而不是让用户在三者之间取舍。除了作为独立终端使用,Ghostty 还提供可通过 libghostty 嵌入第三方项目的终端能力。

【项目构成】

  • 独立的原生 GUI 终端模拟器。
  • libghostty:跨平台、零依赖的 C 与 Zig 库,用于构建终端模拟器或在自有应用中嵌入终端功能(例如样式解析)。来源提到可参考 Ghostling(最小完整示例项目)以及 examples 目录中的 C 与 Zig 小示例。
  • 配图 1(Logo)为项目标识。

【标准符合性(路线图第 1 步,已完成)】 Ghostty 实现了常规使用的控制序列,可以运行所有主流终端程序;针对遗留序列做了全面的 xterm 审计,对比 Ghostty 与 xterm 的行为并构建一致性测试用例。除遗留序列外,还支持比大多数终端模拟器更多的现代序列,包括 Kitty graphics protocol、Kitty image protocol、剪贴板序列、同步渲染(synchronized rendering)、明暗模式通知等。

项目对「标准」的判定顺序为:(1) 有标准则依标准(部分为 ECMA-48 这类 de jure 标准),(2) 该功能存在于 xterm 则依 xterm,(3) 其他流行终端。

【性能(路线图第 2 步,已完成)】 项目称 Ghostty 与其他最高性能终端处于同一性能档次,明显快于传统或「慢速」终端,与知名「快速」终端差距小到不易察觉;例如在多项基准中 Ghostty 与 Alacritty 通常只差几个百分点,但两者都比 Terminal.app 和 iTerm 快约 100 倍量级;同时 Ghostty 功能远多于 Alacritty,且原生应用体验更强。

性能来自高层架构决策与底层优化:每个终端有独立读线程、写线程与渲染线程的多线程架构;渲染器在 Linux 使用 OpenGL、在 macOS 使用 Metal;读线程使用经过高度优化的终端解析器并利用 CPU 专属 SIMD 指令等。

【窗口功能(路线图第 3 步,已完成)】 macOS 应用与 Linux(GTK 构建)应用支持多窗口、标签页、分屏,并提供标签重命名、着色等额外功能,比单窗口终端有更高的组织与自定义程度。

【原生平台体验(路线图第 4 步,已完成)】 项目不追求「最小公约数」式体验,共享核心用 Zig 编写,同时大量使用平台原生能力:

目标是让用户觉得 Ghostty 是为自己所在平台优先乃至专门构建的原生应用。

  • macOS 应用是基于 SwiftUI 的真实应用,具备真正的窗口管理、菜单栏、设置 GUI 等;使用真正的 Metal 渲染器与 CoreText 做字体发现;支持 AppleScript、Apple Shortcuts(AppIntents)等。
  • Linux 应用使用 GTK 构建;如系统存在 systemd,则深度集成,用于常驻(always-on)、单实例中开新窗口、cgroup 隔离等场景。

【可嵌入终端库 libghostty(路线图第 5 步,已完成)】 libghostty 是一个与 C 兼容的库,用于在任意第三方项目中嵌入快速、功能丰富的终端模拟器。由于项目范围较大,libghostty 被拆分为多个独立库,首先是 libghostty-vt,聚焦于解析终端序列与维护终端状态(项目博客文章中有更详细说明)。

libghostty-vt 目前已经可供 Zig 和 C 使用,兼容 macOS、Linux、Windows 与 WebAssembly;功能非常稳定(因为已在 Ghostty GUI 中长期验证),但 API 签名仍在变动。libghostty 尚未打版本标签,文档体验仍在改进,C API 可参考其 Doxygen 网站;生态项目与资源参见 awesome-libghostty。

【Ghostty 专属终端控制序列(路线图第 6 步,未完成 ❌)】 项目希望并认为终端应用可以做得更多,已努力支持其他终端模拟器创造的多种现代序列,也希望以自己的序列填补空缺,但担心造成终端生态碎片化,因此在与其他终端生态变化缓慢之间做平衡。来源明确表示:这部分目前尚未实现。

【状态与崩溃报告】

项目状态为稳定,每天被数百万用户与机器使用。Ghostty 内置崩溃报告器,会把崩溃报告写入磁盘的 $XDG_STATE_HOME/ghostty/crash 目录;若未设置 $XDG_STATE_HOME,则默认为 ~/.local/state。崩溃报告不会自动发送到机器之外。崩溃报告只会在崩溃后下一次启动 Ghostty 时生成;如果 Ghostty 崩溃后需要生成报告,必须至少重启一次,日志中应能看到生成崩溃报告的消息。可用 ghostty +crash-report CLI 命令列出可用崩溃报告(未来版本会提供 CLI 与 GUI 中更易查看的内容)。崩溃报告以 .ghosttycrash 扩展名结尾,采用 Sentry envelope 格式,可上传到自己的 Sentry 账户查看,格式公开文档化,也可用其他工具处理。若要发送给 Ghostty 项目,来源给出的命令为:

可复制命令
SENTRY_DSN=https://e914ee84fd895c4fe324afa3e53dac76@o4507352570920960.ingest.us.sentry.io/4507850923638784 sentry-cli send-envelope --raw <path to ghostty crash>

。警告:崩溃报告可能包含敏感信息,报告并非有意包含敏感信息,但包含崩溃时各线程的完整栈内存,用于重建堆栈轨迹,其中可能包含敏感数据。

【说明】来源正文未给出软件许可证、具体版本号、逐步安装命令与最低硬件配置,这些信息在本条目中标注为待核验;如需安装与文档细节,来源指向 Ghostty 官网的下载页与文档页,以及仓库中的 Contributing / Developing 文档。

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

来源正文未提供逐步安装命令与构建流程,仅给出官方入口,因此以下为来源可核验信息的完整整理,未明确处标注「待核验」,请勿臆测:

  1. 准备环境:来源未列出 Ghostty 的具体依赖清单与前置环境要求(待核验)。项目存在独立的 Contributing(贡献)与 Developing(开发)文档,来源说明希望参与开发的人应阅读「Developing Ghostty」以获取更多技术细节。
  1. 获取安装包:来源的 Download 一节要求访问 Ghostty 官网的下载页(download page on the Ghostty website)获取发行版本;具体安装包格式、支持的平台版本与版本号待核验。
  1. 查看文档:来源的 Documentation 一节要求访问 Ghostty 官网的文档页面;配置项与使用说明待核验。
  1. 参与/自行开发:来源的 Contributing and Developing 一节要求先阅读「Contributing to Ghostty」文档,有想法、问题或想通过 pull request 贡献均可参考该文档;希望参与开发的人还应阅读「Developing Ghostty」文档。仓库来源与克隆命令、构建命令来源未给出(待核验)。
  1. 使用嵌入式库(可选):若要在自有项目中嵌入终端能力,可使用 libghostty / libghostty-vt。来源说明其面向 Zig 与 C,兼容 macOS、Linux、Windows、WebAssembly;可参考 Ghostling(最小完整示例项目)与仓库 examples 目录中的 C、Zig 小示例;C API 可参考项目的 Doxygen 网站;libghostty 尚未打版本标签(no version tag),API 签名仍在变动,安装与集成方式待核验。
  1. 首次运行与崩溃报告:Ghostty 首次或后续运行时若发生过崩溃,崩溃报告只会在崩溃之后下一次启动 Ghostty 时生成,因此必须至少重启一次 Ghostty,并在日志中确认已生成崩溃报告。崩溃报告保存于 $XDG_STATE_HOME/ghostty/crash,若 $XDG_STATE_HOME 未设置则默认位于 ~/.local/state;报告不会自动发送到机器之外。
  1. 常见问题与排查:
  • 如何查看崩溃报告列表:使用 CLI 命令 ghostty +crash-report;来源提示未来版本会在 CLI 与 GUI 中提供更易查看报告内容的方式。
  • 崩溃报告的文件格式:以 .ghosttycrash 扩展名结尾,内容为 Sentry envelope 格式,可上传到自己的 Sentry 账户查看,也可使用其他符合该公开格式的工具。
  • 如何提交崩溃报告给 Ghostty 项目:来源给出的命令为 SENTRY_DSN=https://e914ee84fd895c4fe324afa3e53dac76@o4507352570920960.ingest.us.sentry.io/4507850923638784 sentry-cli send-envelope --raw <path to ghostty crash>。
  • 隐私注意:崩溃报告可能包含敏感信息,因为它包含崩溃时各线程的完整栈内存,请在提交前自行评估。
  1. 平台特定获取方式:macOS 应用为 SwiftUI 应用、Linux 应用基于 GTK 构建,来源未说明各平台的具体安装方式(如包管理器或安装器),待核验。

来源教程配图

Logo
配图 1 · Logo查看原图

适用场景

开发者日常命令行工作:在多窗口
标签页与分屏中组织终端会话
需要高性能终端的重度场景:利用多线程架构(独立读/写/渲染线程)与 GPU 渲染(Linux 用 OpenGL
macOS 用 Metal)
需要现代终端能力的场景:Kitty graphics / image protocol
剪贴板序列
同步渲染
明暗模式通知
在第三方应用中嵌入终端:通过 C/Zig 库 libghostty
libghostty-vt 构建终端模拟器或嵌入终端功能
学习终端序列解析与终端状态维护的参考实现(含 xterm 审计与一致性测试用例)
追求平台原生体验的 macOS 用户(SwiftUI