跳到正文

目录

Ghostty:49.9k Stars 快速原生终端模拟器完全指南

Ghostty:49.9k Stars 快速原生终端模拟器完全指南

Ghostty 的差异化在于它没有在「快」「功能全」「原生 UI」之间做取舍——大多数终端模拟器只能占其中一项:Alacritty 快但功能基础、iTerm2 功能全但非原生 GTK、Terminal.app 原生但慢。Ghostty 用 Zig 写核心、SwiftUI/GTK 写各自平台的 UI、GPU 做渲染、SIMD 解析终端序列,把这三件事同时做到位。代价是项目较新(2024 年底 1.0),生态和插件成熟度仍不如 iTerm2 / Kitty。

读完能掌握的能力

读完本文,可以掌握以下能力:

  • 解释 Ghostty 的三线程架构(读 / 写 / 渲染分离)如何避免密集输出时 UI 卡顿
  • 说出 GPU 渲染后端在 macOS(Metal)和 Linux(OpenGL)上的差异与配置方式
  • 理解 SIMD 终端解析器相对传统逐字节解析的性能优势
  • 在 macOS / Linux 上完成 Ghostty 的安装、字体主题配置、快捷键定制
  • 判断何时该用 libghostty 嵌入式库,以及何时应继续用 Alacritty / iTerm2

目录

  1. 项目概述
  2. 技术架构
  3. 发展路线图
  4. 安装配置
  5. 配置指南
  6. 独特功能
  7. libghostty 嵌入式开发
  8. 命令行工具
  9. 性能对比
  10. 常见问题
  11. 贡献开发
  12. 采用顺序与适用边界
  13. 自测题
  14. 进阶路径

1. 项目概述

1.1 是什么

Ghostty 是一个快速、原生、功能丰富的终端模拟器,使用平台原生 UI 和 GPU 加速。它不同于其他终端模拟器的地方在于:无需在速度、功能和原生 UI 之间做选择——Ghostty 三者兼顾。

1.2 核心数据

以下为撰写时的项目快照,这类数字会随项目持续增长,看趋势即可:

指标数值(快照)
GitHub Stars49.9k
GitHub Forks2.3k
Contributors536
Commits15,740
LicenseMIT
语言Zig 79.0%, Swift 11.7%, C 3.9%, C++ 2.9%

1.3 技术栈

组件技术
核心语言Zig
macOS UISwiftUI + Metal
Linux UIGTK + OpenGL
终端解析自研 SIMD 优化解析器
架构多线程(读/写/渲染分离)

1.4 设计取舍

Ghostty 的设计哲学是「三全其美」:

特性说明
与 Alacritty 同处性能第一梯队(量级详见第 9 节)
功能丰富完整的终端兼容性 + 现代扩展(Kitty 图形协议等)
原生体验每个平台的原生 UI,而非跨平台凑合

2. 技术架构

架构总览

Ghostty 的核心拆成三条并行数据通路:读线程负责解析终端转义序列、写线程负责与子进程通信、渲染线程负责 GPU 绘制。三条线程通过共享的终端状态模型同步,互不阻塞。终端解析器用 SIMD 指令加速,渲染走 Metal(macOS)或 OpenGL(Linux),UI 层在 macOS 用 SwiftUI、在 Linux 用 GTK。这个终端核心同时被抽成 libghostty 嵌入式库,供第三方应用复用完整终端能力而不必连带桌面界面。

2.1 多线程架构

Ghostty 采用三线程架构,每个终端会话独立:

线程职责
Read Thread处理输入、解析终端序列
Write Thread写入数据、进程通信
Render ThreadGPU 渲染、文本绘制

读线程把转义序列解析成终端状态变更,写线程把用户输入和进程输出在子进程和终端模型之间搬运,渲染线程独立按帧从终端模型生成 GPU 绘制指令。三条线程解耦后,即使终端在执行密集任务时,UI 仍然流畅响应。

2.2 GPU 加速渲染

平台渲染后端
macOSMetal + CoreText
LinuxOpenGL

渲染线程把终端模型里的字形按网格批量提交给 GPU,字形纹理在首次绘制时缓存。即使渲染大量文本时也能保持 60fps。

2.3 SIMD 终端解析器

Ghostty 的终端解析器使用 CPU SIMD 指令(AVX2/NEON 等)进行优化,能以极低 CPU 占用解析复杂的终端转义序列。

