Ghostty 1.0 即将发布
原文由 Mitchell Hashimoto 于 发布,订阅该博客
经过近两年的开发和封闭内测1,我很高兴地宣布,Ghostty 1.0 将于 2024 年 12 月作为基于 MIT 许可证的开源项目正式发布。
在这篇博文中,我想重申 Ghostty 项目的宏观目标,并概述 1.0 版本的具体目标。我对 Ghostty 有着雄心勃勃的规划,同时也希望明确哪些可以在发布首日实现、哪些则会在未来逐步推出。
简而言之,Ghostty 1.0 的目标是在 macOS 和 Linux 上成为你现有终端模拟器最佳的无缝替代品。Ghostty 将兼具速度快、功能丰富和原生平台 GUI 的优势,同时也是目前对标准兼容性最好的终端模拟器。
最佳现有终端模拟器
我在 2023 年 9 月的 Zig Showtime 演讲中的这张幻灯片,最能概括我为何要开发一款新的终端模拟器:

对比的终端模拟器数量有限,主要是出于幻灯片设计的考虑,但核心观点依然成立:我觉得现有的终端模拟器在速度、功能和平台原生 GUI 之间迫使人们做出不必要的取舍。2
开发 Ghostty 时,我的目标就是打造一款速度快、功能丰富、拥有平台原生 GUI,同时又能跨平台的终端模拟器。我相信 Ghostty 1.0 已经实现了这些目标。
这一目标聚焦于成为最佳现有终端模拟器。在这一框架下,Ghostty 1.0 并不试图去重新定义终端能做什么,而是要在 macOS 和 Linux 上提供当下最好的单一终端模拟器体验3。
当然,Ghostty 并非完美或尽善尽美。我没有实现所有终端模拟器的每一项功能,所以 Ghostty 仍有不少功能尚未具备。不过,随着我持续改进,我相信它能满足绝大多数用户的需求。
快速、功能丰富且平台原生
在人们使用 Ghostty 之前,我收到的最常见反馈是对这些特性是否真有意义持怀疑态度;而在他们使用之后,最常见的反馈则是:没想到差别如此之大,已经无法想象再回到从前。
Ghostty 的“快速、功能丰富和平台原生”究竟意味着什么?这三点都是庞大而复杂的话题,因此我只会为每个方面提炼几个关键点。
关于“快速”,我最近在 Systems Distributed 2024 上做了一场题为“让终端模拟器真正、真正快起来:Ghostty”(时间戳链接至 50:15)的 5 分钟闪电演讲。它很好地概述了 Ghostty 在性能方面的思考,不过由于只是闪电演讲,内容并不全面。
关于“功能丰富”,Ghostty 的首要目标是尽可能广泛地支持各类终端应用。这意味着除了 xterm 本身之外,Ghostty 对 xterm 转义序列的支持比任何其他终端模拟器都要多。Ghostty 还支持几乎所有现代终端规范,例如带样式的下划线、Kitty 键盘协议、图形协议等。(虽然不是终端转义序列,但要说一句:Ghostty 确实支持连字!)
关于“平台原生”,Ghostty 在 macOS 上使用原生 GUI 工具包,在 Linux 上则使用 GTK(如果可用,还会加上 libadwaita)。这意味着 Ghostty 在两个平台上看起来、用起来(并且本质上就是)原生应用。这与许多仅用原生 GUI 工具包来创建一个窗口的终端模拟器形成了对比。
举个平台原生优势的例子:Ghostty 拥有原生标签页、分屏、右键菜单、菜单栏、程序坞集成、输入法支持(表情键盘、听写等)、确认窗口、桌面通知、macOS 安全输入模式等。
以下是 Ghostty 在 macOS 和 Linux 上的一些截图(两者都经过主题美化,但可能只需几行配置),展示了平台原生的 GUI:


