TUIOS 终端多窗口管理器

Gaurav-Gosain/tuios 访问 GitHub ↗
🔤 Go ★ 5331 ⑂ 0 monthly #22 (+1670) 抓取 2026-10-15

一句话简介

一款使用 Go 语言开发的终端用户界面操作系统,提供类似桌面环境的多窗口管理体验,支持窗口平铺、堆叠及交互操作,让开发者可在命令行中高效处理多任务。

适用应用场景

  • 开发过程中同时查看日志与编辑代码
  • 在远程 SSH 会话中管理多个终端任务
  • 搭建轻量级的命令行工作环境
  • 替代 tmux 等传统终端复用工具

README 中文摘要

项目简介

TUIOS(Terminal UI Operating System)是一个基于 Go 语言构建的现代终端多路复用器与窗口管理器。它沿用了 vim 的模态交互思路,将多个终端窗格、工作区、二叉空间分割(BSP)平铺、Kitty 图形协议以及命令面板整合到现有终端中。后台守护进程负责保持会话存活、支持跨机器访问,并允许窗格中运行的编码代理上报自身状态、相互通信。

TUIOS 基于 Charm 工具链(Bubble Tea v2、Lipgloss v2)开发,采用事件驱动渲染以实现接近零的空闲 CPU 占用,并支持无闪烁的 Kitty 图像透传。

安装方式

包管理器

brew install tuios              # macOS / Linux (Homebrew)
yay -S tuios-bin                # Arch Linux (AUR)
nix run github:Gaurav-Gosain/tuios/v0.9.3#tuios   # Nix

其他方式

curl -fsSL https://raw.githubusercontent.com/Gaurav-Gosain/tuios/main/install.sh | bash  # 一键脚本
go install github.com/Gaurav-Gosain/tuios/cmd/tuios@latest                              # Go 安装
docker run -it --rm ghcr.io/gaurav-gosain/tuios:latest                                  # Docker

也可前往 GitHub Releases 下载多平台预编译二进制(含 checksums.txt)。tuios update 可升级脚本安装的版本;通过 tuios --version 可查看是否启用了 ghostty 模拟器后端。源码构建需 Go 1.26.6 或更高版本。

核心功能

终端与布局

支持多窗格创建、调整、拖拽与组织;提供 9 个独立工作区;提供 vim 风格的窗口管理与终端两种模态;内置模糊搜索的命令面板(Ctrl+P)和启动器(Alt+Space,按使用频次排序);支持 BSP 平铺、主从布局(master-stack)以及 niri 风格的滚动列布局;提供预选、共享分隔线、智能自动拆分等功能。

代理与协同

通过 tuios integration install 可接入 19 种主流代理框架(Claude Code、Codex、Gemini CLI、opencode 等),并自动识别 24 种代理 CLI。窗格标题与会话侧栏会显示代理的工作状态(进行中、等待、完成、错误)。tuios ask-human、tuios send-agent-message、tuios ask-agent 等子命令可用于消息投递与问答。tuios fan 可在多个代理间扇出同一提示,每个代理独立运行于各自的 git worktree。tuios mcp 子命令将功能暴露为 MCP 工具;tuios tmux-shim 兼容驱动 tmux 的工具(如 Claude Code agent teams)。

跨机器

tuios hosts add 注册远程主机(经 ssh),tuios hosts tailnet 列出 Tailscale 网络内的机器。tuios attach --host build api 在本机客户端中绘制远端会话,tuios new-window NAME --host build 可把单个窗格的进程运行在远端机器上,tuios new NAME --global 聚合多机窗格。

滚动回滚与复制

提供 vim 风格的复制模式,可穿越 10,000 行回滚、检索、按 hjkl 导航并 yank 文本;多窗格复制模式可一次搜索、跨窗格选区并导出为纯文本、Markdown 或 JSON;鼠标滚轮直接滚动回滚历史;含 OSC 133 命令块感知与可视化滚动条。

图形与协议