2.4 libghostty 嵌入式库

Ghostty 提供嵌入式终端库 libghostty,把完整终端能力抽成可嵌入的 C 库,供第三方应用复用(详见第 7 节)。

说明
libghostty完整嵌入式终端库:终端仿真、PTY、输入、渲染

支持平台:macOS、Linux 为一等公民;终端核心由 Zig 写成、平台无关,已被编译到 WebAssembly(如 coder 的 ghostty-web)。Windows 不存在官方支持,只有社区移植版(如 GhosttyWin32)——这与第 12 节"Windows 原生支持暂无"一致。

2.5 任务流案例:一次按键到屏幕刷新

以用户在 shell 里按下一个键为例,看数据如何流过三条线程:

  1. 输入到达:macOS 的 SwiftUI 窗口或 Linux 的 GTK 窗口捕获按键事件,转发给 Ghostty 的输入处理逻辑
  2. 写线程投递:写线程把按键字节通过 PTY(伪终端)发给子进程(通常是 shell)
  3. 子进程回显:shell 处理输入后,通过 PTY 把回显字符写回来
  4. 读线程解析:读线程从 PTY 读取字节流,用 SIMD 解析器识别转义序列(如光标移动、颜色变更),更新终端状态模型
  5. 渲染线程绘制:渲染线程在下一帧从终端状态模型读取变更,把字形按网格批量提交给 Metal/OpenGL,GPU 完成绘制

整个流程里,读、写、渲染三条线程通过终端状态模型解耦:输入不会阻塞渲染,渲染不会阻塞输入解析。这就是 Ghostty 在 yes 命令刷屏时仍能保持 UI 响应的原因。


3. 发展路线图

Ghostty 已完成大部分里程碑:

阶段内容状态
1标准兼容的终端模拟✅ 完成
2竞争性性能✅ 完成
3丰富的窗口功能(多窗口、标签、分屏)✅ 完成
4原生平台体验✅ 完成
5跨平台 libghostty 嵌入式终端✅ 完成
6Ghostty 独有终端控制序列❌ 未开始

4. 安装配置

4.1 macOS 安装

# 使用 Homebrew 安装
brew install ghostty

# 或下载官方 pkg 安装包
# https://ghostty.org/download

4.2 Linux 安装

# Ubuntu/Debian
sudo apt install ghostty

# Fedora
sudo dnf install ghostty

# Arch Linux
sudo pacman -S ghostty

# 使用 Flatpak
flatpak install flathub org.ghostty.ghostty

# 使用 Nix
nix-shell -p ghostty

注:发行版仓库收录情况不一。Arch 的官方仓库、Fedora 均内置 ghostty;Debian/Ubuntu 是否收录取决于发行版版本,若 apt install ghostty 找不到包,改用官方提供的 Flatpak 或源码编译(见 §4.3)。跨发行版最稳妥的是官方分发包:https://ghostty.org/download

4.3 源码编译

# 克隆仓库
git clone https://github.com/ghostty-org/ghostty.git
cd ghostty

# 已装 Zig 等工具链的情况下,最简单的是直接 make
make

注:Linux 构建所需的系统依赖(GTK、HarfBuzz、appindicator 等)随发行版和 Ghostty 版本变化,这里不展开具体包名,以免版本错位。以仓库 HACKING.md 为准——它是官方唯一权威的开发与构建说明。macOS 需要 Zig 与 Xcode 命令行工具,Linux 从 1.1 起基于 GTK4。

4.4 配置文件

Ghostty 的配置文件位于:

平台路径
macOS~/Library/Application Support/com.ghostty.ghostty/config
Linux~/.config/ghostty/config

或使用 ghostty --config-file 指定。


5. 配置指南

5.1 基本配置

# 字体配置
font-family = JetBrains Mono
font-size = 14

# 主题配置
theme = catppuccin-mocha

# 窗口配置
window-title = {title} - {host}
window-padding-x = 10
window-padding-y = 10

# 滚动配置(保留的屏幕历史行数)
scrollback-lines = 10000

5.2 快捷键配置

Ghostty 用 keybind = 按键 = 动作 定义快捷键。下面是常见的标签页与分屏绑定:

# 标签页快捷键
keybind = ctrl+shift+t = new_tab
keybind = ctrl+shift+w = close_tab
keybind = ctrl+shift+left = previous_tab
keybind = ctrl+shift+right = next_tab

