跳转到内容

终端

OxideTerm 使用 alacritty_terminal + GPUI 实现原生终端。SSH、本地 PTY、Telnet 和串口的输入直接更新 Rust 中的终端状态,再由 GPUI 绘制到 GPU 表面;数据不经过浏览器脚本或本地网络桥接。

终端会根据输入活动和待处理数据在三级策略之间自动切换:

级别触发条件作用
Boost上一轮未能排空待处理终端事件提高单轮处理预算,尽快追上大输出
Normal最近有键盘输入或终端活动保持交互和滚动响应
Idle一段时间没有终端活动减少无意义重绘和资源消耗

渲染策略还会依据质量、平衡、性能或兼容配置调整事件排空预算、图片缓存和视觉效果。切换由 Rust 状态驱动,不依赖页面可见性或浏览器动画循环。

终端与桌面界面之间没有线协议。典型 SSH 终端的数据流如下:

SSH PTY 通道 → TerminalSession → TerminalState → GPUI 绘制

滚动缓冲、光标、选区、命令标记、搜索结果以及 Sixel/Kitty 图形都由 Rust 终端会话持有。窗口尺寸变化会直接更新会话并调整远端 PTY,无需跨前后端序列化。

  • 打开多个终端标签页,每个连接到不同或相同的 SSH 会话
  • 支持水平垂直分屏,实现并排查看
  • 每个面板维护独立的 shell 通道
  • 拖拽标签页重新排列或拆分为新面板

从终端命令栏向多个终端面板发送同一条命令,适用于管理集群或在多个会话中执行相同操作。

在命令栏的广播菜单中选择目标,再提交命令。当前面板和选中的目标会收到这条命令;直接在终端画面中键入的内容不会逐键镜像。详见广播输入

搜索当前活动面板的原生终端滚动缓冲区。匹配结果会直接在终端画面中高亮,并支持上一个/下一个导航。当前实现使用区分大小写的字面文本匹配;搜索范围取决于配置的滚动缓冲行数。

使用 Ctrl+Shift+F(macOS 上为 ⌘F)打开搜索栏。详细说明见终端搜索

录制终端会话以 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 / 永不);无消费者的连接超时后自动断开
操作macOSWindows / Linux
新建连接⌘ NCtrl+N
本地终端⌘ TCtrl+T
命令面板⌘ KCtrl+K
终端搜索⌘ FCtrl+Shift+F
内联 AI⌘ ICtrl+Shift+I
快捷键列表⌘ /Ctrl+/
禅模式⌘ Shift+ZCtrl+Shift+Z

OxideTerm 还支持桌面平台的本地终端会话(PTY),基于 portable-pty。自动检测 Shell 类型:

  • macOS/Linuxzshbashfishpwsh
  • Windows:PowerShell 7、Git Bash、WSL2、CMD(原生 ConPTY——完整支持 TrueColor 和 ANSI,无传统 WinPTY)

活动 SSH 节点可以向原生监控和主机工具提供延迟、进程、服务、容器、端口、文件系统、软件包、日志及其他采样状态。它们与终端共享节点身份和重连状态,而不是打开一个无关的工作区。