Ghostty 1.0.1

Ghostty 1.0.1 的发行说明,发布于 2024 年 12 月 31 日。

安全

  • GHSA-5hcq-3j4q-4v6p。修复了一个安全漏洞:Ghostty 之前对窗口标题序列处理不当,可能导致任意代码执行(需要用户交互)。

  • GHSA-hfg5-8q2c-crhc。用 write_*_file keybind 动作创建的文件此前默认为 0644 模式,允许任何本地用户读取该文件。该文件现在默认为 0600 模式以防未授权访问。

亮点

默认配置文件

PR:#3460

如果未找到非空的配置文件,Ghostty 现在会在启动时创建一个默认配置文件。基于我们的零配置哲学,默认配置文件只有注释,但这些注释有助于用户了解文件位置、语法和文档。

1.0.0 发布时,我们注意到关于配置文件位置、如何编辑以及有哪些选项存在大量困惑。此更改旨在帮助用户更好地理解如何配置 Ghostty。

位图字体支持

PR:#4115(CoreText)、#3837(Freetype)

Ghostty 现在在 macOS 与 Linux 上都支持位图字体。位图字体仍必须是 truetype 格式,但可以包含每个字形的位图而非轮廓。

macOS:"Settings" 改进

PR:#4004

"Settings" 菜单选项(open_config keybind 动作)在多方面得到改进。

首先,Ghostty 现在会找到第一个非空配置文件来打开(如果存在)。此前 Ghostty 总是先打开 XDG 配置路径,即使 AppSupport 路径存在。这造成了困惑,因为 AppSupport 路径会覆盖 XDG 路径。现在,Ghostty 在 AppSupport 路径存在时打开它,否则打开 XDG 路径。

其次,Ghostty 现在在两个路径都不存在时正确地把 AppSupport 路径排在 XDG 路径之前。这很重要,因为 AppSupport 路径覆盖 macOS 上的所有其他路径。

第三,Ghostty 现在使用 -t 旗标与 open 在文本编辑器中打开配置文件。

Note

未来的更新将允许用户用他们的 $EDITOR 打开配置文件。另一次未来的更新将允许用户通过 GUI 修改配置文件。

改进

  • 颜色值现在接受简写十六进制值(如 #ABC)。#4111
  • confirm-close-surface 现在可以设为 always,以便在关闭窗口时总是显示确认对话框。#3700
  • macOS:为 Spotlight 搜索元数据添加 "terminal" 关键词。#3745
  • GTK:添加 window-titlebar-foreground 与 window-titlebar-background 配置选项。#3806
  • 内置 iTerm2 配色方案更新至 e030599a。

Bug 修复

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

  • 具有映射到按键的触发器的 keybind 现在被当作翻译键(translated key)而非 unicode 触发器,即 cmd+1 现在可与 cmd+one 一起工作,且 cmd+. 与 cmd+period 相同。#4147
  • write_selection_file 有时会写入空内容。#4078
  • TUI 应用中的超链接更稳定。#3903
  • 重新加载配置不再覆盖 OSC 10/11/12。#3228
  • scrollback-limit 配置现在接受大于 32 位的数字。#3906
  • 修复 macOS 与 Linux 上的问题 background-opacity。#3347
  • 修复如果 --font-family="" 特定于命令行设置时可能发生的崩溃。#4151
  • vt: 按照更新后的规范,OSC 10/11/12 不再发送 mode 2031 DSR 报告。#3994
  • vt: 修复 direct-color 解析的边界情况。#4216
  • bash: shell 集成现在能更好地与 sudo 别名协同。#4080

macOS

  • macOS:修复了窗口未完全销毁导致的资源泄漏。#4128
  • macOS:修复在某些情况下 toggle_visibility 会调出不可用的"幽灵窗口"的问题。#3219
  • macOS:Quick Terminal 现在可与 focus-follows-mouse 配合使用。#3337
  • macOS:全屏时标题栏现在与 Ghostty 其余部分一样不透明。#3834
  • macOS:退出全屏现在恢复正确的背景不透明度。#3553
  • macOS:open_config 动作现在优先选择 AppSupport 路径而非 XDG,以匹配加载优先级。#3953
  • macOS:open_config 动作现在把 -t 旗标用于 open,从而使文本编辑器打开。#3284
  • macOS:修复有时导致 quick terminal 消耗 100% CPU、造成显著电量流失的问题。quick terminal 现在空闲时不占 CPU。#4055
  • macOS:App bundle 现在包含 nvim 目录。#3966
  • macOS:帮助菜单项打开 Ghostty 文档。#3990
  • macOS:Blur radius 未设置时现在能在运行时正确重新加载。#3954
  • macOS:修复 $HOME 不可写时的启动崩溃。#3949

Linux(GTK)

  • GTK:通过在不推荐 API 不可用时回退到已弃用 API,正确检测旧版 GTK 上的系统配色方案。#4035
  • GTK:修复同时启用 gtk-titlebar=false 与 gtk-tabs-location=hidden 时窗口损坏的问题。#3178
  • GTK:修复错误检测某些特性最低 GTK 版本的版本比较。#3977
  • GTK:为支持的桌面环境安装 1024x1024 应用图标。#4003
  • GTK:修复 window-decoration=false 与 gtk-titlebar=true 情况下的伪影问题。#3999
  • GTK:window-theme=ghostty 时 Tab 概览现在有样式(需要 libadwaita 1.8)。#3920
  • GTK:gtk-titlebar=false 时 Tab 概览也能工作。#3940
  • GTK:为标题变更添加短暂延迟以避免闪烁。#3746
  • GTK:向 desktop 文件添加 xdg-terminal-exec 字段。#3853
  • GTK:支持对没有 X11 支持的 libgtk 构建。#3748
  • GTK:修复关闭表面时可能的段错误。#3694

面向软件包维护者的变更

  • Ghostty 源码 tarball 现在命名为 ghostty-${VERSION}.tar.gz(原先 ghostty-source.tar.gz)并解压到名为 ghostty-${VERSION}(原先 ghostty-source)的目录。这更好地符合标准的源码 tarball 约定。PACKAGING.md 文件已更新以反映此变更。#3490
  • DESTDIR 现在按 PACKAGING.md 中的文档正常工作。#3426

已知问题

Ghostty 1.0.1 仍包含许多已知问题,但被认为对一般专业用途是稳定的。

我们正努力分类并解决这些问题。本次发布解决的是我们认为最关键的问题,尤其是考虑到许多人即将从假期归来重新工作。已知的或新发现的问题的更多信息请看 GitHub discussions 与 issue tracker。

路线图

我们计划在不远的将来发布 1.0.2。我们不想养成发布过多补丁版本的习惯,但初次公开发布中发现的一些重要问题,我们认为需要尽快解决。

我们为 1.0.2 考虑的主要问题类别是键盘输入问题(尤其非美式键盘布局)、xterm 兼容性问题,以及 Linux 与 macOS 上的 GUI 问题。

长期来看,我们计划遵循一个一般模式:每次重大发行后只发布一两个补丁版本,接着进入为期数月的开发期以迈向下一个重大发行1。这一模式能让软件包维护者跟上我们的发行节奏,把软件包送入分发渠道而不至于频繁折腾,同时让维护者专注于新功能与改进。

Footnotes

  1. Barring any critical issues or security advisories that require immediate attention. ↩