# 分屏快捷键
keybind = ctrl+shift+enter = split_left
keybind = ctrl+shift+v = split_right

注:动作名(action)随版本演进,例如分屏在旧版本用过 split_horizontal / split_vertical,新版本统一为 split_left / split_right / split_above / split_below。以你安装版本的文档为准——Ghostty 的命令行工具(CLI)支持列出动作与按键映射,具体子命令名随版本变化,跑 ghostty help 或查看官方文档确认。

5.3 高级配置

# 鼠标:空闲时自动隐藏光标
mouse-hide = true

# 剪贴板:允许子进程通过 OSC 52 读取剪贴板
clipboard-read = true

# 性能:渲染速度(0 表示渲染最快,数值越大越省 CPU)
render-speed = 0

# 性能:垂直同步(默认开启;高刷屏上若感到撕裂可关掉)
sync-to-vblank = true

# SSH:启用 Ghostty 自带的 SSH 集成(需在远程主机安装 zsh 补全脚本)
ssh-shell-integration = true

注:clipboard-read 控制的是终端内程序能否通过 OSC 52 反向读取剪贴板,默认关闭以防范恶意程序窃取内容;粘贴确认则由另一项 clipboard-paste-protection 负责。Ghostty 没有名为 ssh-behavior 的配置。


6. 独特功能

6.1 平台原生集成

macOS 特性

特性说明
SwiftUI 应用原生 macOS 应用体验
Metal 渲染GPU 加速文本渲染
AppleScript系统自动化脚本支持
Shortcuts支持 macOS Shortcuts (AppIntents)
Menu Bar原生菜单栏集成

Linux 特性

特性说明
GTK 界面原生 GTK 应用
systemd 集成常驻进程、单实例
cgroup 隔离进程资源隔离

6.2 现代终端协议支持

Ghostty 支持比几乎任何其他终端模拟器都多的现代序列:

协议说明
Kitty 图形协议在终端内显示图片、动画等图形内容
剪贴板序列OSC 52
同步渲染OSC 133
明暗模式通知终端主题同步
SGR 鼠标跟踪高级鼠标支持

6.3 窗口管理

Ghostty 的窗口管理覆盖标签页、分屏和独立窗口三种形态。标签页支持重命名和颜色标记,方便在多个会话间快速定位;分屏提供水平和垂直两种切分方式,可在同一窗口内并排查看多个终端;独立窗口之间不共享状态,适合把不同项目的终端完全隔离。三种形态可以组合使用,例如在一个窗口里开多个标签页,每个标签页里再分屏。


7. libghostty 嵌入式开发

7.1 libghostty:完整的嵌入式终端库

libghostty 是 Ghostty 面向第三方集成提供的嵌入式终端库,对外暴露 C ABI,包含终端仿真(ANSI/VT 序列解析、终端状态与 scrollback)、PTY、输入与渲染等完整能力,独立于桌面 GUI(图形用户界面)使用。终端仿真内核就是早期单独分出来的 ghostty-vt 模块,如今它作为 libghostty 的核心层存在,第三方集成主入口是 libghostty 本身。

libghostty 采用回调节点驱动的运行模型,而不是"初始化后逐步调用"的简单风格。宿主应用负责创建应用上下文、起主循环进行 tick、通过回调接收终端事件(标题变更、剪贴板请求、图像数据等),再把每一帧返回的光栅图像贴进自己的窗口。这也是把 libghostty 接进 Electron、Skia、SwiftUI 等不同渲染栈的前提。

7.2 用 libghostty 的场景

场景是否用 libghostty
在编辑器、集成开发环境(IDE)、Web 应用里嵌一个终端面板适合,拿回完整终端行为
已有自己的渲染管线,只想复用解析与状态有风险,需自己接 tick 循环与事件回调
只是想在命令行里跑一个终端不需要,直接用 Ghostty 本体
只需要 ANSI 转义解析(无渲染、无 PTY)不建议,解析层和生命周期已经耦合

集成成本不能低估:tick 循环、字体与字形、输入转发、滚动与图像数据都要宿主自己实现。第三方参考实现包括 coder 团队的 ghostty-web(编译到 WASM)、Ghostling(最小原生示例)以及上游仓库 example/ 下的 C 示例。