(两张图片均来自 Ghostty Discord 服务器公共展示频道中的社区分享)
首个版本即为 1.0
Ghostty 已进行了近两年的封闭内测。截至本文撰写时,Ghostty 在 macOS 和 Linux 上约有 2000 名测试者,其中大多数人已将 Ghostty 作为日常主力终端模拟器使用,且没有遇到问题。
得益于广泛的封闭内测,Ghostty 的首个公开版本将直接是 1.0。不会有任何 ZeroVer!4
我坚持长期封闭内测的动机主要是出于私心:我迎来了第一个孩子,我想把时间优先留给家人,而不是被外界要求开发功能或修复缺陷的压力所裹挟。理论上我可以不理会这些杂音,但实际上我足够了解自己,知道自己会被分心,那将是巨大的精神负担。
除了家庭原因,我也怀念那个软件“就绪即发布”的时代。我喜欢想象,如果像 CompUSA 这样的门店依然存在,Ghostty 1.0 会被装盒、覆膜,摆在货架上等待购买(但同时也是免费和开源的)。
封闭内测带来的其他影响则是出乎意料或并非有意的。例如,我从未想让 Ghostty 显得高冷排外(坦白说,我根本没料到会有这么多人对一款终端模拟器感兴趣!),也从未想通过封闭内测人为制造对 Ghostty 的炒作。如果你因此产生了不好的感受,我向你道歉。
令我惊讶的是,这种做法招来了不少批评,还有一些人似乎觉得,仅仅因为我喜欢分享自己的工作和进展,他们就理所当然地应该得到些什么。同时,我也感谢人数多得多的那些支持和理解我做法的人。
最后,感谢那些一直在使用 Ghostty 并提供宝贵反馈的测试者们。正是靠着这群多样化的测试者,冒着风险使用这个对开发者工具链至关重要的早期版本,Ghostty 才得以拥有如今的稳定性。
宏大的愿景
展望未来,Ghostty 在两大方向上有雄心勃勃的计划:libghostty 和终端应用功能。
libghostty 是驱动 Ghostty 的核心跨平台库。它以 Zig 和 C API 的形式提供,目前可在 macOS 和 Linux 上运行。目标是催生一个庞大而多样的终端模拟器应用生态,涵盖独立应用、编辑器中的嵌入式终端、基于网页的终端、新型终端复用器等等。
libghostty 的理念是让开发者能够专注于构建优秀应用本身那些艰难的工作,而免费获得快速、功能丰富且符合标准的终端模拟能力。在很多方面,我将今天的 Ghostty 描述为 libghostty 的一个“参考实现”。
对于 Ghostty 1.0,libghostty 还不被视为稳定版本,也不会作为独立的公开 API 提供。不过,Ghostty 内部已经在使用 libghostty。Ghostty 1.0 之后的目标是让 libghostty 作为独立库发布,并将平台支持扩展到 macOS 和 Linux 之外,尤其是 WebAssembly。
除了 libghostty,我还希望在终端内部构建更多可供应用利用的功能。一些想法包括:提升转义序列的安全性、支持更现代的输入方式(如触摸手势、惯性滚动、绘图设备等)、允许应用提供原生上下文菜单等。
扩展终端应用功能的目标是让基于文本的应用对开发者更具吸引力、更易于构建,对用户也更易于使用。我相信基于文本的应用在软件生态中拥有宝贵的利基市场,我希望帮助这个平台实现现代化。
这些都是宏大而长期的目标,用以表明我对 Ghostty 有着更远大的愿景并正在为之努力。短期内,我计划根据用户的反馈和我自己的想法,按照最初“快速、功能丰富且平台原生”的宏观目标,对 Ghostty 进行迭代改进。有一些重要的功能很遗憾没能赶上 1.0 版本,但会在后续版本中推出。
资金与可持续性
我不想让这成为本文的重点,但鉴于我的创业者背景以及大家对此话题的普遍关注,我还是会简要谈谈 Ghostty 的资金和可持续性问题,以避免产生混淆或猜测。
Ghostty 对我而言是一个热情项目,我没有任何将其商业化的打算。如第一段所述,Ghostty 将作为基于 MIT 许可证的开源项目发布。
就个人而言,得益于过去的成功,我有幸拥有财务自由,能够在没有任何经济压力的情况下投入 Ghostty 这样的项目。我曾多次公开表示,我将自己在 Ghostty 上的工作视为一种“技术公益”:既是回馈的方式,也是满足自身需求并享受乐趣的途径。
同时,我确实希望 Ghostty 能在没有我的情况下长期存续,也希望未来能够对主要贡献者的工作给予报酬。为此,我正与[目前仍不公开的]社区一起探索非营利性架构,以帮助确保 Ghostty 的长期可持续性。但这是一个长期目标,不会在 1.0 版本时就位。
十二月见
我期待着 Ghostty 1.0 在 2024 年 12 月的公开发布。
两年多来,Ghostty 一直是我的一个巨大热情项目,它最初只是我在全职工作之余偶尔捣鼓的 side project,到后来离职并迎来第一个孩子后,成为了我的主要(但仍是非常兼职的)重心。
Ghostty 1.0 不会是完美的,但它的稳定性和功能集让我感到自豪,我认为它已经准备好与全世界分享。最重要的是,我希望人们能感受到我倾注在 Ghostty 上的热爱与用心,并希望它能为他们的日常工作带来快乐(就一款终端模拟器所能做到的而言)。
👻
脚注
随机一篇博客
评论
登录后参与讨论