在 Linux 控制台上生活 — 第2部分:casty,TTY 的完整浏览器
发布: (2026年4月5日 GMT+8 14:28)
3 分钟阅读
原文: Dev.to
Source: Dev.to
介绍
“GUI 不是选项。” — 匿名
在第 1 部分,我构建了 bcon —— 一个为 Linux 控制台提供 GPU 加速的终端模拟器。
但作为开发者,有一样东西是逃不掉的:网页浏览器。
AI 编码代理可以处理调研工作,但检查自己的 Web 应用是否正确渲染、审阅 GitHub Actions、PR 等任务仍然需要真实的浏览器。
现有方案
| 工具 | 引擎 | 渲染方式 | JavaScript | 站点保真度 | 无 GUI 环境 | 文本复制 | 鼠标 | 安装方式 |
|---|---|---|---|---|---|---|---|---|
| eww | Emacs shr | 文本 + 有限图片 | ❌ | 🔴 低 | ✅ (Linux) | ✅ | ❌ | M-x package-install |
| browsh | headless Firefox | ANSI 方块字符 | ✅ | 🟡 低 | ✅ (Linux) / ❌ (Mac) | ✅ | 🔺 | go install |
| Carbonyl | Chromium fork | Unicode 方块 (▄ + 24‑bit) | ✅ (WebGL/WebGPU) | 🟡 中等 | ✅ | ✅ | ✅ | npm i -g carbonyl |
| awrit | Electron | Kitty Graphics | ✅ | 🟢 高 | ❌ (需要显示服务器) | ❌ | ✅ | curl | bash |
| casty ⭐ | Chrome headless‑shell | Kitty Graphics | ✅ | 🟢 高 | ✅ (无 X11,适合 SSH) | ✅ (Alt + C) | ✅ | npm i -g @sanohiro/casty |
没有任何现有工具同时满足所有条件(JavaScript + CSS + 高保真 + 文本复制 + 无需 GUI),于是我构建了 casty。
casty
- 仓库地址:
- 全局安装:
npm i -g @sanohiro/castycasty 可在任何支持 Kitty‑Graphics 的终端上运行(例如 bcon、Ghostty、Kitty)。
工作原理
- 启动 Chrome headless‑shell(首次运行时自动下载到
~/.casty/)。 - 通过 CDP(Chrome DevTools Protocol)使用 WebSocket 进行连接。
- 捕获屏幕截图 并通过 Kitty Graphics 协议流式传输到终端。
- 将键盘和鼠标事件 从终端转发回 Chrome,仍通过 CDP。
Cookie 与存储会保存在 ~/.casty/,因此可以像在普通浏览器中一样登录 Google 等服务。
演示亮点
- casty 在 bcon 中的 Linux 控制台上运行
- 在 bcon 上的 casty 中播放 YouTube 视频
- 使用 Claude Code 编辑 React 应用,同时在 casty 中实时观看更改(界面为日文)。
更改会即时反映,工作流“开箱即用”。 😎
结论
有了 casty,你可以在纯 Linux 控制台上浏览现代网页、观看视频并进行交互式开发。后续功能还在持续完善。