7.3 上手途径

  • Ghostling:最小的完整 Ghostty 库应用示例,适合先通读再动手
  • example/(上游仓库):C 写的最小集成示例,含应用初始化与主循环
  • coder/ghostty-web:把 libghostty 编到浏览器端,可对照学习事件回调与渲染模型

8. 命令行工具

8.1 ghostty CLI

# 启动 Ghostty
ghostty

# 指定配置文件
ghostty --config-file /path/to/config

# 打开新窗口
ghostty --new-window

# 向已运行的 Ghostty 实例发送文本(子命令格式以官方文档为准)
ghostty +send-text "ls -la\r"

注:+send-text 这类以 + 前缀的子命令格式以官方文档为准。Ghostty 的 CLI 接口仍在演进,不同版本可能改用 --send-text 或独立子命令。运行 ghostty --help 查看当前版本支持的完整命令列表。

8.2 崩溃报告

# 列出崩溃报告(子命令格式以官方文档为准)
ghostty +crash-report

# 崩溃报告位置
# macOS: ~/Library/Logs/Ghostty/crash/
# Linux: ~/.local/state/ghostty/crash/

# 上报给 Ghostty 项目
SENTRY_DSN=https://e914ee84fd895c4fe324afa3e53dac76@o4507352570920960.ingest.us.sentry.io/4507850923638784 \
  sentry-cli send-envelope --raw <path-to-crash-report>

注:+crash-report 子命令格式以官方文档为准。崩溃报告的默认存放路径在不同版本和平台间可能调整,以上路径以 1.0 版本为参考。


9. 性能对比

9.1 与其他终端对比

下表是定性的全景比较,不是精确基准分数:

终端吞吐量级UI功能
Ghostty第一梯队原生丰富
Alacritty第一梯队非原生基础
Terminal.app明显更慢原生基础
iTerm2快速但并不极限原生丰富

「第一梯队」「明显更慢」依赖具体场景,下面的说明会讲清楚口径。表里「~100x」这类量级说法常见于社区流传,但并非 Ghostty 官方基准值——官方口径只是说它"与最顶尖的终端模拟器处于同一性能等级"。想要你自己的数字,按下面这套可比方式去压测。

怎么测才算可信:在固定 shell 里跑同一份大文本输出(cat 大文件、yes),分别记录帧率与 CPU 占用,并明确测的是读线程解析吞吐、渲染吞吐还是端到端。跨终端比较要尽量对齐终端宽度、字体、scrollback 与 GPU,否则差异更多来自测试条件。

这个数不能推出什么:终端吞吐高不等于"日常操作快"。日常交互的耗时主要在 shell 启动、命令执行、网络往返,渲染占比很小。Ghostty 与 Alacritty 的差异在功能完整度和原生 UI,不在原始吞吐——性能相近时,选谁取决于你要的功能。

9.2 性能优化技巧

这些是配置项,写入 §4.4 的配置文件,而非命令行参数。临时覆盖可用 ghostty -o 键=值

# 关闭垂直同步(高刷新率屏上可能降低渲染中间状态)
sync-to-vblank = false

# 降低渲染速度以节省 CPU(默认 0 表示最快)
render-speed = 0

# 收缩滚动历史,减少内存占用与滚动时的重绘成本
scrollback-lines = 5000

注:renderersync-to-vblank 等均为配置键。命令行临时覆盖统一用 -o,例如 ghostty -o renderer=gles,而不是 --renderer=gles 这类并不存在的参数。


10. 常见问题

10.1 中文显示问题

问题:中文字符缺字或显示为方块

解决:在 font-family 里把 CJK 字体作为回退项列出。font-family 可重复出现,Ghostty 会按顺序逐项回退,当前字体缺少某字符时用下一项兜底:

# JetBrains Mono 缺中亚、中日韩字形时回退到思源黑体
font-family = JetBrains Mono
font-family = Noto Sans CJK SC

注:中文字体(含 emoji)统一通过 font-family 的回退列表解决,Ghostty 没有独立的 font-cjk-family 配置项。emoji 例外:macOS 默认用 Apple Color Emoji,Linux 默认用 Noto Emoji,如需覆盖也要把对应字体加进 font-family

10.2 性能问题

问题:终端感觉卡顿

