term.everything:把任意 GUI 应用塞进终端里运行的开源工具

终端党们可能想过一个问题:能不能把所有 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

实际效果

运行后你会在终端里看到应用的”像素画”版本。虽然分辨率受限于终端字符的大小,但基本的界面元素、文字、按钮都能辨认。浏览网页、写代码这类操作勉强可以进行。

技术原理

这个项目的核心思路是:

  1. 截取屏幕:利用操作系统的屏幕捕获 API,获取应用窗口的像素数据
  2. 像素转字符:把每个像素的颜色信息转换成对应的 ANSI 颜色代码和 Unicode 块字符
  3. 输出到终端:把转换后的字符画打印到终端
  4. 输入转发:捕获终端里的键盘和鼠标事件,转发给目标应用

整个过程是实时的,利用 Rust 的高性能来保证帧率。

适合什么场景

  • SSH 远程办公:没有图形界面的服务器上临时需要跑 GUI 应用
  • 极客娱乐:在终端里跑 Chrome、玩 Minesweeper,纯粹好玩
  • 演示和截图:做出”终端里跑 Windows”的酷炫效果
  • 无障碍探索:研究如何让图形界面应用对纯文本环境更友好

限制

  • 分辨率受限于终端窗口大小和字体,精细操作比较困难
  • 帧率取决于终端渲染速度,复杂应用可能会卡
  • 部分应用的 DRM 或安全限制可能阻止屏幕捕获
  • 目前主要支持 macOS 和 Linux,Windows 支持还在开发中

简评

term.everything 更多是一个技术演示,证明了”任何 GUI 应用都能在终端里跑”这件事是可行的。日常使用还是老老实实开图形界面吧,但如果你想体验一把”终端就是操作系统”的感觉,或者做个酷炫的截图,这个项目值得一试。

来源:
GitHub – mmulet/term.everything
Hacker News 讨论

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容