终端党们可能想过一个问题:能不能把所有 GUI 应用都塞进终端里?最近有个叫 term.everything 的开源项目,就做了这么一件事——把任何图形界面应用渲染到终端里运行。听起来很疯狂,但它真的能用。
项目是什么
term.everything 是一个开源工具,可以把任意 GUI 应用的界面”翻译”成终端字符画,在终端窗口里显示和交互。浏览器、编辑器、甚至游戏,理论上都能跑。
项目地址:https://github.com/mmulet/term.everything
功能亮点
- 运行任意 GUI 应用:不限于特定类型的应用,理论上支持任何图形界面程序
- 实时渲染:把像素转换成 Unicode 字符和 ANSI 颜色代码,在终端里实时显示
- 支持交互:鼠标点击、键盘输入都能正常响应
- 跨平台:支持 macOS 和 Linux
- 开源:MIT 许可证
安装方法
macOS
brew install mmulet/tap/term-everything
从源码编译
git clone https://github.com/mmulet/term.everything.git
cd term.everything
cargo build --release
编译完成后,二进制文件在 target/release/term-everything。
使用方法
运行一个应用
# 把 Chrome 浏览器跑在终端里
term-everything /Applications/Google\ Chrome.app
# 运行 VS Code
term-everything /Applications/Visual\ Studio\ Code.app
实际效果
运行后你会在终端里看到应用的”像素画”版本。虽然分辨率受限于终端字符的大小,但基本的界面元素、文字、按钮都能辨认。浏览网页、写代码这类操作勉强可以进行。
技术原理
这个项目的核心思路是:
- 截取屏幕:利用操作系统的屏幕捕获 API,获取应用窗口的像素数据
- 像素转字符:把每个像素的颜色信息转换成对应的 ANSI 颜色代码和 Unicode 块字符
- 输出到终端:把转换后的字符画打印到终端
- 输入转发:捕获终端里的键盘和鼠标事件,转发给目标应用
整个过程是实时的,利用 Rust 的高性能来保证帧率。
适合什么场景
- SSH 远程办公:没有图形界面的服务器上临时需要跑 GUI 应用
- 极客娱乐:在终端里跑 Chrome、玩 Minesweeper,纯粹好玩
- 演示和截图:做出”终端里跑 Windows”的酷炫效果
- 无障碍探索:研究如何让图形界面应用对纯文本环境更友好
限制
- 分辨率受限于终端窗口大小和字体,精细操作比较困难
- 帧率取决于终端渲染速度,复杂应用可能会卡
- 部分应用的 DRM 或安全限制可能阻止屏幕捕获
- 目前主要支持 macOS 和 Linux,Windows 支持还在开发中
简评
term.everything 更多是一个技术演示,证明了”任何 GUI 应用都能在终端里跑”这件事是可行的。日常使用还是老老实实开图形界面吧,但如果你想体验一把”终端就是操作系统”的感觉,或者做个酷炫的截图,这个项目值得一试。












GitHub – TauricResearch/TradingAgents


GitHub – docusealco/docuseal

暂无评论内容