Ubuntu 下手动编译 Linux 终端工具 Ghostty
抱着好玩的心态,想在 Ubuntu 上试用一下 Ghostty 终端工具。官方未提供二进制程序下载,但是提供了 Linux 编译安装指南 Build From Source
Ghostty 是通过 Zig 编写的,所以需要先安装 Zig 编译器。安装 snap,然后通过 snap 安装 Zig。Zig 安装指南
snap install zig --classic --beta
安装好 Zig 后,就可以开始编译 Ghostty 了。
编译安装
下载源码
git clone git@github.com:ghostty-org/ghostty.git
cd ghostty
zig build -Doptimize=ReleaseFast
如果直接运行 zig build
,会报错:
warning: pkg-config had errors:
Package gtk4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk4.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk4' found
warning: pkg-config: Exited with code 1
error: Unexpected
/home/newdisk/ghostty/build.zig:146:17: 0x117a4c6 in build (build)
return error.Unexpected;
^
/snap/zig/11625/lib/std/Build.zig:2117:24: 0x113f0a7 in runBuild__anon_8858 (build)
.ErrorUnion => try build_zig.build(b),
^
/snap/zig/11625/lib/compiler/build_runner.zig:301:9: 0x113a3cf in main (build)
try builder.runBuild(root);
^
error: the following build command failed with exit code 1:
这是因为缺少 gtk4 的依赖,需要安装 gtk4 的开发包。
sudo apt install libgtk-4-dev libadwaita-1-dev git
安装好依赖后,再次运行 zig build -Doptimize=ReleaseFast
,就可以成功编译了。
启动 Ghostty
chmod +x zig-out/bin/ghostty
./zig-out/bin/ghostty
查看效果
终端集成了 Bash、Zsh、Fish、Elvish
Shell | Integration |
---|---|
bash | ${GHOSTTYRESOURCESDIR}/shell-integration/bash/ghostty.bash |
fish | “$GHOSTTYRESOURCESDIR"/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish |
zsh | ${GHOSTTYRESOURCESDIR}/shell-integration/zsh/ghostty-integration |
elvish | ${GHOSTTYRESOURCESDIR}/shell-integration/elvish/lib/ghostty-integration.elv |
设置默认终端为 Fish
cat ~/.config/ghostty/config
shell-integration = fish
修改之后重新启动 Ghostty,就可以在终端日志中看到 Fish 的集成信息。
info(io_exec): found Ghostty resources dir: /home/newdisk/ghostty/zig-out/share/ghostty
info(io_exec): shell integration automatically injected shell=termio.shell_integration.Shell.fish
感受
Ghostty 是一个很有趣的终端工具,可以分屏,比 Ubuntu 自带的终端要强一些,集成了多种 Shell,可以让用户自由选择。但是目前还是一个早期版本,功能还不够完善,有些功能还不够稳定。不过,作为一个开源项目,相信未来会越来越好。