Ghostty 是一款 快速、功能丰富且原生 的终端模拟器。它旨在解决现有终端模拟器在速度、功能和原生 UI 之间进行选择的难题。Ghostty 力求在所有这三个方面都具有竞争力。
Ghostty 是由 Mitchell Hashimoto 开发的一个个人项目,它是一个跨平台的终端模拟器,目前支持 macOS 和 Linux。其核心是一个名为 libghostty
的跨平台 C-ABI 兼容库,负责终端仿真、字体处理和渲染等核心功能。Ghostty 的 GUI 应用构建于 libghostty
之上,macOS 版本使用 Swift 和 AppKit/SwiftUI,Linux 版本使用 Zig 和 GTK4。
Ghostty 具有以下几个主要特点:
libghostty
: Ghostty 的核心是一个跨平台 C-ABI 兼容库,名为 libghostty
。此架构实现了终端仿真和 GUI 之间的清晰分离。此架构允许其他终端仿真器项目构建在共享核心之上,从而促进了更多样化的终端仿真器生态系统。Ghostty 还具有以下特性:
.dmg
文件)。.dmg
文件,并将 Ghostty 应用程序拖到 “应用程序” 文件夹。brew install --cask ghostty
。Ghostty 项目不提供 Linux 的预构建二进制文件,但由各个发行版提供。下面是官方和社区维护的安装方法。
pacman -S ghostty
安装最新版本。yay -S ghostty-git
从 AUR 安装 main
分支的最新版本。emerge -av ghostty
安装。packages.ghostty
或 packages.default
。xbps-install ghostty
安装。dnf copr enable pgdev/ghostty
和 dnf install ghostty
安装。如果你的平台没有可用的包,则必须从源代码构建 Ghostty。
Ghostty 的命令行用法主要围绕如何启动终端模拟器以及如何通过命令行参数配置和执行特定操作。
基本用法: 在没有指定 +action
的情况下运行 ghostty
命令,将会启动 Ghostty 终端模拟器。在 macOS 上,直接从命令行启动终端模拟器是不被支持的,只能使用命令行来执行特定的操作。安装成功后在应用程序中可以找到 Ghostty.app,通过图像界面启动。
可以使用 --key=value
的语法来设置配置选项,key
和 value
的格式与在配置文件中的格式相同。 例如:--font-size=12
或者 --font-family="Fira Code"
。
所有的配置键都可以在命令行中使用,要查看可用的配置选项,可以参考 src/config/Config.zig
文件。 未来版本将会支持从命令行查看可用的配置选项。
Ghostty 提供了多种操作,可以通过 ghostty +action
的方式来调用。以下是一些主要的操作:
+version
: 显示 Ghostty 的版本信息。+help
: 显示帮助信息,可以结合具体操作使用 +<action> --help
来查看特定操作的帮助信息。+list-fonts
: 列出可用的字体。+list-keybinds
: 列出当前的快捷键绑定。+list-themes
: 列出可用的主题。+list-colors
: 列出可用的颜色。+list-actions
: 列出可用的操作。+show-config
: 显示当前使用的配置。+validate-config
: 验证当前的配置是否有效。+crash-report
: 生成崩溃报告。+show-face
: 显示字体信息。相关阅读:Ghostty 默认快捷键列表
Ghostty 与其他终端模拟器的区别在于它同时关注速度、功能和原生 UI。许多其他终端模拟器往往只注重其中两项,而 Ghostty 则力求在所有三方面都具有竞争力。
此外,Ghostty 的架构也使其独具特色:
libghostty
: 核心库 libghostty
将终端仿真与 GUI 分离,使其更易于维护和扩展。libghostty
的目标是成为一个可供其他终端模拟器项目使用的共享核心,从而创建一个更加多样化的终端生态系统。Ghostty 使用基于文本的配置文件进行配置,默认情况下,Ghostty 可以在没有配置的情况下工作。
配置文件 config
按以下顺序从这些位置加载:
$XDG_CONFIG_HOME/ghostty/config
,如果 XDG_CONFIG_HOME
未定义,则默认为 $HOME/.config/ghostty/config
。$HOME/Library/Application\ Support/com.mitchellh.ghostty/config
。如果两个位置都存在,则按上述顺序加载,后面文件中的冲突值会覆盖前面的值。
Ghostty 使用自定义但非常简单的 key = value
语法。
background
和 Background
不同。Ghostty 始终使用小写键。font-family = "JetBrains Mono"
和 font-family = JetBrains Mono
相同。ghostty --background=282c34
设置 background
键。?
前缀使配置文件可选,例如:config-file = ?optional/config
。Ghostty 附带数百个内置主题,可以使用 theme
配置选项进行选择。例如,使用 Catppuccin 主题:theme = catppuccin-frappe
。
可以使用 +list-themes
CLI 列出可用主题进行预览:ghostty +list-themes
。
Ghostty 还支持指定单独的明暗主题:theme = dark:catppuccin-frappe,light:catppuccin-latte
。
主题文件可以设置任何配置选项,例如光标样式、字体等。主题文件可以位于文件系统上的任何位置。 如果要按名称引用主题,则必须将它们放置在特定目录中:
$XDG_CONFIG_HOME/ghostty/themes
$PREFIX/share/ghostty/themes
以下是一些常见的配置选项:
font-family
、font-family-bold
、font-family-italic
、font-family-bold-italic
用于设置字体系列。可以使用 ghostty +list-fonts
查看有效的字体值。font-style
配置禁用字体样式。font-synthetic-style
配置启用或禁用合成样式。font-feature
配置启用或禁用字体功能。font-size
用于设置字体大小(以磅为单位)。theme
用于设置主题,可以指定内置主题、自定义主题的名称或自定义主题文件的绝对路径。cursor-style
用于设置光标样式(块、条、下划线、空心块)。cursor-style-blink
用于设置光标是否闪烁。window-padding-x
和 window-padding-y
用于设置窗口的水平和垂直内边距。window-vsync
用于设置是否启用垂直同步。window-inherit-working-directory
和 window-inherit-font-size
用于设置新窗口是否继承工作目录和字体大小。command
用于设置要运行的命令(通常是 shell)。initial-command
用于设置第一次启动 Ghostty 时运行的命令。scrollback-limit
用于设置滚动缓冲区的大小。keybind
选项自定义键盘绑定。 例如:keybind = ctrl+z=close_surface
。all:
前缀将键盘绑定应用于所有终端表面。global:
前缀使键盘绑定全局生效。 global:
前缀仅在 macOS 上可用,并且需要授予 Ghostty 辅助功能权限.unconsumed:
前缀使键盘绑定不消耗输入。>
字符指定触发序列。例如:keybind = ctrl+a>n=new_window
。触发序列不允许用于 global:
或 all:
前缀的触发器。link
配置匹配终端文本的正则表达式,并将点击操作与打开 URL 或文件等操作相关联。可以使用 background-opacity
配置背景透明度。可以使用 clipboard-read
和 clipboard-write
配置是否允许程序读写系统剪贴板。可以使用 shell-integration
配置是否启用 shell 集成。有关所有配置选项的完整列表,请参阅文档或运行 ghostty +show-config --default --docs
。
相关阅读:Ghostty 终端配置指南
可以通过按 ctrl+shift+,
(Linux)或 cmd+shift+,
(macOS)重新加载配置。并非所有配置选项都可以在运行时重新加载。
Ghostty 提供了用于编写在 Ghostty 中运行的应用程序的 API。程序使用控制序列(也称为 VT 序列或转义代码)与终端进行交互。
0x1B
开头,后跟中间字符和最终字符。 例如:ESC D
。0x1B[
开头,后跟参数、中间字符和最终字符。例如:ESC [ 1 ; 2 m
。以下是一些常用的 VT 序列:
BEL
(0x07):发出哔声。BS
(0x08):将光标向后移动一个位置。TAB
(0x09):将光标向右移动到下一个制表位。LF
(0x0A):将光标向下移动一行。CR
(0x0D):将光标移动到左边距。DECSC
(ESC 7
): 保存光标。DECRC
(ESC 8
): 恢复光标。CUP
(CSI Py ; Px H
): 将光标移动到指定行和列。ED
(CSI Pn J
): 擦除显示。EL
(CSI Pn K
): 擦除行。有关 Ghostty 支持的所有 VT 序列的完整列表,请参阅参考文档。
Ghostty 是一款功能强大、速度快、高度可定制的终端模拟器。它旨在为用户提供最佳的终端体验,并为开发者提供强大的工具。如果你正在寻找一款现代化的终端模拟器,Ghostty 绝对值得一试。