一个粘在 macOS Dock 上的终端

查看原文 HN 讨论

文章摘要

Starboard 是一个极小的 macOS 应用,它的一句话定位写在 README 第一行:「一个始终都在的终端——不需要召唤,也不会被关掉。」

作者 leopalamim 在 Show HN 自述里讲了这个项目的完整由来,比 README 更有意思。他说自 2020 年开始编程以来,每天的动作都是打开 Ghostty,cd path + code .,甚至到今天都不知道怎么先打开 VS Code 再从里面打开项目。他同时开 3–4 个 VS Code 窗口,并且喜欢把它们放在不同的桌面(Space)——他一共用 8 个桌面:3–4 个给 VS Code,1 个给 Arc,1 个给 Docker,1 个给 Postman。于是每天开机的流程是:(1)打开 Ghostty;(2)cd 路径 + code .;(3)把 VS Code 窗口拖到目标桌面;(4)切回 Ghostty 所在的桌面;(5)重复,直到所有项目都打开。

「我就这么心安理得地忍了六年,」他写道,「直到某天意识到这有多低效:(1)仅仅为了跑一条一次性命令去开 Ghostty,感觉就是错的——如果它不是一个需要我盯着的进程,我为什么需要一个终端;(2)每次想开新项目就得回到 Ghostty 那个桌面、拖窗口、再切回来……有意思的是,我们就这样接受一个习惯,从来不想着去修它。」

他想要的是一个跨桌面持久、始终可见、并且不大的终端——因为只跑一次性命令。「哪里能塞下一个永远可见、随时可达的终端?我看了看 macOS 的 Dock,看了看它右侧那块空白,然后说:就是这儿。」

于是 Starboard 的具体形态是:一个浮动终端窗口,字面意义上粘在 Dock 上,填满 Dock 右侧的空白区域,实时跟踪 Dock 的高度和位置。它在任何桌面上都可见,包括全屏应用之上,并且永远不抢焦点。它承载的是一个真正的持久 shell(zsh -l),cd、历史记录和状态在命令之间会保留下来,而不是一个一次性命令执行器。它有自己的深色外观和一套克制的航海主题 ANSI 配色。Cmd+E 可以把它展开到全屏高度(后来又改成忽略 Dock、屏幕居中),再按一次 Cmd+E 收回。

README 里明确解释了它和 Quake 式终端(Guake、Yakuake、tilda、iTerm2 热键窗口、Ghostty quick terminal)的区别:那些工具用热键召唤终端、把焦点交给它、用完再收起来;Starboard 没有热键、从不获取焦点、没有召唤/收起的循环——它就那么待在那儿,跟 Dock 本身一样。作者说这正是重点:在你当前所在的项目里跑一条命令,然后直接回到编辑器,不用切应用、不用丢失位置。

工程细节上也有几点值得一提:

HN 评论精华

这个帖子拿到 54 分、18 条评论,讨论量不大且高度集中在作者与早期用户的互动上——作者几乎回复了每一条评论,并且在帖子存活期间连发了好几个版本。可以说这条帖子本身就是一次公开的迭代记录,而不是一场技术辩论。

</content>