解决:先确认渲染后端与你实际使用的一致,再排查字体与合成器。Linux 下默认渲染器是 OpenGL,macOS 下是 Metal,可用下面的配置显式指定(写入配置文件):

renderer = metal   # macOS
renderer = opengl  # Linux(若走 EGL/GLES 场景,也接受 gles)

常见卡顿来源按出现频率排查:

  • 字体回退:中文字符触发跨字体回退会显著拖慢渲染,回退链越长越明显(见 §10.1)
  • 滚动历史过大scrollback-lines 设得很大时,滚动会占用更多内存和重绘(见 §9.2)
  • 垂直同步不匹配sync-to-vblank 与合成器/显示器刷新率冲突时可能出现拖影或掉帧
  • Linux 合成器:Wayland 下 OpenGL 后端是否走 EGL、合成器(如 Mutter、KWin)的 VSync 策略都会影响流畅度

注:renderer 是配置键,不是 --renderer=gl 这类命令行参数。是否暴露 --num-threads 这类线程调参选项以官方文档为准;Ghostty 三个线程由内部固定调度。

10.3 SSH 连接问题

问题:SSH 会话断开

解决

# 在客户端 SSH 配置里加保活(最可靠)
ssh -o ServerAliveInterval=60 user@host

# 或写入 ~/.ssh/config
# Host *
#   ServerAliveInterval 60
#   ServerAliveCountMax 3

注:SSH 会话断开(掉线、无响应)的根因几乎都是网络层或超时,Ghostty 没有 ssh-behavior 这类配置能解决。Ghostty 的 SSH 相关能力是另一回事——ssh-shell-integration 只在远程主机装了 zsh 集成脚本后提供目录提示、命令高亮等增强,不负责保活。保活最稳妥的做法是在 ~/.ssh/config 里设 ServerAliveInterval,由 OpenSSH 客户端处理,不依赖终端模拟器。


11. 贡献开发

11.1 开发环境搭建

# 克隆仓库
git clone https://github.com/ghostty-org/ghostty.git
cd ghostty

# 阅读开发文档
cat HACKING.md

# 安装依赖(macOS)
brew install zig swift cmake pkg-config

# 构建
make

11.2 代码规范

规范文件
C 格式化.clang-format
Swift 规范.swiftlint.yml
Shell 规范.shellcheckrc
Nix 格式Alejandra

11.3 提交规范

# 提交前检查
make lint
make test

# 提交格式
git commit -m "component: description of change"

12. 采用顺序与适用边界

Ghostty 在性能、原生体验、功能完整度三个维度上都达到了第一梯队,但项目 2024 年底才发布 1.0,生态成熟度仍不如 iTerm2 / Kitty。

采用顺序建议

  1. 个人开发环境:直接切换。macOS / Linux 主力机都能装,配置迁移成本低,性能和原生体验收益直接
  2. 团队统一终端:先在 1-2 个版本周期内观察稳定性,确认无关键 bug 后再推广
  3. 嵌入式终端需求:libghostty 已可用的前提下,先用 Ghostling / example/ 做小范围原型,验完 tick 循环与事件回调自己能否驾驭,再决定是否进生产。集成成本主要在宿主端,而不是库本身(见 §7.2)
  4. 依赖深度插件生态:继续用 iTerm2 / Kitty。Ghostty 的插件和主题生态还在起步,iTerm2 的 Color Schemes、Kitty 的 kitten 体系更成熟

适用边界

  • 适合:追求原生 macOS/Linux 体验、对渲染性能敏感、需要 Kitty 图形协议、想用 libghostty 把终端嵌入自有应用
  • 不适合:强依赖 iTerm2 专属插件、需要 Windows 官方支持(暂无)、要的是最稳定成熟的老牌终端(iTerm2 / WezTerm 的坑更少)

自测题

1. Ghostty 的三线程架构里,读线程、写线程、渲染线程各自负责什么?为什么这种拆分能让 `yes` 命令刷屏时 UI 仍流畅?

读线程从 PTY 读取字节流并用 SIMD 解析器识别转义序列,更新终端状态模型;写线程把用户输入通过 PTY 发给子进程;渲染线程独立按帧从终端状态模型生成 GPU 绘制指令。三条线程通过共享的终端状态模型解耦,输入解析不阻塞渲染,渲染不阻塞输入写入。yes 刷屏时数据量大但渲染线程按固定帧率从模型快照绘制,不会因为读线程忙而丢帧。

