Skip to content

连接与主机

架构

Terminality 把连接意图(打开什么)与主机身份(连接到哪里)分开。界面从不拼装协议参数;Rust 根据类型化描述符生成不透明的连接 ID。

Terminality 的快速连接选择器,背景为使用虚构主机数据的主机库
快速连接把最近记录与连接方式放在标签栏附近,同时保持工作区克制、紧凑。
快速连接选择器  →  连接库  →  主机目录
   (临时)        (持久)     (加密)

快速连接选择器

标签栏中的 + 打开由 Rust 驱动的选择器:

  • 最近:最新的三个有效连接。
  • 更多:展开三条以外的历史。
  • 全部:按稳定的 QuickConnectionKind 注册表分组显示完整目录。
  • 机器发现:仅运行时存在的 OrbStack 虚拟机列表,从不自动导入主机。

选择器会约束在可见窗口内,根据空间选择弹出方向,捕获键盘焦点,并在关闭后恢复焦点。移动端把“全部”呈现为模态底部表单中的触摸手风琴。

选择器不变量

  • 每个选择器都观察共享主机目录与连接历史;主机变更会立即出现。
  • 发布的选择携带不透明 connectionId,而不是主机或传输参数。
  • 只有 ⌘T 使用的 addLocalTerminalTab 可以直接创建标签页;其他流程都经过 QCS。

连接库

通过“文件 → 连接库”或 ⌘⇧H 打开原生对话窗口。

  • 搜索、创建、编辑与软删除主机档案。
  • 每个主机发布自己可用的连接类型,React 不重复实现资格逻辑。
  • SSH 主机提供 SSH、SFTP 与 Omini。
  • FTP 主机是独立记录,不能用作 SSH 跳板。
  • RDP 主机拥有独立端点、凭据与证书策略。

所有主机记录在写入 SQLite 前都会使用 XChaCha20-Poly1305 加密。身份与版本规则留在 Rust,公开绑定只提供受约束的创建、更新与删除命令。

连接类型

类型状态窗格界面
本地终端✓ 完成localTerminal
tmux 附加✓ 完成localTerminal
SSH 终端传输里程碑sshTerminal
SFTP 文件传输里程碑sftpFiles
FTP 文件传输里程碑ftpFiles
Omini后端边界就绪终端 + 文件 + 指标
RDP✓ 完成remoteDesktop

机器发现

机器发现只存在于运行时,并且仅在打开 QCS 时刷新。macOS 适配器会先检查 OrbStack 是否正在运行,再执行有上限、有超时的 JSON 列表命令;它不会启动、停止或修改虚拟机。

Terminality — 连接每个角落