终端领域的新玩家,号称超越 kitty 的 ghostty,真有那么厉害吗?

终端领域的新玩家,号称超越 kitty 的 ghostty,真有那么厉害吗?

logo 辉小志
GhosttyTerminalZigLinuxmacOS终端开发

深入解析新兴终端模拟器 Ghostty 的特点与优势,包括其性能、原生功能、与 Kitty 的对比分析,以及未来发展方向,帮助开发者了解这款新型终端工具。

ghostty logo

Ghostty 1.0 近日发布了,引起了国内外开发者群体的广泛讨论,这是一款用 zig 语言开发的跨平台终端模拟器。

这个名字由 ghost(幽灵、鬼) 和 tty(终端的通常写法) 两个单词组合而成,巧妙地省略了一个中间重复的”t”。

作为终端领域的新玩家,它号称要成为 macOS 和 Linux 上最佳的终端模拟器,它有什么过人之处呢?

Ghostty 是什么?

Ghostty 是一款用 Zig 语言编写的终端模拟器,由 HashiCorp 的创始人 Mitchell Hashimoto 开发。

它的设计目标是在 macOS 和 Linux 上提供快速、功能丰富、平台原生的终端体验,并且未来还计划支持 Windows。

Ghostty 的功能亮点

Ghostty 的功能可以分为两大类:针对最终用户的功能针对终端应用开发者的功能

针对最终用户的功能

  • 多窗口、选项卡和分割:Ghostty 支持多个窗口,每个窗口都有自己的选项卡和分割,使用原生 UI 组件呈现,操作更加流畅。
  • GPU 加速渲染:在 macOS 上使用 Metal,在 Linux 上使用 OpenGL,确保终端屏幕的渲染速度更快。
  • 主题支持:Ghostty 内置数百个主题,用户可以根据系统暗/亮模式自动切换主题,甚至可以自定义主题。
  • 连字和字素聚类:支持连字字体,并能正确显示多码点表情符号(如旗帜、肤色等),某些语言(如阿拉伯语和希伯来语)也能正确显示。
  • Kitty 图形协议:支持 Kitty 图形协议,允许终端应用程序直接在终端中渲染图像。

针对终端应用开发者的功能

  • Kitty 键盘协议:支持 Kitty 键盘协议,提供更丰富的输入体验。
  • 同步渲染:确保终端应用程序的渲染更加流畅。
  • 亮/暗模式通知:终端应用程序可以根据系统模式自动切换亮/暗主题。

Ghostty 的平台原生功能

Ghostty 的一个主要设计目标是让其外观、感觉和行为都像每个平台上专门构建的原生应用程序。以下是 Ghostty 在 macOS 上的一些原生功能:

  • 快速终端:轻量级终端,可以在菜单栏下方动画显示,快速访问而不中断工作。
  • 原生选项卡和分割:使用 macOS 的原生 UI 组件,而不是自定义绘制的文本。
  • 代理图标:拖动标题栏中的代理图标可以移动或访问终端会话文件。
  • 安全键盘输入:自动检测密码提示或手动启用安全键盘输入,保护密码不被其他进程窃取。

性能表现

Ghostty 在性能方面做了大量优化

  • 默认进行垂直同步,支持可变刷新率
  • 智能选择集成 GPU 而非独立显卡,更省电
  • 针对电池续航进行了优化
  • 窗口被遮挡时会降低渲染速度,更省电

与现有终端的对比

ghostty

Ghostty 的作者提到,目前主流的终端模拟器各有优劣:

  • Alacritty: 速度快但功能较少,非平台原生 GUI
  • Kitty: 速度快功能多,但非平台原生 GUI
  • iTerm2: 功能丰富且是平台原生,但速度较慢且不支持 Linux

Ghostty 试图在这些方面取得平衡,提供一个速度快、功能齐全且具有原生体验的终端模拟器。

技术特色

Ghostty 使用 Zig 语言开发,这也是一个值得关注的亮点,zig 是性能表现不逊色于 rust 的系统级编程语言。

继 Bun 之后,Ghostty 成为又一个使用 Zig 开发且广受关注的项目,显示出 Zig 语言在系统软件开发领域的潜力。

Ghostty 的远大愿景

Ghostty 不仅仅是一个终端模拟器,它还有更远大的计划。未来,Ghostty 将在两个主要领域进行扩展:

  1. libghostty:这是 Ghostty 的核心跨平台库,目标是允许开发者在各种平台上构建多样化的终端仿真器应用程序,包括专用应用程序、编辑器中的嵌入式终端、通过 WebAssembly 支持基于 Web 的终端等。

  2. 终端应用程序功能扩展:Ghostty 计划引入更多现代功能,如提高转义序列的安全性、支持更多现代输入方法(如触摸手势、动量滚动等),以及允许终端应用程序提供本机上下文菜单等。

Ghostty 的财务和可持续性

Ghostty 是一个开源项目,采用 MIT 许可证发布。开发者 Mitchell Hashimoto 表示,Ghostty 是一个充满激情的项目,他没有任何计划将其商业化。他希望通过非营利结构确保 Ghostty 的长期可持续性,并为贡献者提供补偿。

个人观点

与 kitty 的对比

kitty vs ghostty

上图中,上面是 kitty,下面是 ghostty。

作为一个长期的 Kitty 用户,我认为 Ghostty 确实带来了一些令人期待的改进。

比如在 Linux 上,Kitty 曾经存在输入中文的问题 (新版本已修复),而 Ghostty 使用系统原生 GUI 应该不会有这个问题。

另外,随着 Linux 桌面从 X11 向 Wayland 迁移,终端模拟器的 Wayland 支持变得越来越重要。Kitty 在这方面还有一些小问题,希望 Ghostty 能在这个方面有更好的表现。

还有,kitty 的作者明确表示不会支持 windows(但可以通过 wslg 的方式运行),因为 kitty 使用了很多 unix 平台特有的 api,而 Ghostty 未来计划支持 windows,考虑到 windows 平台巨大的用户数量,这也是一个很大的优势。

缺失的 AI

在当前 AI 大热的背景下,终端领域也出现了一些集成 AI 功能的产品,比如 Warp 终端就主打 AI 辅助功能,能够:

  • 解释命令的作用和参数含义
  • 根据自然语言生成命令
  • 帮助调试和解决错误
  • 提供智能命令历史搜索

相比之下,Ghostty 目前还没有任何 AI 相关的功能。这种取舍反映了不同的产品理念:

  1. 专注与取舍:Ghostty 选择专注于终端模拟器的核心功能 - 性能、兼容性和原生体验,而不是追随 AI 潮流。这种专注可能有助于保持软件的简洁性和稳定性。

  2. 成本和依赖:AI 功能通常需要依赖外部服务,这可能带来额外的成本和隐私考虑。Ghostty 的完全本地化运行方式可能更符合某些用户的需求。

  3. 用户群体差异:Warp 等集成 AI 的终端更多地针对需要 AI 辅助的初学者和中级用户,而 Ghostty 似乎更倾向于服务那些更注重性能和原生体验的专业用户。

虽然缺少 AI 功能可能会让 Ghostty 在当前趋势下显得有些保守,但这也许恰恰体现了它对终端本质的坚持。对于那些更看重终端性能和原生体验的用户来说,这反而可能是一个优势。

结语

Ghostty 的出现为终端用户和开发者带来了新的选择。虽然目前还需要时间检验,但其快速、功能丰富、平台原生的特点确实很吸引人。对于经常使用终端的开发者来说,不妨关注一下这个新玩家。