我把用了很久的终端配置整理成了 Dotgraft
我每天大部分时间都在终端里,写代码、跑测试、看日志,一天要开很多次。这套配置在自己机器上用了很久,后来整理成了 Dotgraft,组合是 Ghostty + Starship + zsh。
我不会写 shell 脚本,也没认真研究过 dotfiles,能留下来靠的是每次换电脑把同一批文件再抄一遍,抄多了就烦,于是才有了这个项目。
安装之前,先看清楚会改哪些文件
我换过几次电脑,也重装过很多次环境,装软件其实不烦,烦的是把终端恢复成顺手的样子:主题、提示符、补全、历史记录,再加几个小工具。
网上教程很多,照着改也能跑。但过几个月再打开 ~/.zshrc,经常会愣一下,这行是谁加的,删了会不会出问题。当时觉得都记得,后来只剩一堆看不懂的路径。
Dotgraft 就是为这件事写的,安装一行:
bash <(curl -fsSL https://raw.githubusercontent.com/rokcso/dotgraft/main/bootstrap.sh)
它会先检查环境,装好 chezmoi,然后问三件事:要哪些命令行工具、用哪套主题、要不要开 macOS 原生毛玻璃。
问完不会马上写。它先把要变化的文件列出来,你确认了才动手,已有的同名配置先备份到 ~/.config-backup/。全程不需要 sudo,也不碰 /etc、~/.zprofile、~/.zshenv 这些地方。
装完执行 exec zsh,在 Ghostty 里按 Cmd + Shift + , 重载,就结束了。
主题是配好的,提示符我改了一处
Ink 是深色,默认,我自己一直在用;Paper 偏暖,白天看着舒服;Porcelain 更冷,画面干净。
dotgraft theme paper
切换只改外观,不会再问一遍工具和毛玻璃。Ghostty 和 Starship 是一起换的,不会留下终端变了浅色、提示符还黑着这种半吊子状态。
提示符用的是 Starship 的彩虹条。这个预设默认把输入挤在提示符后面,我改成彩色信息占第一行、输入单独一行。改动只有一行配置,但命令一长就能感觉到。
装完还能改
那三个问题都存在本地配置里,想改随时改:
dotgraft reconfigure
可选的小工具是 fzf、zoxide、eza、bat、yazi,当时没勾,之后补上就行。反过来取消勾选,只删对应的配置片段,不会去卸载你 Homebrew 装好的包,这一点我特意没做。
自己机器上的东西写到 ~/.config/zsh/conf.d/90-local.zsh,这个文件不在管理范围里,之后更新不会覆盖它。
dotgraft 的界面有英文和简体中文,默认跟系统语言走,也能手动固定:
dotgraft lang # 现在是哪种,以及从哪判断出来的
dotgraft lang zh # 固定为简体中文
常用命令不多,多数时候只用得上前两个:
| 命令 | 作用 |
|---|---|
dotgraft status |
当前主题、选配、版本 |
dotgraft diff |
看看接下来会改什么 |
dotgraft reconfigure |
重新选工具和主题 |
dotgraft backup list |
看看有哪些备份 |
dotgraft restore <时间戳> |
恢复到某次备份 |
dotgraft doctor |
环境自检,出问题先跑这个 |
dotgraft uninstall |
备份后卸载 |
其余的 apply、update、theme 在文档里,这里就不占篇幅了。
卸载也要能退回去
我见过不少一键脚本,装的时候很痛快,卸载只能靠回忆删文件。
Dotgraft 卸载前先备份所有受管文件和你的 ~/.zshrc,然后只删属于自己的文件,~/.zshrc 里那一小块会被完整移除,剩下的原样保留。
如果源目录里混进了别的受管文件,或者 .zshrc 的标记只剩一半,它会停下来,不会接着删。它也不会顺手卸载你用 Homebrew 装的软件,不碰系统目录。
它用的是独立的 chezmoi 目录,不覆盖你原有的 chezmoi 配置。但要是另一个工具也在管同一个文件,冲突照样会有,这个我没法替你判断。
我判断一个配置工具能不能进主力机,先看它能不能干净地退出来。装之前先想怎么删听着别扭,但这几年环境重装的次数多了,这已经成了习惯。
它适合谁
macOS 用户想要一套现成的 Ghostty + Starship + zsh,装它比较省事,安装前能看到改动,用一阵子想换主题、加工具也都有对应命令。
不适合的是另一类人:喜欢自己控制每一行,或者手上已经有一堆 dotfiles。Linux 目前不支持,我只有 macOS 环境,没验证过的东西不想写成「支持」。
还有一点得说清楚,这是我的个人项目,现在是 0.1.1。需要 macOS 13 及以上、Homebrew 和网络;Ghostty 配置面向 1.3 及以上;原生毛玻璃要 macOS 26,旧系统用普通模糊。
装完之后
exec zsh # 新开一个 shell
dotgraft status # 看看当前状态
dotgraft doctor # 环境自检
项目地址:
https://github.com/rokcso/dotgraft
文档里有安装、主题、常见问题和卸载方式。用着不合适,dotgraft uninstall 退回去就行,有问题在 GitHub 提 issue。
终端配置很个人,我把自己那套整理出来,只是觉得这个流程可能对别人也有用。