Ghostty 1.1.1

Ghostty 1.1.1 的发行说明,发布于 2025 年 2 月 13 日。

Ghostty 1.1.1 由 13 位贡献者 在 125 个提交 中完成,历时两周。本次发布的重点是修复 1.1.0 发行版中引入的回退或 bug。我们也在既有特性中顺带加入了一些不错的改进。

Important

在 macOS 上的 Ghostty 1.1.1 中发现一个重大回退:使用 Kitty Keyboard 协议的程序(如 Neovim 和 Fish 4.0)中 control 修饰键无法正常工作。此问题已在 1.1.2 中修复。

亮点

Linux X11 上的服务器端装饰(SSD)

PR:#5533

Ghostty 1.1.0 引入了对 Linux Wayland 合成器上服务器端装饰(SSD)的支持。这使 Ghostty 在更多种桌面环境上的观感与体验更接近原生应用。不过,它在 X11 上并不生效。

通过 Ghostty 1.1.1,当 window-decoration = server 时我们在 X11 上也加入了 SSD 支持。X11 没有提供标准方法告知我们它偏好 SSD 还是客户端装饰(CSD),因此 X11 上的 SSD 只在显式配置 server 时生效,auto 值下不生效。

输入法编辑器(IME)改进的延续

PR:#5550 #5448

Ghostty 1.1.0 在 IME 支持上投入了大量精力,但讽刺的是破坏了没有激活输入法的场景(GTK "simple" 输入法)。这已在 1.1.1 中修复。1.1.0 的变通办法是安装 ibus 或 fcitx。现在不再需要,"simple" 输入法应能按预期工作。

此外,在 macOS 上,改进的 IME 支持导致某些键盘布局无法输入控制字符(如 ctrl+c)。这已在 1.1.1 中修复。

macOS:Intel GPU 的渲染器改进

PR:#5625、#5652

原来 Ghostty 在 macOS 上使用独立显卡时会触发未定义行为。实际上这只影响 Intel Mac,因为所有 Apple Silicon Mac 都有集成显卡,且 Ghostty 为省电总是偏好集成显卡(如果可用)。

该未定义行为有时正常,有时导致渲染伪影或其他奇怪的视觉表现。我们现在正确检测独立显卡,并使用正确的 API 与行为来避免未定义行为。

完整列表

GitHub 上已关闭问题的完整列表。

在各节中,我们尽量把改进排在 bug 修复之前。

  • goto_split 与 goto_tab 现在可与 performable: keybind 前缀正常配合。#5644
  • +list-actions CLI 命令现在包含没有关联文档的动作。#4958
  • 为终端检查器的终端 IO 窗口添加键盘导航。#3909
  • 修复屏幕上有 Kitty graphics 时重置终端可能发生的崩溃。#5693
  • 修复超大 OSC8 超链接可能发生的崩溃。可能还有其他能触发该崩溃的场景,但这整类崩溃已解决。#5666
  • 修复光标颜色与背景色相同时光标下字符不可见的问题。#5570
  • 修复加载非文件主题时可能发生的崩溃。#5632
  • iTerm2 配色主题更新至 db227d159。#5511

macOS

  • macOS:添加若干新的另类手绘图标选择。可以用 macos-icon 配置设置。#5696
  • macOS:启动时把窗口置于最后一个获得焦点的窗口的位置,遵循其他原生 macOS 应用的行为。#5529
  • macOS:现在如果存在需要关闭确认的处于活动状态但隐藏的 quick terminal,也会显示关闭确认。#5450
  • macOS:修复控制字符在某些键盘布局上不工作的问题。#5448
  • macOS:修复调用 move_tab keybind 时的图形闪烁。#5729
  • macOS:toggle_visibility 现在从全局 keybind 调用时恢复焦点到正确的标签页。#5692
  • macOS:修复某些命令字符(如 cmd+backtick)会把未修饰的字符泄漏进终端的问题。#5558
  • macOS:窗口处于原生全屏时 toggle_visibility 不再有任何效果。此前它会导致窗口失去焦点。#5472
  • macOS:修复独立显卡的未定义行为。#5625
  • macOS:把 Sparkle 依赖更新至 2.6.4 以修复安全问题。#5598

Linux(GTK)

  • GTK:服务器端装饰(SSD)现在在 X11 上可用。#5533
  • GTK:把 WINDOWID 环境变量设为 X11 窗口 ID。#5650
  • GTK:修复某些情况下右键菜单位置不正确的问题。#5710
  • GTK:"simple" 输入法现在正常工作。#5550
  • GTK:添加禁用色彩管理的选项以规避 GTK bug。#5593
  • GTK:window-decoration=none 在 GNOME 上正常工作。#5463
  • GTK:未使用 CSD 时移除边框等 CSD 样式。#5581
  • GTK:Nautilus 集成现在使用命名规范的文件。#5469
  • GTK:clone 后关闭 cgroup 文件描述符,以避免小的 fd 泄漏。#5515

面向软件包维护者的变更

  • 引入了一个新的 Zig 依赖 zig-gobject。它采用 0BSD 许可证。引入该依赖不会改变现有的 Ghostty 打包流程。

路线图

本次发行时我们没有计划后续补丁发行。我们相信剩余的 bug 很小,可以在未来更大的 1.2.0 发行中解决。我们会继续监控 issue tracker 和 pull requests,以发现可能出现的重大问题。

重点将转向 1.2.0 发行。这将是一次更大的发行,包含更显著的变更与特性。其时间表尚未确定,但可能还要数月。

1.2.0 为 Linux 规划的一个重大破坏性变更是要求 libadwaita。我们在 1.1.0 发行中宣布了这一意向,并征求反馈。在提供反馈前,请仔细阅读关于该变更的细节。