Ghostty 1.4
TL;DR · AI 摘要
Ghostty 1.4.0 版本带来性能优化、完整的 Kitty 图形支持及多项安全修复,适用于终端用户和开发者。
核心要点
- 4.0 版本实现 100% 完整的 Kitty 图形动画支持
- 包含 2889 次提交和 172 名贡献者的改进
- 修复 10 个安全漏洞,涉及命令注入和内存破坏风险
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Ghostty 1.4.0 更新
- 核心改进
- 性能优化
- Kitty 图形实现
- SSH 集成增强
- 安全修复
- 10 个 GHSA 漏洞修复
- Paste 保护增强
- tmux 控制模式防护
金句 / Highlights
值得收藏与分享的关键句。
Ghostty 1.4.0 实现 100% 完整的 Kitty 图形支持,包括动画和相对定位
修复了通过恶意 Kitty 命令导致内存崩溃的漏洞(GHSA-mhff-mv4q-fp63)
包含 2889 次提交,由 172 名贡献者共同完成
1.4.0 - 发布说明
- Ghostty 文档
- 安装
- 发布说明
- 1.4.0
Ghostty 1.4.0
Ghostty 1.4.0 的发布说明,发布于 2026 年 10 月 27 日。
Ghostty 1.4.0 是一个重大版本更新,包含显著的性能和内存优化,实现 100% 完整的 Kitty 图形支持(含动画和相对定位功能,这是首个非 Kitty 终端实现该功能的项目),改进 SSH 集成,并在所有平台上进行了数百项改进和修复。
本次发布包含 7 个月的工作成果,涉及 172 位贡献者提交的 2,889 次代码变更。感谢所有为本次发布做出贡献的开发者、维护者、社区管理员、翻译者、打包者和用户。
这些发布说明由 Ghostty 维护者团队精心手工编写,包含完整的变更日志。撰写过程耗时 16 小时以上,请尽情阅读。🥰
Ghostty 是非营利项目!请支持开发。
几乎所有捐款都将直接支付给贡献者。了解更多关于如何参与支持的方式。
了解更多 →
安全更新
- GHSA-4hwh-wx3w-3fqg。粘贴保护机制未将回车符视为行结束符,导致在不使用括号粘贴的程序中,粘贴内容可能在未经确认的情况下执行命令。需要用户交互(复制-粘贴)触发。
- GHSA-mhff-mv4q-fp63。恶意 Kitty 图形命令可能导致 Ghostty 崩溃或卡死,强制分配大量内存,或在有限情况下读取/删除允许的临时目录外的文件。仅需显示恶意输出即可触发。
- GHSA-hcr9-7hcr-mjm8。通过 tmux 控制模式,恶意终端输出可导致 Ghostty 崩溃并关闭所有窗口。无需安装 tmux。影响版本:Ghostty 1.3.0 和 1.3.1。
- GHSA-hp9c-qp4q-cpw3。与上述影响相同,通过零尺寸或超大尺寸窗格的 tmux 控制模式布局触发。影响版本:Ghostty 1.3.0 和 1.3.1。
- GHSA-w9q4-5jvv-mcv4。如果删除包含带样式或超链接光标的滚动回放页面,清屏到滚动回放区域可能导致内存损坏。仅需显示恶意输出,且需设置极小的滚动回放限制(如 0)。默认设置不受影响。
- GHSA-2r63-vmw6-3m3c。精心构造的目录名称可能使 zsh shell 集成发送任意转义序列,例如通过 OSC 52 静默替换剪贴板。bash 的影响范围较小。仅需从不受信任内容(如克隆的仓库)进入目录即可触发。
- macOS: GHSA-cw69-wm67-5pv8。点击精心构造的 OSC 8 超链接可能打开不安全的本地文件或自定义 URL 协议,导致任意命令执行。Ghostty 现在会阻止不安全目标并确认自定义 URL 协议。需要用户交互(cmd-click)触发。
- macOS: GHSA-mfw9-xcr3-7gfp。与上述问题相同,影响通过链接配置检测的链接(包括默认 URL 匹配器)。需要用户交互(cmd-click)触发。
- macOS: GHSA-v8cw-fg4j-jcc4。拖放文本跳过粘贴保护,与上述影响相同。需要用户交互(拖放)触发。
- macOS: GHSA-mxqx-236q-wrv7。打开包含控制字符的文件名可能执行与确认对话框中显示不同的命令。需要系统中存在精心构造的文件并确认对话框。
Note: 我几周前就为上述公告请求了CVE编号,但GitHub尚未分配。如果/当它们被分配时,我会在上方更新正确的CVE编号。
重点内容
macOS 27 支持
PRs: #12999 #13069 #13393 #14413 #14414
Ghostty 1.4 现在支持 macOS 27(Golden Gate)。大部分工作是兼容性修复:
- 标题栏中的标签(macos-titlebar-style = tabs)现在可以正确布局。
- 本地标签栏不再以实心灰色条的形式覆盖您的主题。现在新玻璃风格可以与终端背景融合。
- 当启用降低透明度时,macos-titlebar-style = hidden 不再遮盖终端的顶部行。
- 应用图标不再有细边框。
- 当Ghostty没有打开任何窗口时,快捷方式“新建窗口”操作不会再打开两个窗口。
Ghostty 1.4 与之前的 macOS 版本(包括 macOS 13(Ventura))完全兼容。有关更多详细信息,请参阅系统要求。
注意:Ghostty 1.3.1 可以在 macOS 27 上运行,但存在上述部分视觉问题,例如灰色标签栏。
Kitty 图形动画和相对定位
PRs: #13943 #13939 #13935 #13934 #13893 #13933 #13389 #13270 #13281
Ghostty 现在支持 Kitty 图形动画和相对定位。这些是Ghostty之前未支持的Kitty图形协议的最后两个主要功能。
使用Kitty协议显示动画图像的程序(例如使用kitten icat显示的动画GIF),现在在Ghostty中会播放动画,而不是显示静态帧。支持帧传输、合成和播放控制,动画在终端不可见时会暂停。相对定位允许程序将一个图像相对于另一个图像的位置进行定位,因此子图像会随父图像移动。
我们还对规范和Kitty本身进行了全面的符合性检查,修复了数十个行为差异。例如,图像现在会与滚动区域内的文本一起滚动(#4323),重新传输图像ID会替换旧图像(#6711),无效的图像数据现在会收到错误响应而不是静默,这可能会导致客户端挂起。完整列表请参阅终端功能部分。
Kitty图形也更快了。图像负载现在通过SIMD批量解析,而不是逐字节解析,使大图像传输在我们的基准测试中解析速度提高了约16倍(64 MiB图像数据,x86_64 Linux),并且绘制图像每帧的成本大幅降低。
我们的Kitty图形实现现在覆盖了已发布规范的100%,使Ghostty(以及libghostty)成为第一个在Kitty本身之外实现此功能的终端。
注意:压缩降低的是常驻(物理)内存,而非虚拟内存,因此在测量时应查看常驻内存。目前该功能仅在 macOS 和 64 位 Linux 上可用。
除了滚动缓冲区之外,内存使用在许多地方都有所降低:
- 新建的空终端现在在 macOS 上使用约 16 KiB 的终端页面内存,相比 Ghostty 1.3.1 的 128 KiB 降低了 87.5%。
- 在 macOS 和 Linux 上,清除或裁剪滚动缓冲区释放的内存现在会立即返还给操作系统,而不是一直保留到终端关闭。
- 隐藏标签会释放其 GPU 资源。在 macOS 上,当有 1 个可见标签和 20 个隐藏标签时,GPU 内存从约 385 MiB 降至 18 MiB。当标签再次变为可见时,重新构建所需时间不到 1 毫秒。
性能改进
PRs: #13209 #13220 #13226 #13227 #13537 #13827 #13587 #14011 #13722 #14035 #12760
Ghostty 1.4 在各方面都有性能改进,相比之前的版本实现了显著提升。
最大的突破来自一个意外发现:在 macOS 上,内核对每个 pty 的读取操作都限制在约 1 KiB,无论读取缓冲区有多大。此前 Ghostty 会逐个处理每个读取请求,导致每千字节都要支付额外开销,输出程序在解析期间会被阻塞。现在 Ghostty 在一个线程上持续读取 pty,同时在另一个线程上进行解析,使端到端 I/O 吞吐量在 macOS 上(M4 Max,纯文本和 Unicode 文本)相比 Ghostty 1.3.x 提升了 25% 至 55%。
VT 处理本身也显著提速。在解析器基准测试中,纯 ASCII 文本速度从 128 MB/s 提升至 725 MB/s(提升 5.7 倍),CJK 文本速度提升 3.4 倍,处理来自 asciinema 的 2.6 GB 实际终端录制数据集速度提升约 25%。这些改进使在 macOS 上通过 cat - 命令输出 150 MB 文本文件的时间从 1.5 秒缩短至 566 毫秒。
其他显著改进:
- 窗口调整:带有大量滚动缓冲区的终端调整速度提升约 6 倍(120x80 分辨率,10,000 行滚动缓冲区),包含大量 CJK 文本或表情符号的历史记录调整速度提升 3 至 5 倍。
- 渲染:渲染器每帧持有终端锁的时间减少 2.7 倍至 11 倍,为 I/O 线程腾出更多时间处理密集输出。
- 复制与搜索:将终端内容格式化为纯文本、HTML 或 VT(支持剪贴板复制、
write_screen_file和滚动缓冲区搜索)速度提升 1.5 倍至 8 倍。
- 启动速度(macOS):从启动到显示窗口速度提升约 15%,首次渲染帧速度提升 27%。
- 空闲能耗:在 macOS 上,当没有内容需要绘制时渲染器的显示链接会进入睡眠状态。在 GTK 上,隐藏标签会停止渲染,与 macOS 行为一致。
- 大型 OSC 序列:OSC 52 剪贴板负载解析速度提升约 30 倍,即使是短序列如标题更改也快了约 6 倍。
新 OpenGL 渲染器(Linux, FreeBSD)
PRs: #14052 #14269
GTK 应用程序现在采用新的渲染管线。不再使用 GtkGLArea,渲染器改为在独立线程上通过 EGL 进行绘制,将每一帧导出为 DMABUF 并传递给 GTK 显示。现在采用三重缓冲机制,应能显著减少画面撕裂现象,且所有 OpenGL 调用都不再运行在主线程,使我们能够移除多个变通方案。
最明显的变化是分数缩放下文本的清晰度提升。在125%或150%等分数显示缩放比例下,文本和框线字符不再模糊(#1938)。我们之前修复过这个问题,但上游GTK的更新导致问题再次出现。Ghostty现在会按照窗口的真实分数比例进行渲染,每个渲染像素都精确对应屏幕上的一个像素。
新的渲染表面需要系统级的EGL库(详见《针对包维护者的变更》)。对于无法导出DMABUF的GPU驱动,Ghostty会回退到通过CPU复制帧的方式,虽然速度较慢但能正常工作。
Kitty剪贴板协议
PRs: #13962 #13993 #13995 #13998 #14002 #14061
Ghostty现在在macOS和GTK平台都实现了Kitty剪贴板协议(OSC 5522)。1.3版本可以解析该协议但未实现完整功能。
OSC 52只能读写纯文本。Kitty剪贴板协议允许终端内的程序读写任意类型的剪贴板数据(如图片或HTML),并可从剪贴板中选择特定格式。程序还可以启用粘贴事件(模式5522),该事件会告知程序粘贴内容包含的格式,以便程序选择需要的格式。例如,终端程序可以通过这种方式接收粘贴的图片。
剪贴板访问遵循现有的剪贴板读取和写入配置。默认情况下,读取操作会提示授权,写入操作默认允许。授权提示会预览剪贴板内容,包括图片。发送密码的程序可在当前终端会话中记住用户输入。新增的clipboard-write-limit-bytes配置限制单次写入大小(默认64MiB)。超出限制的写入操作会失败且不会修改剪贴板内容。
分割拖放功能(GTK)
PRs: #10423 #13706
现在可以通过拖拽方式在GTK上重新排列分割窗口,这一功能与Ghostty 1.3在macOS上引入的功能一致。当标签页包含两个或更多分割窗口时,每个分割窗口顶部会显示拖拽手柄。点击手柄后可将分割窗口拖放到其他分割窗口上(包括其他标签页和窗口)。叠加层会显示该分割将落在目标分割的哪一侧。终端内容、工作目录和运行进程都会随分割窗口移动。
新增的drag-handle配置控制macOS和GTK平台下拖拽手柄的显示时机:auto(默认)、always或never。设置为never时,分割窗口无法通过鼠标重新排列。用户普遍反映拖拽手柄容易干扰操作,因此隐藏手柄是常见需求。
在GTK平台,分割窗口只能拖放到其他分割窗口上。通过拖拽分割窗口创建新标签页或窗口的功能仅限于macOS。
终端模拟精度
PRs: #14454 #13494 #14483 #14538 #14673 #14375 #14144
Ghostty 1.4对核心终端模拟功能进行了数十项改进。我们现在在CI中使用esctest(Thomas Dickey的终端一致性测试套件)对Ghostty的终端核心进行测试。同时我们修复了与xterm在边距内光标移动、制表位、字符集、模式报告等多方面的差异。完整的相关变更列表请参见终端能力章节。
Ghostty现在还支持多种新序列,包括软终端重置(DECSTR)、扩展光标位置报告(DECXCPR)、反向箭头键模式(DECBKM)以及以字符为单位的屏幕尺寸报告(CSI 19 t)。程序现在也可以通过可见性报告(模式2033)查询终端是否可见,从而在隐藏时停止渲染。
键盘编码也更贴近xterm,修复了modifyOtherKeys模式2和非ASCII键的旧版Alt作为Escape的编码方式。
默认情况下,两个新序列被禁用,因为它们可能被不受信任的程序(包括远程机器上运行的程序)滥用:
# 允许程序调整窗口大小(CSI 8 t)
vt-window-resize-allowed = true
# 允许程序请求屏幕校验和(DECRQCRA)
vt-xt-checksum-report = true与ghostty +ssh的SSH集成
PRs: #12582 #12814 #13533 #13844 #14472 #14854
Ghostty 1.2引入了SSH shell集成功能作为初步实现。在Ghostty 1.4中,这些功能由新的ghostty +ssh CLI操作支持:这是一个即插即用的ssh包装器,它为Ghostty准备远程会话,然后使用您的参数不变地运行实际的ssh。
ghostty +ssh [email protected]
# 或者设置别名,使所有ssh调用都通过它
alias
ssh=
'ghostty +ssh --'连接前,+ssh会在远程主机上安装Ghostty的terminfo,以便使用正确的xterm-ghostty TERM值,并转发COLORTERM、TERM_PROGRAM和TERM_PROGRAM_VERSION。如果terminfo安装失败(例如远程主机上没有tic),则回退到TERM=xterm-256color。--terminfo=false、--forward-env=false和--verbose等标志控制每个步骤。
ssh-env和ssh-terminfo shell集成功能(仍为可选)现在也会调用+ssh。之前,每个shell集成都包含自己的逻辑副本,这占用了大约三分之一的shell集成脚本。现在bash、zsh、fish、elvish和Nushell的行为完全一致,您也可以通过直接调用ghostty +ssh从脚本或其他任何地方获得相同的行为。
terminfo安装本身也更加可靠。Ghostty现在始终安装自己的捆绑terminfo,而不是接受远程主机已有的xterm-ghostty条目,并且当Ghostty更新更改terminfo时会自动重新安装。它不再需要infocmp或本地机器上的Ghostty terminfo。安装按主机和端口缓存,因此同一地址后的两台机器不再共享缓存条目。ssh-env不再静默覆盖~/.ssh/config中的SetEnv条目(#11518)。
管理此缓存的+ssh-cache命令现在支持位置参数(ghostty +ssh-cache [email protected]),并新增了--prune=30d标志。如果对+ssh-cache进行脚本操作,请参阅重大变更部分。
系统要求
macOS:Ghostty 1.4所需的最低macOS版本保持不变(macOS 13 Ventura)。Ghostty现在兼容macOS 27。
GTK:Ghostty 1.4需要GTK 4.18和libadwaita 1.7,较Ghostty 1.3所需的GTK 4.14和libadwaita 1.5有所升级。这与我们的GTK/Adwaita版本策略一致。值得注意的是,Ubuntu 24.04 LTS不满足此要求。使用较旧GTK或Adwaita版本的系统可以通过使用Ghostty的旧版本或Flatpak包来绕过此要求。#14330
OpenGL(GTK):所需的最低OpenGL版本仍为4.3,但Ghostty现在通过EGL而不是GTK的OpenGL小部件进行渲染。这几乎对所有人都是透明的,但如果Ghostty因EGL错误无法启动,请确保您的GPU驱动程序提供有效的EGL实现。
重要通知 我们之前宣布 Ghostty 1.4 将需要 macOS 14。此次更新并非强制要求,因此我们仍保留对 macOS 13 的支持。我们计划在未来的版本中移除对 macOS 13 的支持。苹果公司已于 2025 年秋季停止对 macOS 13 的安全支持,因此我们建议用户无论如何都进行升级。
突破性变更
1.4.0 版本中以下行为发生了变化:
copy-on-select已被重构,现在支持none、primary、clipboard或both四种选项。clipboard的含义发生了变化:此前会同时复制到选择剪贴板和系统剪贴板,现在仅复制到系统剪贴板。如果你设置copy-on-select = clipboard但希望保留旧版行为,请将其改为both。#12600 #12604
- macOS:
copy-on-select的默认值已从true改为none,因此选择文本时不再自动复制,且默认情况下中键粘贴选择内容的功能也不再生效。要恢复 1.3 版本的行为,请设置copy-on-select = primary。请注意,macOS 上显式设置copy-on-select = true现在会将选择内容复制到系统剪贴板,这与 1.3 版本的行为不同。#12600 #12604
- macOS:
cmd+arrow_up和cmd+arrow_down现在会再次触发jump_to_prompt功能,与 Terminal.app 和 Ghostty 1.2 的行为保持一致。在 1.3 版本中,这些按键被硬编码为滚动到顶部和底部且无法重新绑定。如需保留 1.3 版本的行为,请设置keybind = cmd+arrow_up=scroll_to_top和keybind = cmd+arrow_down=scroll_to_bottom。#12245
- GTK:默认的
ctrl+shift+page_up和ctrl+shift+page_down键绑定现在用于在标签页之间左右切换(move_tab),与 Firefox、GNOME Terminal 和 VS Code 的行为一致。jump_to_prompt已迁移到ctrl+shift+arrow_up和ctrl+shift+arrow_down,因此终端中的程序将不再接收到这些按键。如果某个程序需要这些按键,请通过keybind = ctrl+shift+arrow_up=unbind和keybind = ctrl+shift+arrow_down=unbind取消绑定。#4998 #12458
废弃功能
以下列表中的废弃功能目前通过兼容层仍保持兼容,但如果忽略这些变更,可能在未来的版本中失效:
scrollback-limit已更名为scrollback-limit-bytes,为新增的scrollback-limit-lines配置腾出空间。#13473
copy-on-select = true在 Linux 和 FreeBSD 上已被copy-on-select = primary替代,在 macOS 上则被copy-on-select = clipboard替代。copy-on-select = false已被copy-on-select = none替代。#12600 #12604
这些废弃功能没有明确的移除时间表,但我们建议尽早适应新配置,以避免未来可能出现的任何中断。
完整更新日志
- 现在终端在空闲时会自动对滚动缓冲区历史记录进行透明压缩,对于典型文本,压缩后的滚动缓冲区占用的物理内存减少了 70% 到 90%。压缩功能支持 macOS 和 64 位 Linux,并可通过新配置
scrollback-compression禁用。由于此改进,默认滚动缓冲区限制已从 10 MB 提高到 50 MB,平均情况下仍比之前完整的滚动缓冲区占用更少的内存。#13264
- 新增配置
scrollback-limit-lines通过行数而非字节来限制滚动缓冲区。原有的scrollback-limit配置已更名为scrollback-limit-bytes(旧名称仍可继续使用)。如果同时设置了两者,先达到的限制将生效,且两者都支持unlimited配置。#13473
- copy-on-select 现在支持 none、primary、clipboard 和 both,不再影响中键粘贴(详见 middle-click-action)。clipboard 现在仅复制到系统剪贴板,因此需要使用 both 来实现之前的行为。macOS 上的默认值现已改为 none。有关迁移细节,请参阅重大变更部分。 #12600
- 新增配置 middle-click-action 用于配置中键点击行为:primary-paste(默认)从选择剪贴板粘贴,clipboard-paste 从系统剪贴板粘贴,ignore 则不执行任何操作。 #12478
- 新增绑定操作 move_tab_to_new_window 可将当前标签页移动到一个独立的新窗口中。该操作也可在命令面板中使用。 #2630
- 新增 CLI 命令 +explain-config 可打印配置选项或绑定操作的文档,例如 ghostty +explain-config font-size。 #11546
- +explain-config 和 +show-config CLI 命令现在在交互式运行时会通过 $GHOSTTY_PAGER 或 $PAGER(默认使用 less)对输出进行分页。可通过 --no-pager 参数或将分页器设置为空值来禁用分页功能。 #11940
- 新增配置 drag-handle 控制分割拖拽手柄的显示时机:auto(默认)、always 或 never。 #13706 #13709
- 回滚搜索现在在导航到第一个或最后一个匹配项后会自动循环。 #11449
- 新增配置 link-osc8(默认为 true)可设置为 false 以完全禁用 OSC 8 超链接。禁用 OSC 8 超链接后,超链接不会被高亮、预览、复制或打开。 #13634
- 在 Ghostty 中运行的进程现在会收到一个 GHOSTTY_SURFACE_ID 环境变量,该变量可唯一标识其运行的终端。 #12027
- 右键上下文菜单现在新增了 "Close Split" 选项。 #11173 #11174
- 升级至 Unicode 18。 #14293
- macOS 上的 I/O 吞吐量提高了 25% 到 55%,通过在读取 pty 时并发解析之前读取的输出实现。 #13209
- VT 处理速度整体显著提升。纯文本处理速度最高可达原来的 6 倍,实际输出(基于大型 asciinema 数据集测量)速度提升约 24%,重字符输出速度提升约 3 倍,DEC 特殊图形(线框图)、重复字符(REP)、超链接密集输出和滚动区域的处理速度均有提升。 #13220 #13226 #13231 #13294 #13625 #13826 #14356
- 大型 OSC 序列(如 OSC 52 剪贴板写入)的解析速度提升约 30 倍,小型 OSC 序列(如标题更改)的解析速度提升约 6 倍。 #14011 #13565
- 使用重排功能调整大小时,大型回滚内容的处理速度提升约 6 倍,宽字符(如 CJK 或表情符号)密集的回滚内容处理速度提升 3 倍至 5 倍。 #13537 #13827
- 终端现在显著减少内存占用。新终端的屏幕内存占用从 macOS 上的 128 KiB 降至约 16 KiB,每个终端页面内存占用减少 30%,从回滚区域释放的内存(如通过清除回滚区域)现在会返还给操作系统。 #13240 #13245 #14130 #14137 #14138
- Kitty 图形处理速度提升。大型图像传输通过 SIMD 批量解析,zlib 压缩图像解压速度提升约 17%,像素格式转换避免了额外复制,图像绘制的每帧开销显著降低,尤其在屏幕显示 Unicode 占位符图像或长回滚内容时效果更明显。 #13270 #13281 #13987 #14422 #14780 #14789
- 终端内容格式化速度提升 1.5 倍至 8 倍,这加快了剪贴板复制(纯文本、HTML 和 VT)、write_screen_file 及相关操作以及回滚搜索的速度。 #13587
- 渲染器每帧持有终端锁的时间减少了2.7倍至11倍,字形和字体查找速度更快。 #13227 #14300 #14301 #14420 #14406 #13258
- command-palette-entry = clear 会清除所有命令面板条目,包括默认条目。 #12682
- window-padding-balance 新增了一个值,可使四边的内边距均衡分配,且不会限制顶部内边距。 #11491
- 主题功能现在在主题文件路径中支持 ~ 展开为家目录,包括独立的浅色和深色主题。 #13840
- +list-themes 现在支持使用 g 和 G 快速跳转到第一个和最后一个主题,并支持使用 ctrl+d 和 ctrl+u 实现页面上下滚动。 #13681 #14607
- 终端检查器现在可以复制终端I/O事件或导出到文件。 #13519
- 内置主题更新至 release-20261019-151001-86a776d 版本。此更新新增了356个主题,未重命名或删除任何主题。上游修改了10个现有主题的颜色:Adwaita、Adwaita Dark、Atom One Light、Catppuccin Frappe、Catppuccin Latte、Catppuccin Macchiato、Catppuccin Mocha、Cursor Dark、Dark Modern 和 Electron Highlighter。
- 修复配置解析器在注释或空行后遇到内部缓冲区边界时静默忽略所有设置的问题。这通常只影响较长的配置文件。 #13638
- 修复性能退化问题:经过长时间运行后,渲染器不再每帧重建完整的终端状态。 #13585
- 修复自动创建的配置文件为空的问题,现在会包含配置模板内容。 #13774
- +edit-config 现在支持在 $EDITOR 或 $VISUAL 包含参数时正常工作,例如 zed --new 。 #11897
- adjust-cursor-height 功能已恢复。 #13225
- 鼠标选择改进:在使用 ctrl / cmd 三击后拖动时,选择范围会根据命令输出扩展;屏幕切换(例如切换到备用屏幕)时自动滚动停止;macOS 上的力触选择会在点击位置选择单词而无需开始拖动;释放拖动操作不再激活链接或提示点击。 #12830
- 双击选择单词时不再跨硬换行继续选择,双击宽字符(如CJK字符)的任一半部分会选中整个单词。 #14354 #14391
- 选择范围边缘的宽字符现在始终渲染为已选中状态,并在复制时包含这些字符,即使宽字符换行到新的内部页面也是如此。 #14632 #14651
- 三击选择整行时,点击OSC 133提示边界之间的空白单元格不再拉取相邻的提示文本。 #14553
- 在启用shell集成时,链接检测和双击选择不再将提示文本与相邻的命令文本合并。 #12435
- 使用 cmd / ctrl -点击打开的文件路径不再包含尾随空格,这解决了某些TUI打印路径时打开失败的问题。 #13505
- 启用点击移动功能后,在shell提示符处点击时,鼠标释放事件现在会正确报告给接收鼠标按压的程序。这修复了fzf的ctrl+r历史搜索等程序中的双击选择问题。 #14710
- 调整大小后,shell重绘现在使用新的终端尺寸进行处理。这修复了调整大小后提示符重复或错位的一个原因。 #14706
- 滚动操作(如点击滚动条)现在支持非常大的滚动回放(数百万行)。 #13048
- 自定义命令面板条目操作(带字符串参数,如 set_tab_title )从命令面板运行时,其参数不再被转义。 #13609
- HTML 剪贴板复制操作不再包含多余的末尾换行符。 #13543
- 使用 VT 模式( copy_to_clipboard:vt )复制以及生成 VT 屏幕文件时,现在可保留 OSC 8 超链接、文本间的空白区域以及仅包含背景色的单元格(如彩色状态栏)。VT 屏幕文件还会保留末尾的空白行。 #14711 #14725 #14766
- 释放修饰键后,鼠标指针现在会恢复由运行程序(OSC 22)设置的形状,而不是重置为默认形状。 #14128
- 自定义着色器不再接收到交换后的选择前景色和背景色统一变量。 #14460
- Ghostty 在输出包含大量样式、字形或超链接时,不再向日志中大量输出 "adjusting page capacity" 消息。 #14631
- 修复滚动回放、调整大小或清除历史记录后,重复使用行时可能出现的换行和提示状态过时问题,这可能导致复制、搜索、选择和重排结果错误。 #14010
- 修复删除或擦除换行宽字符后,前一行的渲染状态过时问题。 #14054
- 修复在程序向终端发送大量查询(如颜色查询)时重新加载配置可能导致的冻结问题。 #14833
- +list-themes 在搜索未匹配任何主题时,现在对部分按键不再崩溃,方向键下键现在移动一行而非 21 行。 #14612 #14605
- 修复清除滚动回放、调整大小或清除历史记录后滚动回放搜索的崩溃问题。 #11957 #13274 #13282
- 修复在滚动或擦除跨页面边界行时,当需要更多容量时可能出现的崩溃和视口损坏问题。 #12300 #12907 #12935
- 修复在大量输出期间点击或选择文本时可能出现的使用后释放崩溃问题。 #12463
- 修复调整大小时重排超链接可能出现的崩溃问题。 #13524
- 修复在跨页面边界滚动或擦除行时,当需要更多容量时可能出现的崩溃和内存损坏问题。 #13394 #13397
- 修复通过模糊测试发现的打印导致页面扩展或清除屏幕到滚动回放后可能出现的崩溃和内存损坏问题。 #11261 #13997
- 修复选择、固定点、搜索、标题和工作目录更新以及调整大小错误处理中的多个潜在崩溃和未定义行为。 #12894 #13275 #13278 #13367
- 修复在大量pty写入排队时(如大块粘贴期间)可能出现的崩溃或输入损坏问题。 #13659
- 修复IME预编辑文本(包含宽字符)在现有宽字符之间组合时可能出现的越界访问问题(如韩文输入)。 #12479
- 修复按下或释放鼠标按钮11时的崩溃问题。 #14759
- 修复 write_screen_file 、 write_scrollback_file 和 write_selection_file 操作每次使用时泄漏两个文件描述符的问题,这最终可能导致无法打开新终端。 #13644
- 修复终端I/O中的内存和文件描述符泄漏问题,包括只读模式下的写入操作以及通过输入配置读取的文件。 #13574 #13579 #13931
终端能力
- vt: 现在完全支持 Kitty 图形动画:帧传输、合成、动画控制和渲染。 #5255 #13943
- vt: 现在支持 Kitty 图形相对定位( P= 、 Q= 、 H= 、 V= ),允许图像相对于其他图像进行定位。 #13939
- vt: 现在支持 Kitty 图形瞬时图像使用提示。瞬时图像在图像存储空间不足时会优先被清除。 #13389
- vt: Kitty剪贴板协议(OSC 5522)现已在macOS和GTK上实现,包括粘贴事件(模式5522)。读取和写入遵循剪贴板读取和剪贴板写入规则,新增的剪贴板写入字节限制配置(clipboard-write-limit-bytes)可限制单次写入的大小。 #10549 #13962 #13993 #13995 #13998 #14002 #14061
- vt: 支持可见性报告(模式2033和CSI ? 998 n),可告知程序终端不可见时的状态(例如后台标签页或其它工作区),从而停止渲染。 #13494
- vt: 若启用了新配置项vt-window-resize-allowed(默认关闭),程序可通过xterm CSI 8 ; rows ; cols t序列调整窗口大小。该请求在分割窗口、多标签窗口、快速终端以及全屏/最大化/平铺窗口中会被忽略。 #1115 #14375
- vt: 支持OSC 133 click_events=2,可报告相对于提示符的行坐标位置的提示符点击事件。 #10865 #12953
- vt: 支持软终端重置(DECSTR, CSI ! p),可在不清除屏幕的情况下重置模式、边距和文本属性。 #14538
- vt: 支持回退键模式(DECBKM, 模式67),允许程序选择回退键发送DEL(0x7f,默认)还是BS(0x08)。 #12226
- vt: 支持DECRQCRA和XTCHECKSUM屏幕校验和报告,这些功能主要用于终端测试套件。由于程序可通过这些功能读取屏幕内容,除非启用新配置项vt-xt-checksum-report,否则默认禁用。新配置项vt-xt-checksum-extension控制校验和的计算方式。 #14483
- vt: 支持对CSI 19 t(以字符数报告屏幕尺寸)和DECXCPR(CSI ? 6 n)扩展光标位置请求的响应。 #14633 #14673
- vt: DECRQM现在可回答ANSI模式查询(CSI Ps $ p),将DECECM及其他未实现的ANSI模式报告为始终重置(如同xterm),且不再在回复中截断超过32767的模式编号。 #12505 #14236 #14237 #14672
- vt: Ghostty terminfo现在声明支持上划线(Smol/Rmol),使tmux能够传递上划线。DECRQSS SGR回复现在包含上划线以及波浪线、双线、点线和虚线下划线样式。 #13649 #13653 #13470
- vt: terminfo的Se能力现在会将光标重置为配置的光标样式,而非固定方块。这解决了Neovim等程序退出时留下方块光标的遗留问题。 #12482
- vt: OSC负载限制为8 MiB,Kitty图形负载限制为65 MiB,每个单元格限制为64个组合字符,防止终端输出轻易耗尽内存。此更改也修复了无效Kitty图形数据导致的内存泄漏问题。 #12349 #13633
- vt: 实验性支持字形协议(APC 25a1),允许程序注册自定义字形。Ghostty可解析并响应请求,但尚未实现已注册字形的渲染。 #12352 #12930 #12937
- vt: 解析新的程序状态协议(OSC 7501),允许程序报告其当前状态(空闲、运行中、完成、阻塞或失败)。这是Ghostty项目首次提出的终端规范。libghostty可解析该协议,但Ghostty GUI目前暂不处理。 #14560
- vt: 解析(但尚未实现)Kitty桌面通知协议(OSC 99)。 #10467
- vt: 解析(但尚未实现)Kitty拖放协议(OSC 72)。 #13029
- vt: 修复更多tmux控制模式问题,包括运行tmux -CC可能触发的崩溃。tmux控制模式尚未与GUI集成。 #11395 #11935 #14262 #14680
- vt: 在提示符处清屏(例如 bash 或 zsh 中的 ctrl+l)现在会将之前的输出移动到滚动缓冲区中,即使提示符不在最后一行。此前,输出会被清除。 #14660 #14668
- vt: Kitty 图形:使用现有 ID 传输图像现在会替换图像并移除其旧的放置位置,符合规范要求。中断或失败的重传不再会在屏幕上留下过时的图像。 #6711 #13723 #13893
- vt: Kitty 图形:当程序使用 CSI S、CSI T 或滚动边界进行滚动时,图像现在会随文本一起移动,并被裁剪到滚动区域。 #4323 #13935
- vt: Kitty 图形:自动分配的图像 ID 不再与程序选择的 ID 冲突。 #2197 #13934
- vt: Kitty 图形:删除命令现在符合规范和 Kitty 的行为。点删除(d=p、d=c)仅移除该单元格的放置位置,d=a 仅移除可见屏幕上的放置位置,范围删除接受空范围,删除缺失的放置位置不再释放图像。 #13652 #13895 #13898 #13932
- vt: Kitty 图形:命令验证和响应现在与 Kitty 一致。这修复了因无效图像数据导致客户端挂起的缺失响应、误报的查询回复、分块传输回复中丢失的 ID、精确 S 大小的文件传输以及非分块传输导致的中断加载问题。 #13889 #13892 #13896 #13897 #13933 #14811
- vt: Kitty 图形:裁剪后的源矩形不再被拉伸,X/Y 偏移量保持在第一个单元格内。 #13890 #13891
- vt: Kitty 图形:光标移动方式现在与 Kitty 一致,因此连续图像不再重叠。 #13887
- vt: 全部重置(RIS)不再将图像存储限制重置为默认值。 #13951
- vt: OSC 和 APC 序列(如 Kitty 图形命令)如果被 CAN 或 SUB 取消,或被其他控制字符中止,现在会丢弃而不是执行,与 xterm 一致。 #14453 #14812
- vt: 在 modifyOtherKeys 级别 2 下,控制键、小键盘键和 alt+escape 现在像 xterm 一样编码。F13 到 F25、Help 和 Menu 现在在所有遗留编码模式下发送 xterm 的功能键序列。 #14144 #14145
- vt: 遗留 alt-as-escape 编码现在为非 ASCII 键发送完整的 UTF-8 序列。 #14146
- vt: Kitty 键盘协议释放事件在 GTK 上不再重复输入死键或级别 5 键的文本,这在 Neovim 等程序中会导致字符重复。 #13861
- vt: ctrl+alt+shift+backspace 现在在遗留键编码中发送 ESC BS,与 xterm 一致。 #14508
- vt: UTF-8 鼠标模式(1005)现在正确编码按钮,修复了后退和前进鼠标按钮的无效报告问题。 #14532
- vt: 使用 OSC 110、111 或 112 重置前景、背景和光标颜色后,现在会遵循后续的配置更改(如切换浅色/深色主题)。 #13650
- vt: 全部重置(RIS)现在会恢复通过 OSC 4 修改的调色板颜色。 #14480
- vt: 空的 OSC 22 现在会将鼠标指针形状重置为默认值。 #14495
- vt: 长桌面通知(OSC 9 和 OSC 777)中包含多字节 UTF-8 文本时,现在在截断时不再被丢弃或显示为无效 UTF-8。 #13795 #13811
- vt: DCS 字符串现在携带 UTF-8 数据。此前,部分 UTF-8 字节会被丢弃、提前结束字符串或启动新的控制序列。 #14016
- vt: C0 控制码 0x10 到 0x1F 现在会执行而不是作为文本打印,UTF-8 编码的 C1 控制码会被忽略,与 xterm 一致。 #14022 #14023
- vt: 删除整行(CSI 2 K)现在会清除其软换行状态,因此在窗口调整大小时,被删除的行不会再连接在一起。#13637
- vt: 调整窗口大小导致文本重新排版时,光标和保存的光标位置保持正确,修复了调整大小后出现的多余换行或文本被覆盖的问题。#12598 #14458 #14478
- vt: 变体选择符(VS15/VS16)现在应用于前一个字符,修复了部分ZWJ表情符号(如海盗旗)的渲染问题。#12596
- vt: 最后一列中字符后打印的组合符号现在会附加到该字符上。#12581
- vt: 当激活非UTF-8字符集(如DEC线画)时,U+00FF以上的字符(如表情符号)现在会直接显示,而不是显示为空白。#14554
- vt: 单个移位(SS2/SS3)现在仅应用于下一个打印的字符。#14576
- vt: Tab清除(TBC)修复:CSI 0 g不再在没有设置Tab停靠点的位置设置Tab停靠点,CSI g无参数时会清除光标处的Tab停靠点。#13900 #14644
- vt: 禁用自动换行(DECAWM)时进行打印会清除待处理的换行,因此重新启用自动换行不会导致多余的换行。#14652
- vt: 启用反向换行时,从带有待处理换行的光标恢复后向左移动,光标不会再跳转。#14390
- vt: 光标移动现在遵循边距和原点模式:CUB和退格键会停在左边界,CHA、HPA、VPA、HPR和VPR在原点模式下不再重复应用边距偏移。#14761 #14762
- vt: 修复当VS15在光标下将宽字符变窄时导致的崩溃。#13631
- vt: 修复在备用屏幕或禁用换行时,终端缩小时将宽字符截断一半导致的崩溃或内存损坏问题。#14509
- vt: 修复当字形簇在最后一列变宽并在启用字形聚类(模式2027)的滚动区域内换行或换行到下方时导致的崩溃。#14552
- vt: 修复图形密集型会话中因被驱逐的Kitty图像未正确记录位置而导致的内存和性能泄漏问题。#13656
- vt: 修复当OSC颜色序列包含超过两个请求时导致的内存泄漏问题。#13239
Shell集成
- 新增的ghostty +ssh CLI操作封装了ssh命令,并在远程主机上设置Ghostty:它会转发Ghostty的环境并在首次连接到每个主机时安装Ghostty的terminfo,缓存成功安装记录。该操作可直接使用(ghostty +ssh [email protected])或作为别名(alias ssh='ghostty +ssh --')使用,无需Shell集成。现在ssh-env和ssh-terminfo的Shell集成功能会为每个Shell使用该操作。#12582
- ssh-terminfo现在始终在远程主机上安装Ghostty捆绑的terminfo,而不是保留可能过时的xterm-ghostty条目,并在Ghostty的terminfo更新时重新安装。#13844
- ghostty +ssh-cache已重构,支持定位参数、新增--prune选项、统一输出和退出码,并显示缓存文件名称的错误信息。请参阅上方的变更说明。#12814 #13533
- ssh-terminfo现在能区分不同端口上的相同主机,因此会在每个主机上安装terminfo。ghostty +ssh-cache支持host:port格式的目标地址。#14472
- ssh-env不再覆盖~/.ssh/config中的SetEnv条目。#11518 #14854
- bash: 在Bash 4.4+中,失败的命令现在会报告其真实的退出状态,因此命令完成通知不再将每个命令都标记为成功。#14247 #14250
- nu: 现在 ssh 和 sudo 的标签补全功能支持使用 carapace 等外部补全器。 #13310
- bash: 仅用于 macOS 的 /bin/bash 等 Bash 4.4 以下版本的内置 bash-preexec 已更新至 0.7.0 版本。 #14120
- zsh: 修复提示符中多余的 { 符号,以及当 PS1 或 PS2 以裸 % 结尾时提示符标记异常的问题。 #11832
- bash: 修复子shell继承 PROMPT_COMMAND 时出现的 "command not found" 错误。 #11690
- bash: 修复现有 PROMPT_COMMAND 以换行符结尾时出现的语法错误。 #11621
- bash: 修复使用 ble.sh 时提示符出现额外空白行的问题。 #11644
- bash: 修复当 PROMPT_COMMAND 为数组类型时再次加载脚本导致 shell 集成钩子被重复添加的问题。 #14266
macOS
- macOS: 新增对 macOS 27 的支持。此更新修复了标题栏标签布局和背景颜色、应用图标周围的细边框、开启 Reduce Transparency 功能时隐藏标题栏覆盖终端顶部线条的问题,以及快捷键 "New Window" 动作打开两个窗口的异常。 #13001 #13390 #14107 #14411 #12999 #13069
- macOS: 当终端进程退出时,现在会在终端底部显示原生状态栏而非在终端内输出文本。执行时间短于异常命令退出阈值的失败命令会以红色高亮显示。 #7649 #12251
- macOS: 当多个窗口或标签页包含正在运行的进程时,退出或关闭窗口现在会提供 "Review Windows..." 选项,逐步展示每个窗口以便决定关闭内容。 #12742 #14062
- macOS: 命令面板现在支持匹配文本高亮、首字母匹配、动作描述搜索,并根据匹配位置对结果进行排序。 #12264 #13610 #13624
- macOS: 搜索栏现在会记住上次搜索内容,并通过系统查找剪贴板(如 Safari 和 Terminal.app)与其他应用共享搜索记录。 #12516 #12712
- macOS: 现在当选择内容变更时,VoiceOver 等屏幕阅读器会收到通知而非读取过时的选择内容。 #12902
- macOS: AppleScript 终端类和快捷键终端实体现在可以获取前台进程的 pid 和 tty 信息。 #11592 #10756 #11922
- macOS: AppleScript 标签页和终端现在新增可读写的名称覆盖属性,用于设置或清除自定义标题。 #12048 #14733
- macOS: 当启用 macos-titlebar-style = tabs 时,中键点击标签页可关闭该标签。 #11962 #11963
- macOS: 关于窗口中的版本信息现在会链接到对应版本的发布说明。 #11964
- macOS: 自动下载安装的更新不再提示重启,但手动检查更新仍会提供重启选项。 #13623
- macOS: toggle_background_opacity 现在适用于窗口内所有标签页,新窗口会继承当前状态。 #11583
- macOS: cmd+arrow_up 和 cmd+arrow_down 现在执行配置的快捷键绑定(默认为 jump_to_prompt)。Ghostty 1.3 版本此前始终滚动到回滚区顶部或底部,忽略配置设置。要滚动到顶部或底部,请使用 cmd+home 和 cmd+end。 #12245
- macOS: 在配置错误窗口中,Return 键会重新加载配置,Escape 键会忽略错误。 #12601
- macOS: Ghostty 启动速度提升约 15%,首次绘制帧时间缩短约 27%。 #13722
- macOS: 不可见的终端(如后台标签页)现在会释放其GPU资源,并在再次显示时重新构建。拥有20个后台标签页时,GPU内存从约385 MiB降至18 MiB。Metal缓冲区在扩展时也不再过度分配。 #14017 #13490
- macOS: 降低空闲CPU使用率和能耗。当没有内容需要绘制时,显示链接现在会暂停,未聚焦的动画终端每帧刷新最多绘制一次,而非每次写入都绘制。 #14035 #14068
- macOS: 将Sparkle更新至2.9.6版本,修复了Sparkle的多个安全漏洞,包括CVE-2026-47121和CVE-2026-47122。 #14072 #14082
- macOS: 全局快捷键在macOS禁用Ghostty的事件监听后不再失效。 #12294 #12714
- macOS: 修复IME组合问题。按箭头键时,正在组合的韩文文本现在会提交而非丢失,日文输入的Ctrl+J等控制键IME快捷键不再向终端发送控制字符。 #11461 #12447 #12518 #12547
- macOS: 输入法、语音输入和表情符号选择器的文本现在以键入输入形式发送,而非粘贴文本。程序不再将语音输入视为粘贴操作,组合输入过程中切换输入源时,待处理文本会以按键形式发送,与Terminal.app行为一致。 #13195 #13222 #13817
- macOS: Unicode十六进制输入现在可以输入超出基本多语言平面的字符,例如以代理对形式输入的表情符号。 #13733 #13737
- macOS: font-thicken功能现在也适用于IME预编辑文本。 #14230
- macOS: Option+退格键和其他修饰退格键现在通过Kitty键盘协议报告修饰键,而非直接发送裸DEL字符。 #13871
- macOS: 粘贴和拖放文本现在优先使用纯文本而非URL,因此从Transmit等应用复制的路径会粘贴为路径而非sftp:// URL。 #13152 #13170 #13212
- macOS: 点击搜索栏或前后导航按钮时,搜索栏会保持焦点,搜索打开时终端的焦点状态也已修正。 #11872 #11978
- macOS: "查找下一个"和"查找上一个"菜单项以及navigate_search和end_search快捷键现在可正常工作,包括搜索框聚焦时。 #12070 #12492
- macOS: 在搜索栏中按下回车键不再阻止确认IME候选词。 #12781
- macOS: 使用鼠标点击命令面板条目时,现在会执行该命令而非关闭面板。 #11665
- macOS: 从内联标签标题编辑器打开命令面板时,现在会获得焦点并支持粘贴操作。 #12524
- macOS: 持续按住Cmd+T创建多个标签页时,最新标签页现在会保持焦点。 #13725 #13985
- macOS: 修复在标签页刚打开后立即关闭时可能出现的空白"幽灵"标签页或窗口问题。 #12119
- macOS: 使用"显示所有标签页"创建标签页后,标题栏标签页不再消失。 #12949 #13017
- macOS: 在macos-titlebar-style = tabs模式下,双击窗口标题现在会调整窗口大小。 #12219
- macOS: 在macOS 26系统上,使用macos-titlebar-style = tabs移动标签页时,不再短暂显示相邻标签页。 #14847
- macOS: 窗口调整大小时,内联标签标题编辑器会保持原位。 #12220
- macOS: 修复程序通过OSC 11更改背景色后标签页闪烁问题,以及主题切换后窗口边框保留旧颜色的问题。 #12825 #12828 #12822
- macOS:background-blur 的 macos-glass-regular 和 macos-glass-clear 选项现在会将玻璃效果叠加在背景颜色上,聚焦窗口的透明度不再低于非聚焦窗口。 #13914 #13928
- macOS:使用自定义窗口标题字体时,原生标题栏不再截断标题末尾。 #14135 #14217
- macOS:在系统负载高或窗口管理器快速调整大小时,终端现在能正确渲染,不再保持过时尺寸。 #12143
- macOS:拖入其他标签页或窗口的分割窗口现在会立即渲染,源窗口仍保留键盘焦点。 #12343 #12338
- macOS:当缩放分割窗口的其他分割区域被关闭(例如通过 AppleScript)时,缩放指示器不再持续显示。 #14703
- macOS:分割窗口的分隔线现在使用标准的行和列调整指针。 #13433
- macOS:window-save-state = never 现在还会阻止 macOS 创建窗口恢复快照,这可能在窗口间切换焦点时导致延迟。 #14506
- macOS:Ghostty 1.2 或更高版本保存的窗口状态现在会被迁移,更新 Ghostty 后窗口和标签页会自动恢复。 #12461
- macOS:屏幕锁定时创建的标签页现在能正确初始化。 #13639
- macOS:退出时,如果存在运行进程的最小化窗口或隐藏的快速终端,现在会提示确认。 #13686
- macOS:OSC 52 剪贴板读取确认不再抢占焦点。如果终端未聚焦,Ghostty 会在返回时发出铃声并显示提示。 #13744
- macOS:快速终端中的分割窗口现在也会设置 GHOSTTY_QUICK_TERMINAL=1。 #12895 #12896
- macOS:显示器以不同分辨率重新连接后,快速终端不再以过时尺寸重新打开。 #13250
- macOS:现在 "New Ghostty Tab Here" 和 "New Ghostty Window Here" 服务在接收到纯文本路径时能正确打开对应目录。 #12727 #12731
- macOS:从服务、快捷方式和 AppleScript 传递的工作目录现在已标准化,修复了 Nushell 和 zsh 的 %1~ 提示问题。 #12614 #14051
- macOS:ghostty -e 现在不会将命令的文件参数作为额外终端打开,例如 ghostty -e vim file.txt。 #13748
- macOS:从 Finder 打开 .command 文件时,路径中的非 ASCII 字符不再被破坏。 #13862
- macOS:快捷方式终端实体现在能正确报告新终端的类型、标题、工作目录和截图。 #13007
- macOS:快捷方式的 "New Terminal" 操作现在支持带参数的命令,以及已清除命令字段的情况。 #12391 #12392
- macOS:AppleScript 发送按键现在支持字符键,而不仅是 Enter 等特殊键,并遵循 macos-option-as-alt 设置。 #13205
- macOS:更新提示修复:现在会显示更新错误,"安装并重新启动" 不再提示确认,且在更新无法取消后隐藏取消选项。 #13540 #13562 #13612
- macOS:更改系统设置中的默认应用图标后,图标会再次遵循系统图标风格,自定义图标现在也会在 Finder 中生效。 #12180 #12344
- macOS:如果之前已授权通知权限但未授权徽标权限,现在 Dock 图标铃铛徽标会显示。 #12133
- macOS:未选中任何内容时,"复制" 菜单项会被禁用。 #12521
- macOS: 菜单项现在会正确显示物理按键(如 super+backquote )、大写字母、前向删除以及 scroll_to_selection 和 search_selection 操作的快捷键。 #13888 #12039 #12011 #12281
- macOS: 安全输入指示器的弹出箭头现在指向图标。 #12249
- macOS: 修复从睡眠状态唤醒或切换显示器后罕见的永久性卡顿问题。macOS 未将应用标记为“无响应”,因此只能强制关闭。 #14691
- macOS: 修复关闭标签页时的崩溃问题,此问题在 undo-timeout = 0 时最容易触发。 #13359 #13364
- macOS: 修复从原生全屏窗口打开新标签页时的崩溃问题。 #13636
- macOS: 修复读取缓存终端内容时因数据竞争导致的崩溃问题。 #13646
- macOS: 修复 OSC 52 剪贴板确认提示重叠时的崩溃问题。 #13648
- macOS: 修复 CoreText 返回 null 时的崩溃问题,例如无显示名称的字体或内存压力过大时。 #13642 #13679
- macOS: 修复透明标题栏(默认设置)导致的关闭窗口内存泄漏问题,这会使 Ghostty 和 WindowServer 随时间推移占用更多 CPU 和内存。 #13601
- macOS: 修复 Ghostty 每次读取终端文本(如复制、快速查看或辅助功能)时的内存泄漏问题。 #12020 #12025
- macOS: 修复脚本快速创建和关闭终端时的 IOSurface 内存泄漏问题。 #13640
- macOS: 修复全局快捷键等待辅助功能权限时的 Mach 端口泄漏和逐渐变慢问题。 #13590
GTK (Linux, FreeBSD)
- GTK: 分割窗口现在可以通过拖放重新排列,与 macOS 保持一致。通过拖动分割手柄并将其拖到另一个分割区域(包括其他标签页和窗口中的分割区域)来实现。 #10224 #10423
- GTK: Ghostty 现在以真实分数比例(如 125% 或 150%)渲染,使文本和框线字符在分数缩放下保持清晰而非模糊。 #1938 #14269
- GTK: 渲染器不再使用 GtkGLArea。Ghostty 现在完全通过 EGL 在渲染线程上进行渲染,并将完成的帧作为 DMABUF 传递给 GTK,主线程不再执行任何 OpenGL 操作。 #14052 #14636
- GTK: 现在可以通过菜单、命令面板或新的 prompt_window_title 和 set_window_title 快捷键操作重命名窗口。 #10469 #10999
- GTK: 新增 +new-tab CLI 命令可在运行中的 Ghostty 实例中打开新标签页。在 Ghostty 内运行时,标签页会在同一窗口中打开。它接受与 +new-window 相同的 -e 、 --working-directory 和 --title 参数。 #11762
- GTK: 新增 +toggle-quick-terminal CLI 命令可在运行中的 Ghostty 实例中切换快速终端,这对没有全局快捷键支持的窗口管理器绑定很有用。 #12661
- GTK: 当合成器支持时,全局快捷键现在使用 vicinae-hotkey-v1 Wayland 协议,否则回退到 XDG 桌面门户。如果无法注册全局快捷键,Ghostty 会显示桌面通知。 #13464
- GTK: quick-terminal-screen 现在支持 Wayland。默认的 main 模式会将快速终端放置在合成器的主输出设备上(如果合成器未报告主输出设备,则使用第一个显示器)。设置为 mouse 时让合成器自行选择,这是之前的默认行为。 #11117
- GTK: 在 Wayland 上,背景模糊现在使用 ext-background-effect-v1 协议(与合成器无关),取代 KDE 的模糊协议,使 Niri 等合成器也能支持模糊效果。模糊区域也不再覆盖窗口的客户端阴影。 #10721 #10720 #10727
- GTK:在 GTK 4.23.3 及更新版本中,背景模糊功能使用 GTK 内置的背景模糊技术,能更精确地覆盖窗口。#13581 #13586
- GTK:open_config 绑定操作现在支持 new_window 参数,可在新 Ghostty 窗口中通过 $VISUAL 或 $EDITOR 编辑配置。默认的 os_open 保留原有行为。#11905
- GTK:新配置项 gtk-horizontal-tab-scroll(默认 true)设为 false 时,可禁用双指水平滚动切换标签页的功能,将滚动操作传递给终端应用。#12659
- GTK:新配置项 gtk-tabs-inverted 可将关闭按钮移动到每个标签页的起始位置,适用于标签栏和标签概览视图。#14657
- GTK:默认命令面板条目现已支持翻译。#11641
- GTK:嵌入的 Noto 表情字体已更新,新版表情和 ZWJ 序列(如摇头表情)将渲染为单个字符,而非重叠到相邻单元格中。#14047
- GTK:Ctrl+Shift+Page_Up 和 Ctrl+Shift+Page_Down 现在可左右移动当前标签页(move_tab),行为与 Firefox、GNOME Terminal 和 VS Code 一致。jump_to_prompt 键位调整为 Ctrl+Shift+Arrow_Up 和 Ctrl+Shift+Arrow_Down。#4998 #12458
- GTK:URL 现在通过 XDG 桌面门户打开,若门户不可用则回退至 xdg-open。Ghostty 传递激活令牌,使打开的应用(如浏览器)能在需要时获得前台焦点。#5991 #11754 #14785 #14787
- GTK:当终端获得焦点或关闭时,桌面通知将自动撤回。相同文本的重复通知将互相替换,行为与 macOS 一致。#14108
- GTK:不可见标签页不再渲染,可节省 CPU 和 GPU 资源。该行为与 macOS 一致。#12760
- GTK:Dolphin 的 "Open Ghostty Here" 功能现在会在当前运行的 Ghostty 实例中打开新窗口,而非启动独立实例。#11614
- GTK:修复 Ghostty 在 systemd 262 中偶尔无法启动的问题,该版本因 Ghostty 在处理重载信号前报告就绪状态而拒绝启动服务。#14398 #14399
- GTK:修复深度嵌套分屏有时会消失或失去焦点的问题。#11193 #12698
- GTK:调整分屏大小(特别是使用 resize_split 键位时)不再出现闪烁现象。#13414
- GTK:在嵌套分屏上使用 resize_split 时,尺寸变化不再出现大幅跳动。#12699
- GTK:通过拖拽分隔条或使用 resize_split,分屏大小不能再调整到小于一个单元格。#14476
- GTK:高分辨率滚轮不再比标准滚轮快很多。#12483
- GTK:禁用 GTK 4.20.1 之前版本的触控板上不需要的动能滚动功能。#11793
- GTK:当 GSettings 中禁用 gtk-enable-primary-paste 时,中键点击将再次通过鼠标报告发送给终端应用。#12940 #13108
- GTK:当 quick-terminal-autohide 启用时,手动关闭快速终端功能不再导致其异常。#11679 #12471
- GTK:当 quick-terminal-autohide 启用时,打开右键菜单不再隐藏快速终端。#12843
- GTK:滚动条可见时,调整大小的叠加层不再反复出现,且显示时不再阻挡鼠标输入。#11970 #11972
- GTK:窗口最大尺寸现在基于当前所在显示器,而非打开时所在的显示器。#13171
- GTK:当 shell-integration 设置为特定 shell 时,+new-window -e 现在可以正常工作。+new-window 和 +new-tab 现在还支持新的 --shell-integration 参数。#12378 #13741
- GTK:通过 XKB 将按键重新映射为修饰键(例如将 Delete 键映射为 ISO_Level3_Shift)后,不会再发送原始按键。#13967
- GTK:在 Wayland 上,IME 候选窗口现在在输入时会跟随光标移动,而不再覆盖正在编辑的行。#14729
- GTK:将标签页移动到其他窗口后,该标签页中的分割操作现在作用于新窗口(例如切换全屏)。#14474
- GTK:选择文本时,鼠标光标保持文本形状不变。#14558
- GTK:当窗口主题设置为 ghostty 时,命令面板现在使用终端颜色。#14662
- GTK:打开 URL 时,如果备用打开器(xdg-open)产生大量输出,不再导致失败。#12797
- GTK:点击桌面通知时,如果发送通知的终端已关闭,不再错误地聚焦到其他终端。#12028
- GTK:聚焦终端中的响铃不再使响铃指示器保持激活状态。#13597
- GTK:修复在移除不确定进度条(OSC 9;4)后窗口持续在后台重绘的问题。#14704 #14738
- GTK:将 gtk-xft-dpi 值缺失或无效的情况仅记录一次,而不是重复记录。#14410 #14085 #14434
- GTK:修复在 GTK 4.20(GNOME 49)上关闭标签页或分割时的崩溃问题。#12426
- GTK:修复在没有 D-Bus 连接时,全局快捷键或配置重载导致的崩溃问题。#13101
- GTK:修复当 Fontconfig 将字体的语言报告为普通字符串而非语言集时可能导致的崩溃问题。#14853
- GTK:修复音频响铃导致持续创建新 GStreamer 管道和未清理线程的问题,该问题会逐渐增加 CPU 使用率。#13647 #12815 #13657
- Snap:链接系统提供的 FreeType、Fontconfig、HarfBuzz、libpng 和 zlib 库,而非使用捆绑版本,从而修复因同一进程内存在两个相同库副本导致的频繁崩溃问题。#14392 #14682
- Snap:Snap 自身的 GIO 模块和 XDG 数据目录现在优先于主机的对应目录。#12045
- Snap:在 Ghostty 中运行的程序(如 clear)现在可以找到 xterm-ghostty 的 terminfo 条目。#12662
- Flatpak:如果 Ghostty 崩溃,Ghostty 在主机上启动的命令现在会被终止。#12427
本地化
Ghostty 1.4 为命令面板引入了完整的本地化支持,并新增了 4 种语言:
- 巴斯克语
- 白俄罗斯语
- 丹麦语
- 塞尔维亚语(西里尔文和拉丁文脚本)
本地化由志愿者贡献者维护。如果您希望用您的语言帮助本地化 Ghostty,请在 GitHub 仓库中发起讨论。感谢所有为 Ghostty 本地化做出贡献的志愿者!
包维护者变更
- Ghostty 现在需要 Zig 0.17 才能构建。#14518 #14519
- GTK 构建现在需要 GTK 4.18 和 libadwaita 1.7,此前要求为 GTK 4.14 和 libadwaita 1.5。使用旧版头文件构建时会在编译时失败,如果运行时加载了旧版库,Ghostty 会在启动时退出。#14330
- GTK 构建现在会链接系统 EGL 库(pkg-config egl,通常由 libglvnd 或 Mesa 提供),用于新渲染器。运行时,Ghostty 会优先使用 GTK 的 EGL 显示,否则需要支持无表面平台的 EGL 驱动。#14052 #14636
- 新增的 -Dinstalled-exe-path 构建选项用于设置写入桌面文件、D-Bus 服务和 systemd 用户服务中的绝对可执行文件路径。此前该路径来自安装前缀。在未使用该选项时,这些文件现在仅包含 ghostty 单独的名称,systemd 仅会在 /usr/bin 或 /usr/local/bin 中查找该名称,因此对于其他安装前缀需要显式设置该路径。#14805 #14806
- 当链接系统 gtk4-layer-shell(-fsys=gtk4-layer-shell)时,现在需要版本 1.0.4 或更新版本。Ghostty 不再在旧版本中禁用快速终端功能,旧版本在某些合成器上可能导致崩溃。#11559
Libghostty
与 1.3 版本类似,libghostty 并非 Ghostty 1.4 发布版的直接组成部分。但 1.4 开发周期的大部分时间都投入到了 libghostty 的开发中,因此这里进行更新说明。
过去 6 个月中,libghostty-vt 的 C API 从一个解析器和几个编码器发展为完整的终端模拟器 API,已被数十款免费和商业终端模拟器采用,这些终端模拟器被数以百万计的用户使用。虽然难以精确量化,但使用基于 libghostty 的终端的人数肯定远超使用 Ghostty GUI 的人数。
libghostty-vt 现在支持 macOS、Linux、Windows(MSVC 和 GNU)、FreeBSD、Android、iOS 和 WebAssembly,CI 持续验证所有这些目标平台。目标是让 libghostty-vt 在合理范围内实现通用可用性,因此如果您需要更多目标平台支持,请告知我们!
将 libghostty-vt 集成到现有构建系统中也变得更加容易。除了现有的 pkg-config 文件外,现在还提供 CMake 支持、Nix 包装、xcframework 和源代码压缩包。libghostty-vt 不再需要 libc++,并且可以独立构建。
该 API 仍标记为进行中,本周期内已多次破坏兼容性,因此在发布版本前预计还会出现更多破坏性变更。API 文档以及 Zig、C、C++、Swift 和 WebAssembly 示例(现已超过 30 个)均与主分支保持同步。
我们计划对 C API 进行最终检查,再次破坏一次 ABI,然后很快将发布 libghostty 1.0 版本。
财务更新
Ghostty 是一个非营利项目,由 Hack Club 提供财政支持。所有财务信息均在 HCB 上公开,您可以清楚地看到每笔资金的具体用途。
在 1.4 版本周期中,我们向签约贡献者支付了 41,820 美元,并在网站托管等基础设施方面花费了约 1,260 美元。
我很高兴地宣布,我们已签署了首批两项为期 12 个月的合同,这为贡献者提供了稳定、长期的有偿工作机会,也有助于确保项目的持续稳定和可持续发展:
- @trag1c 是 Ghostty 的运营负责人。他管理 GitHub 和 Discord 社区,协调志愿者翻译工作,并维护各种重要的项目系统。
- @vancluever 负责 Ghostty 的多个子系统。在本周期中,他主导了升级到 Zig 0.16 的工作,将构建过程从 Zig 已弃用的 @cImport 迁移出去,更新了捆绑的 Fontconfig 等。他也是 z2d 的作者,这是 Ghostty 用于绘制框线字符和其他精灵字形的 2D 图形库。
如果您想支持 Ghostty,请访问我们的赞助页面。
路线图
路线图的主要重点仍然是 libghostty 的功能、稳定性和可移植性。在上一个发布周期中,我表示计划发布 libghostty 版本。我们尚未完成该工作,但我确信将在 Ghostty 1.5 发布之前完成。
libghostty 是一个持续托起所有船只的浪潮。libghostty 的改进直接关联到 Ghostty GUI 的优化,以及生态系统中数十个大型项目。随着越来越多大型项目采用 libghostty,该库会获得更多的测试和关注,从而形成一个为所有终端模拟器带来最大收益的良性循环。
macOS 和 GTK 版本的 Ghostty 拥有才华横溢且能力出众的维护团队,他们持续改进这些版本,因此绝不会被忽视!作为项目,我们已决定在 Ghostty GUI 中放弃任何 Windows 支持路线图。libghostty 完全支持 Windows(我们在 CI 中对其进行测试),目前的官方立场是下游项目应使用该库。
我们的发布周期仍为 6 个月。此次发布延迟了一个月,但 Ghostty 1.5 计划于 2027 年 3 月发布。libghostty 将采用独立的发布周期。
在 GitHub 上编辑
- 安全性
- 亮点功能
- macOS 27 支持
- Kitty 图形动画与相对定位
- 回滚压缩与内存占用降低
- 性能优化
- 新 OpenGL 渲染器(Linux, FreeBSD)
- Kitty 剪贴板协议
- 分屏拖放功能(GTK)
- 终端模拟精度提升
- 与 ghostty +ssh 的 SSH 集成
- 系统需求
- 突破性变更
- 废弃功能
- 完整更新日志
- 终端能力
- Shell 集成
- macOS
- GTK(Linux, FreeBSD)
- 本地化
- 包维护者变更说明
- libghostty
- 财务更新
- 路线图