完整支持 Kitty Graphics Protocol(含 shm 与 base64,例如 mpv --vo=kitty);实验性的 Sixel 透传;Kitty Keyboard Protocol(CSI u,已兼容 Fish 4.x);Mode 2026 同步输出;Kitty Animation Protocol(a=f/a=a/a=c)支持帧增量与损坏区域流式更新;响应 OSC 4、OSC 10-12、CSI 14/16/18t、DA1/DA2 等终端查询。

会话、自动化与其他

守护进程模式支持会话分离/重连、重启后会话复活、按工作目录恢复;布局模板可保存/加载或导出为 tape 脚本;提供 DSL 形式的 tape 脚本录制与回放;提供 which-key 弹层、应用启动器、聚合视图(跨工作区搜索预览)、多窗格广播(multifocus);支持 Showkeys 浮层、聚光灯、截图导出(PNG/SVG/ANSI/HTML/文本)、可定制的 TOML 键位、CSS 风格 hook、自带主题并允许 JSON 自定义、SSH 服务端模式以及基于浏览器的 Web 终端模式。

快速上手

tuios                    # 启动
tuios --show-keys        # 启动时显示按键提示
tuios --standalone       # 关闭守护进程,本次直接运行

守护进程模式下:

tuios new mysession          # 创建持久会话
tuios attach mysession       # 重连
tuios ls                     # 列出所有会话
tuios kill-session mysession # 销毁会话

前缀键默认为 Ctrl+B。常用快捷键:Ctrl+P 打开命令面板;Alt+Space 打开启动器;n 新建窗格;i / Enter 进入终端模式;Prefix+Esc 或 Alt+Esc 返回窗口管理模式;Prefix+d 分离会话;z 缩放窗格;Prefix+Space 切换 BSP 平铺;Prefix+[ 进入复制模式;Prefix+S 切换会话;Prefix+? 显示帮助。

架构设计

TUIOS 在 Bubble Tea v2 之上遵循 Model-View-Update 模式,主要决策包括:PTY 读取协程通过带缓冲通道驱动渲染,避免固定频率轮询;Kitty 图像 ID 在帧间复用,配合 Mode 2026 同步输出实现无闪烁视频;BSP 树支持螺旋与智能切分两种方案;复制模式通过隐式会话复用同一套机制。

核心模块:

  • 窗口管理器(internal/app/os.go):集中状态、工作区、浮层
  • 终端模拟(internal/vt/):含回滚、Kitty/Sixel 图形、Kitty 键盘协议、OSC 133 的 ANSI 解析器
  • 渲染(internal/app/render.go):图层合成、视口裁剪、图形批处理
  • 输入(internal/input/):模态路由、100+ 可配置键位、鼠标处理
  • Kitty 透传(internal/app/kitty_passthrough.go):通过图像 ID 复用与同步输出实现无闪烁转发

性能特性

  • 事件驱动渲染,空闲时 CPU 占用接近零
  • Kitty 图形通过 ID 复用避免闪烁,Mode 2026 保证画面不撕裂
  • 未聚焦窗格使用模拟器内置渲染,跳过逐格重绘
  • 基于序列检测的 LRU 样式缓存可减少 40-60% 内存分配
  • 视口裁剪使离屏与最小化窗格跳过渲染
  • 字符串、缓冲区、样式统一对象池化

开发与测试

git clone https://github.com/gaurav-gosain/tuios.git
cd tuios
go build -o tuios ./cmd/tuios
./tuios

./scripts/install.sh 将本地构建安装至 ~/.local/bin(构建纯 Go 模拟器),追加 ghostty 参数则切换为 ghostty 后端。常用检查命令:

go test ./...             # 运行测试
go vet ./...              # 静态检查
golangci-lint run         # 按 CI 配置 lint
govulncheck ./...         # 已知漏洞扫描

许可证

本项目基于 MIT 协议发布,详见 LICENSE。

摘要更新于 2026-10-15 00:34:20 · 原文 23997 字符 · md5 4a3d61202190…