一个粘在 macOS Dock 上的终端
文章摘要
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 本身一样。作者说这正是重点:在你当前所在的项目里跑一条命令,然后直接回到编辑器,不用切应用、不用丢失位置。
工程细节上也有几点值得一提:
- 应用需要辅助功能(Accessibility)权限,唯一用途是读取 Dock 的实时屏幕位置。没有这个权限它仍然能用,只是固定在某个角落而不是贴着 Dock。
- 它跟随 Dock 跨显示器移动——把 Dock 挪到另一台显示器,Starboard 一秒内会重新粘过去。Dock 自动隐藏时它会一起隐藏和显现,但在你正在用它(打字中,或已展开)时不会,以免打字打到一半被抽走。左/右侧 Dock 目前不支持,会退回到那块屏幕的固定角落。
- 安全上作者的态度很坦诚:Starboard 不发任何网络请求、不收集任何数据——「源码里根本没有能做这些事的东西,因为它只有 4 个 Swift 文件、不到 700 行,值得你自己读一遍而不是听我保证。」
- 分发方式有 Homebrew tap 和手动下载两种。因为构建是 ad-hoc 签名且未经公证(notarize),首次启动需要在「系统设置 → 隐私与安全性」里点「仍要打开」。README 甚至专门写了一段已知的权限坑:原地覆盖更新后,系统设置可能仍显示 Starboard 已获授权但实际上没有,重新勾选也没用,需要把条目删掉或者跑
tccutil reset Accessibility com.starboard.app再重启应用。 - 已知问题也如实列出:粘贴的文本会短暂地以错误颜色渲染,直到下一次按键。
HN 评论精华
这个帖子拿到 54 分、18 条评论,讨论量不大且高度集中在作者与早期用户的互动上——作者几乎回复了每一条评论,并且在帖子存活期间连发了好几个版本。可以说这条帖子本身就是一次公开的迭代记录,而不是一场技术辩论。
- Maphielbso 提出了第一个也是最有影响的需求:能不能纵向展开,以便看更大块的输出?作者最初回答说 Starboard 是粘在 Dock 上的,他在考虑两种方案:按需展开,或者加个按钮打开真正的终端窗口,并反问「你想的使用场景是什么?跑 agent 吗?」——随后他直接实现了:Cmd+E 展开到 100% 高度,再按一次回到 Dock 高度。他还补了一句「顺便说,因为这个我自己也开始在 Starboard 里跑 agent 了,好建议」。
- nottorp 提出了本帖最关键的定位问题:「这不就是 Quake 控制台,只是横跨整个桌面吗?(我倒不讨厌它。)」作者给了一个我认为很准确的区分:「这是个不错的类比,属于同一个家族,但你可以把 Starboard 想成一个永不被收起、也永不抢焦点的 Quake 控制台,粘在 Dock 上,不干扰任何其他东西,现在还能为长任务展开。」
- prabhanjana_c 提供了本帖唯一一份详细的真实使用反馈。他在 macOS Tahoe 26.5.1 的 MacBook Pro 上试了 Starboard.zip,能用,但发现 Cmd+E 只展开高度不展开宽度,默认宽度只有大约 4–5 个字符(他怀疑与 Dock 自动隐藏有关)。他还分享了自己的工作流:在
documents/claude_mac_master目录常驻一个跑着 Claude Code CLI 的终端作为「主控」,用来做几件高频事情——按名字搜索并打开 VS Code 项目(之后会记住最近 10 个项目)、把刚下载的图片挪到正确目录、按给定 vision 在正确位置创建新的实验项目并用 cmux 打开、检查磁盘占用并清理。 - 作者对这条反馈的回应把 Starboard 的适用边界讲清楚了:默认宽度窄是因为用户的 Dock 太宽——建议减小 Dock 高度、移除不常用的应用,Starboard 会自动重算并获得更多空间;同时他直言不讳地给出使用建议:「Starboard 适合快速的环境性操作(打开项目 X 的 VS Code、整理下载、快速看看磁盘),Claude Code 会话还是用真正的终端。」尽管他自己也在 Starboard 里跑 Claude Code,因为它能跨桌面保持。他随后又发布了新版:Starboard 会忽略 Dock 并在屏幕居中展开,以及加了最小宽度,Dock 太宽时会坐到 Dock 上方。
- marshallku 问是否支持左侧 Dock(他一直把 Dock 放左边)。作者说新版本支持,但实际行为是:Dock 在左侧时 Starboard 默认落到右下角,右侧 Dock 和自动隐藏同理——也就是退化为固定角落,而不是真的贴着侧边 Dock,这一点 README 里说得比评论区更诚实。
- 作者在帖子中途主动做了一次用户调研:「Starboard 目前假设 Dock 在底部、单显示器。你们有多少人用左/右侧 Dock、多显示器、自动隐藏?你们的配置是怎样的?我按你们需要的顺序做改进。」
- 其余评论(toplinesoftsys、j_aime、caiocmpaes)都是简短的正面反馈,核心共鸣点由 toplinesoftsys 一句话概括:「就为了一两条命令而去折腾窗口,这事儿本来就不该有。」作者对每一条都追问了具体使用场景,但基本没得到回应。
</content>