2. macOS 上 Ghostty 用 Metal 渲染,Linux 上用 OpenGL。如果你在一台 Linux 机器上发现 Ghostty 渲染卡顿,该从哪些方面排查?

先确认 GPU 驱动是否正确安装(开源 Mesa 或厂商闭源驱动),glxinfo | grep "OpenGL renderer" 看是否走了软件渲染。再检查配置里的 renderer 是否被覆盖成了非预期后端。Linux 下还应排除 Wayland/X11 兼容问题,Wayland 下 OpenGL 后端可能需要切换到 EGL。最后排查合成器(如 Mutter、KWin)的 VSync 策略是否与 Ghostty 的 sync-to-vblank 冲突。

3. SIMD 终端解析器相比传统逐字节解析,性能优势来自哪里?这种优化对哪类工作负载收益最大?

SIMD 指令(AVX2/NEON)单条指令可处理多个字节,能在一次循环里完成转义序列的扫描、分类和状态跳转,减少分支预测失败和指令缓存压力。优势对密集转义序列输出(如 tmux 全屏刷新、cat 大文件、yes 刷屏)收益最大,因为这些场景下解析器是瓶颈。对日常交互(每次按键几个字节)收益不明显,瓶颈在 shell 启动和网络往返。

4. 想在编辑器里嵌一个终端面板,为什么建议直接用 libghostty 而不是自己只接一个解析器?集成时最容易低估哪部分成本?

libghostty 打包了终端仿真、PTY、输入、渲染的完整链路,宿主拿到的是可滚可交互的终端行为而不是一堆字符;从零只接一个 ANSI 解析器,光键盘编码、PTY 生命周期、光标与滚动、鼠标转发就要自己补一大圈。最容易低估的是 tick 驱动模型与事件回调:libghostty 需要宿主起主循环反复 tick、通过回调接收事件再把帧图像贴回窗口,这部分比"拿到字符画出来"复杂得多。动手前先看 Ghostling 和 example/ 把这个模型读透。

5. 说 Ghostty「快」但日常用起来和 Alacritty 差别不大,为什么?"第一梯队"这个说法该怎么理解,它不能推出什么?

“第一梯队"指它在同一套大文本输出压力(cat 大文件、yes)下,能维持的帧率与 CPU 占比和 Alacritty 这类顶尖终端处于同一等级,这是对读线程解析与渲染管线吞吐的定性描述。它不能推出"日常操作快很多”:日常交互的耗时集中在 shell 启动、命令执行、网络往返,渲染占比很小。Ghostty 与 Alacritty 的差异在功能完整度和原生 UI,不在原始吞吐。想量化就按第 9.1 节的口径在同条件下自测,别拿社区流传的倍率当官方基准。

继续深入的方向

读完本文后,可以按以下方向展开:

  • 自定义 Shader:Ghostty 支持在渲染管线里挂自定义 GLSL/Metal Shader,实现 CRT 扫描线、bloom、色彩校正等效果。进阶玩法包括写动态 Shader 响应终端状态(如命令执行时屏幕轻微闪烁)、用 Shader 实现自定义字形后处理。需要理解 Ghostty 的渲染管线插入点、Shader uniform 输入和帧同步机制,官方 examples/ 里有基础 Shader 样例。
  • libghostty 嵌入式开发:把终端嵌进非终端场景,如编辑器内嵌面板、日志查看器、REPL。进阶要点包括 tick 循环与事件回调的设计、PTY 生命周期管理、终端状态模型与宿主渲染管线的同步、输入事件转发(鼠标跟踪、SGR 鼠标)、多终端实例的内存隔离。先读 Ghostling 和 example/ 看一个最小完整集成长什么样。
  • Kitty 图形协议实战:在终端内显示图片、动画甚至视频,适合做终端内的数据可视化、图片预览、监控面板。进阶玩法包括用 chafa 或自定义脚本把图片转成 Kitty 图形协议序列、在 tmux 透传图形协议、处理不同终端的协议兼容性(Ghostty / Kitty / WezTerm 实现差异)。注意图形协议会显著增加渲染负载,大图批量传输时关注帧率下降。

官方资源

  • GitHub:https://github.com/ghostty-org/ghostty
  • 官网:https://ghostty.org
  • 文档:https://ghostty.org/docs
  • 下载:https://ghostty.org/download

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。