终端
OxideTerm 的终端由 xterm.js 6 提供支持,配合 WebGL 加速渲染,即使在高负载终端工作流下也能保持流畅的 60fps+ 输出。
三级渲染调度器根据活动自动调整帧率:
| 级别 | 触发条件 | 帧率 | 效果 |
|---|---|---|---|
| 加速 | 帧数据 ≥ 4 KB | 120 Hz+(ProMotion 原生) | 消除大输出时的滚动延迟(cat largefile.log) |
| 正常 | 标准输入 | 60 Hz(requestAnimationFrame) | 平滑基线 |
| 空闲 | 3 秒无 I/O / 标签隐藏 | 1–15 Hz(指数退避) | 接近零 GPU 负载,省电 |
切换完全自动——由数据量、用户输入和 Page Visibility API 驱动。后台标签页通过空闲计时器继续刷新数据,无需唤醒 requestAnimationFrame。
Wire Protocol
Section titled “Wire Protocol”终端 I/O 完全绕过 Tauri IPC,使用直接 WebSocket 连接和二进制 Type-Length-Payload 协议:
+--------+--------+--------+--------+--------+-- ... --+| Type | Length (4 bytes, big-endian) | Payload || (1B) | | |+--------+--------+--------+--------+--------+-- ... --+| Type | 名称 | 载荷 | 方向 |
|---|---|---|---|
0x00 | Data | 原始终端字节 | 双向 |
0x01 | Resize | cols: u16 BE, rows: u16 BE | 客户端 → 服务端 |
0x02 | Heartbeat | seq: u32 BE | 双向 |
0x03 | Error | UTF-8 错误消息 | 服务端 → 客户端 |
最大载荷 16 MB。服务端每 30 秒发送心跳;客户端 90 秒内未响应则关闭连接。
多标签页与分屏
Section titled “多标签页与分屏”- 打开多个终端标签页,每个连接到不同或相同的 SSH 会话
- 支持水平和垂直分屏,实现并排查看
- 每个面板维护独立的 shell 通道
- 拖拽标签页重新排列或拆分为新面板
同时向多个终端面板发送相同的按键——适用于管理集群或在多个会话中执行相同命令。
从工具栏切换广播模式。被选中的面板实时接收相同的输入。可以选择性地将特定面板包含或排除在广播组之外。
搜索终端缓冲区内容,支持两种模式:
可见缓冲区搜索
Section titled “可见缓冲区搜索”搜索终端视口和 xterm.js 回滚缓冲区中当前可见的内容。快速,无需后端往返。
深度历史搜索
Section titled “深度历史搜索”搜索后端回滚缓冲区,可容纳比前端多得多的历史记录。结果在终端中高亮并可导航。
两种模式均支持:
- 区分大小写 / 不区分大小写模式
- 正则表达式支持
- 结果高亮并支持上一个/下一个导航
使用 Ctrl+F(macOS 上为 ⌘F)打开搜索栏。
会话录制与回放
Section titled “会话录制与回放”录制终端会话以 asciicast v2 格式保存,供后续回顾:
- 捕获所有终端输出并精确记录时间戳
- 支持变速回放(0.5×–8×)
- 导出录制文件以分享或归档
- 兼容 asciinema 生态
按 ⌘K(macOS)或 Ctrl+K(Windows/Linux)打开 命令面板——快速访问 OxideTerm 中的任何操作,包括连接、设置、搜索和快捷键。
进入禅模式可最小化干扰——隐藏侧边栏、标签栏和状态栏,让终端占据全部屏幕空间。
为终端自定义每个标签页的背景图片:
- 13 种支持的标签类型
- 可调整透明度和模糊度
- 多种适配模式(覆盖、包含、拉伸)
- 会话树 — 以层级结构组织连接,支持文件夹和分组
- 快速连接 — 直接输入主机/用户名/端口进行连接
- 导入/导出 —
.oxide加密格式(ChaCha20-Poly1305 + Argon2id) - SSH Config 导入 — 自动解析
~/.ssh/config导入现有连接 - 跳板机 / ProxyJump — 无限跳数,网络拓扑图 + Dijkstra 寻路
- 认证方式 — 密码、SSH 密钥(RSA/Ed25519/ECDSA)、SSH Agent(跨 macOS、Linux、Windows 系统 Agent 支持)、证书、键盘交互 2FA
- Known Hosts TOFU — 主机密钥验证,兼容
~/.ssh/known_hosts;拒绝密钥变更(防止中间人攻击) - 连接池 — 终端、SFTP、转发、IDE 通过引用计数连接池共享一个 SSH 连接
- 空闲超时 — 可配置(5m / 15m / 30m / 1h / 永不);无消费者的连接超时后自动断开
| 操作 | macOS | Windows / Linux |
|---|---|---|
| 新建连接 | ⌘ N | Ctrl+N |
| 本地终端 | ⌘ T | Ctrl+T |
| 命令面板 | ⌘ K | Ctrl+K |
| 终端搜索 | ⌘ F | Ctrl+F |
| 内联 AI | ⌘ I | Ctrl+Shift+I |
| 快捷键列表 | ⌘ / | Ctrl+/ |
| 禅模式 | ⌘ Shift+Z | Ctrl+Shift+Z |
OxideTerm 还支持桌面平台的本地终端会话(PTY),基于 portable-pty。自动检测 Shell 类型:
- macOS/Linux:
zsh、bash、fish、pwsh - Windows:PowerShell 7、Git Bash、WSL2、CMD(原生 ConPTY——完整支持 TrueColor 和 ANSI,无传统 WinPTY)
对于活跃的 SSH 连接,OxideTerm 显示实时资源分析器:
- 通过持久 SSH 通道读取
/proc/stat获取 CPU 和内存使用率 - 基于增量计算的精确 CPU 百分比
- 在非 Linux 系统上自动降级为仅 RTT 指标
- 智能端口检测 — 自动发现远程主机上的监听服务