找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2478

积分

0

好友

336

主题
发表于 2 小时前 | 查看: 1| 回复: 0

很多终端用户都有一个执念,恨不得所有操作都能在命令行里完成。但图形用户界面(GUI)程序一直是个难以逾越的坎,要么费力寻找各种基于文本的用户界面(TUI)替代品,要么就不得不老老实实地切换回传统的图形桌面。

现在,一个名为 term.everything 的开源项目彻底改变了这一局面。

终端内运行YouTube视频与Python代码

这个在 GitHub 上获得了超过 7.4K Stars 的项目,能让你在终端里直接运行几乎任何 GUI 程序。无论是浏览器、文件管理器、视频播放器,还是整个桌面环境,都能被“塞进”你的终端窗口中。更令人惊讶的是,你甚至可以通过 SSH 远程运行 GUI 应用,体验相当颠覆。

term.everything 是什么?

从终端启动文件管理器

简单来说,term.everything 是一个从零开始编写的 Wayland 合成器(Compositor)。它的独特之处在于,其渲染输出目标不是你的物理显示器,而是你的终端。

它能够将GUI窗口实时转换为ANSI字符画,并显示在终端上,同时保持完整的交互能力。它支持运行在 X11 或 Wayland 的主机系统上,项目本身使用 Go 语言编写(早期版本为 TypeScript)。这并非简单的截图转字符工具,而是真正的实时渲染,你可以像在普通桌面上一样操作这些窗口。

如果你的终端支持如 kitty 或 iTerm2 的图片传输协议,它甚至能以全分辨率显示图形界面,不再是模糊的字符画,而是接近原图的质量。

它能做什么?

  • 在终端里运行浏览器:无论是 Firefox 还是 Chrome,都可以在终端里直接启动。点击链接、滚动页面、输入文字,所有操作都与原生体验无异。
  • SSH 远程使用:这是最强大的功能之一。通过 SSH 连接到远程服务器后,你可以在远程机器上启动 GUI 程序,并通过 SSH 隧道将图形界面传回本地,显示在你的终端里。作者曾演示过通过 SSH 在终端里玩游戏。
  • 运行任何 Linux GUI 程序:文件管理器(如 Nautilus)、视频播放器、文本编辑器等,只要是 Linux 下的 GUI 程序,理论上都可以运行。
  • 终端套娃:你可以在 term.everything 启动的终端里,再运行一个 term.everything,从而实现“终端里开终端,再开终端”的无限套娃。
  • 分辨率可调:通过缩小终端字体(通常是 Ctrl + -),你可以在有限的字符单元格内显示更高的逻辑分辨率。对于支持图片协议的终端,则能直接显示完整分辨率。
  • 运行整个桌面环境:有用户尝试在虚拟机中使用它来运行完整的 KDE 桌面环境,并成功在终端窗口里进行操作。

其背后的工作原理是什么?

  • Wayland 合成器:它不是简单的截图工具,而是一个功能完整的 Wayland 合成器,直接拦截应用程序的窗口渲染请求。
  • 实时转换:将帧缓冲(framebuffer)中的图像数据,实时转换为 ANSI 转义序列或终端支持的图片协议数据流。
  • 支持多种输出模式:可以根据终端能力,动态选择使用字符画、Unicode 块字符或高质量的图片协议进行渲染。
  • 开源且可玩性高:项目使用 Go 编写,代码结构清晰,非常适合开发者进行二次修改和 Hack。

支持哪些终端?

  • Alacritty:支持基础的字符画显示模式。
  • Kitty:支持图片协议,可以实现全分辨率高清显示。
  • iTerm2:macOS 上的终端模拟器,同样支持图片协议。
  • 其他支持 ANSI 的终端:基本上所有现代终端都能运行,但分辨率会受到字符网格的限制。

如何使用?

下载 Beta 版本:
直接前往项目的 GitHub Releases 页面,下载最新的预编译二进制文件。

或者自行编译:

git clone https://github.com/mmulet/term.everything.git
cd term.everything
make

编译需要 Go 语言环境以及一些 C 语言依赖库,具体请参考项目内的 Contributing.md 文件。

运行示例:

# 本地直接运行 Firefox
./term.everything firefox

# SSH 远程使用:先连接到远程主机
ssh user@remote-host
# 然后在远程主机上运行,图形界面会显示在你的本地终端
./term.everything nautilus  # 运行文件管理器

更详细的参数和用法请查阅项目中的帮助文档。

关于分辨率调整:如前所述,在普通终端中缩小字体即可提升显示细节。如果你的终端支持图片协议(如 Kitty),则会自动使用最佳分辨率,无需手动调整。

效果展示

term.everything 运行 Firefox 并打开网页:
终端内运行Firefox

通过 SSH 在远程终端内操作图形化文件管理器:
SSH远程运行GUI文件管理器

在终端内播放 YouTube 视频:
终端内播放YouTube视频

在 macOS 终端内运行 Firefox:
macOS终端内运行Firefox

在终端内访问一个像素风游戏网页:
终端内访问网页游戏

结语

这个项目的创意非常大胆,本质上是一次硬核的技术炫技,但它确实蕴含着实用的价值。例如,当你通过 SSH 管理远程服务器时,如果需要快速查看一张图片或是调整某个带图形界面的配置工具,不再需要额外配置复杂的 VNC 或 X11 转发,直接在终端里就能轻松搞定,极大提升了工作效率。

对于喜欢探索 开源 黑科技的开发者来说,term.everything 无疑是一个值得把玩和学习的项目。它不仅挑战了我们对终端能力的传统认知,也为远程图形化操作提供了一种全新的、极简的思路。

项目地址https://github.com/mmulet/term.everything

你是否尝试过在终端里做更多事情?欢迎在 云栈社区 分享你的经验和想法。




上一篇:雪花算法分布式ID生成器重复问题分析:从自研轮子到系统设计教训
下一篇:开发者必备的2个免费JSON工具:json4u.cn与JSON Hero实战测评
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-27 02:53 , Processed in 0.243112 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表