Ghostty:快速、原生且功能丰富的终端模拟器,兼顾速度、功能与原生 UI!
突发Ghostty快速、原生且功能丰富的终端模拟器引领现代特性Ghostty 是一款以快速、功能丰富和原生为特色的终端模拟器在市面上脱颖而出。市面上虽有众多优秀的终端模拟器但往往让用户在速度、功能或原生 UI 之间做出取舍而 Ghostty 三者兼得。关于 Ghostty它不仅有原生 GUI还能通过 libghostty 作为可嵌入库使用。libghostty 是一个跨平台、零依赖的 C 和 Zig 库可用于构建终端模拟器或利用终端功能如样式解析。任何人都能使用 libghostty 构建终端模拟器或将终端嵌入到自己的应用程序中。可参考 Ghostling 这个完整的最小项目示例或查看示例目录中 C 和 Zig 使用 libghostty 的小示例。更多详情可查看“关于 Ghostty”。下载与文档可在 Ghostty 网站的下载页面获取下载资源也可在该网站查看文档。贡献与开发若你对 Ghostty 有任何想法、遇到问题或想通过拉取请求为其做贡献请查看“为 Ghostty 做贡献”文档。想要参与 Ghostty 开发的人也应阅读“开发 Ghostty”文档以了解更多技术细节。路线图与状态Ghostty 稳定可靠每天有数百万用户和设备在使用。该项目的宏伟计划按以下步骤推进符合标准的终端仿真✅具备竞争力的性能✅丰富的窗口功能多窗口、标签页、窗格✅原生平台体验✅用于可嵌入终端的跨平台 libghostty✅仅适用于 Ghostty 的终端控制序列❌以下是每个步骤的详细信息符合标准的终端仿真Ghostty 实现了所有常用的控制序列能毫无问题地运行所有主流终端程序。对于遗留序列团队对 Ghostty 的行为与 xterm 进行了全面审核并构建了一系列一致性测试用例。除了遗留序列即真正的“终端”仿真Ghostty 支持的现代序列比其他几乎所有终端模拟器都多包括 Kitty 图形协议、Kitty 图像协议、剪贴板序列、同步渲染、明暗模式通知等。Ghostty 被认为是最符合标准且功能丰富的终端模拟器之一。终端行为部分遵循法定标准如 ECMA - 48但大多是由全球流行的终端模拟器定义的事实标准。Ghostty 的行为定义顺序为1若有标准则遵循标准2若功能存在则参考 xterm3参考其他流行终端。具备竞争力的性能Ghostty 与其他高性能终端模拟器处于同一性能级别。这意味着它比传统或“慢速”终端快得多与知名的“快速”终端性能差距极小。例如在各种基准测试中Ghostty 和 Alacritty 的性能通常相差几个百分点但都比 Terminal.app 和 iTerm 快约 100 倍。不过Ghostty 比 Alacritty 功能更丰富且具有更原生的应用体验。这种性能通过高层架构决策和底层优化实现。从高层来看Ghostty 采用多线程架构每个终端都有专门的读取线程、写入线程和渲染线程。其渲染器在 Linux 上使用 OpenGL在 macOS 上使用 Metal。读取线程有一个经过高度优化的终端解析器利用了 CPU 特定的 SIMD 指令。丰富的窗口功能Mac 和 Linux使用 GTK 构建应用支持多窗口、标签页和分割功能还有标签重命名、着色等额外特性。这些功能比单窗口终端提供了更高程度的组织性和定制性。原生平台体验Ghostty 是跨平台终端模拟器但并非追求最低共同标准的体验。它有一个用 Zig 编写的大型共享核心但也做了很多平台原生的事情。macOS 应用是一个基于 SwiftUI 的真正应用具备真实窗口、菜单栏、设置 GUI 等。macOS 使用真正的 Metal 渲染器和 CoreText 进行字体发现还支持 AppleScript、Apple ShortcutsAppIntents等。Linux 应用使用 GTK 构建若系统支持 systemd它会与之深度集成实现始终开启、单实例新窗口、cgroup 隔离等功能。Ghostty 的目标是让各平台用户都觉得它是为自己的平台量身打造的在每个平台上都有原生应用的感觉。用于可嵌入终端的跨平台 libghostty除了作为独立的终端模拟器Ghostty 还是一个与 C 兼容的库可将快速、功能丰富的终端模拟器嵌入到任何第三方项目中即 libghostty。由于项目范围较大团队将 libghostty 拆分为多个独立库从 libghostty - vt 开始。该项目的目标是专注于解析终端序列和维护终端状态相关内容在博客文章中有更详细介绍。libghostty - vt 目前已可用于 Zig 和 C兼容 macOS、Linux、Windows 和 WebAssembly。其功能非常稳定因为在 Ghostty GUI 中已得到长期验证但 API 签名仍在变动中。libghostty 已被广泛使用可查看示例了解 C 和 Zig 使用 libghostty 的小示例或参考 Ghostling 项目获取完整示例。可查看 awesome - libghostty 获取与 libghostty 相关的项目和资源列表。目前 libghostty 尚未标记版本团队仍在完善文档体验但 Doxygen 网站是 C API 的不错参考资源。仅适用于 Ghostty 的终端控制序列团队认为终端应用可以且应该有更多功能。为此他们努力支持其他终端模拟器创建的各种现代序列同时也想通过创建自己的序列来填补空白。但此前一直有所顾虑因为不想因创建仅适用于 Ghostty 的序列而导致终端生态系统更加碎片化。不过团队也希望在推动终端发展与应对停滞的标准和缓慢的变革速度之间取得平衡目前这方面尚未开展工作。崩溃报告Ghostty 内置了崩溃报告器会生成崩溃报告并保存到磁盘。崩溃报告保存到 $XDG_STATE_HOME/ghostty/crash 目录若 $XDG_STATE_HOME 未设置则默认保存到 ~/.local/state。崩溃报告不会自动发送到设备外仅在 Ghostty 崩溃后下次启动时生成。若 Ghostty 崩溃且你想生成崩溃报告必须至少重启一次 Ghostty此时日志中会显示已生成崩溃报告。可使用 ghostty crash - report CLI 命令获取可用崩溃报告列表。未来版本的 Ghostty 将通过 CLI 和 GUI 更方便地查看崩溃报告内容。崩溃报告以.ghosttycrash 为扩展名采用 Sentry 信封格式。你可将其上传到自己的 Sentry 账户查看内容该格式也有公开文档因此也可使用其他工具。使用 ghostty crash - report CLI 命令可列出所有崩溃报告未来版本的 Ghostty 将直接在终端显示崩溃报告内容。若要将崩溃报告发送给 Ghostty 项目可使用以下 CLI 命令使用 Sentry CLISENTRY_DSNhttps://e914ee84fd895c4fe324afa3e53dac76o4507352570920960.ingest.us.sentry.io/4507850923638784sentry - cli send - envelope --raw警告崩溃报告可能包含敏感信息。报告本身不会故意包含敏感信息但包含崩溃时每个线程的完整堆栈内存。这些信息用于重建堆栈跟踪但根据崩溃发生的时间也可能包含敏感数据。