本文档提供了 Tabby(原名 Terminus)的技术概览,它是一款高度可配置的终端模拟器、SSH 和串口客户端,适用于 Windows、macOS 和 Linux。文档解释了 Tabby 代码库中的核心架构、主要组件及其相互关系。
有关特定组件的信息,请参阅其专属维基页面:核心系统 2、终端功能 3、连接类型 4、用户界面 5 和平台支持 6。
Tabby 基于 Electron 框架和 Angular 构建,采用模块化插件架构。这种设计允许通过插件进行扩展,同时在核心功能中保持清晰的职责分离。
Tabby 使用插件系统,允许扩展核心功能。插件是动态加载的,可以添加新功能、连接类型或用户界面元素。
应用程序是管理窗口、配置和平台特定功能的入口点。每个窗口可以包含多个标签页和分屏。
| 组件 | 描述 |
|---|---|
应用程序 | 主应用程序类,管理窗口和全局状态 |
AppWindow | 表示应用程序中的一个窗口实例 |
PlatformService | 提供平台特定功能 |
ConfigService | 管理应用程序配置 |
HotkeyManager | 处理键盘快捷键 |
终端引擎负责渲染和管理终端会话。它围绕 XTerm.js 构建,并带有各种扩展。
Tabby 通过一个通用接口支持各种连接类型。每种连接类型都作为插件实现。
| 连接类型 | 描述 |
|---|---|
| SSH | 支持密钥、代理转发和端口转发的安全 Shell 连接 |
| 本地 | 本地 shell 终端 (PowerShell、WSL、CMD 等) |
| 串口 | 具有可配置参数的串口连接 |
| Telnet | Telnet 协议连接 |
配置文件允许用户保存连接设置以便快速访问。配置文件系统支持不同类型的连接。
来源:README.md
用户界面使用 Angular 构建,提供可自定义的界面,包括标签页、分屏和各种设置。
分屏标签系统允许用户将单个标签页分成多个窗格,每个窗格都包含一个终端。
来源:README.md
配置系统管理用户偏好、连接配置文件和其他设置。
| 组件 | 描述 |
|---|---|
ConfigService | 用于加载、保存和访问配置的中央服务 |
ConfigProvider | 为提供默认配置的组件提供接口 |
ProfilesService | 管理连接配置文件 |
HotkeyProvider | 为提供热键配置的组件提供接口 |
Tabby 的插件系统允许在不修改核心代码的情况下扩展功能。插件是动态加载的 npm 包。
| 插件类型 | 描述 |
|---|---|
| 连接插件 | 添加新的连接类型 (SSH、本地、串口、Telnet) |
| 扩展插件 | 为终端或用户界面添加新功能 |
| 平台插件 | 添加对不同平台的支持 (Electron、Web) |
| 主题插件 | 提供自定义配色方案和主题 |
Tabby 使用基于 Webpack 和 Electron Builder 的构建系统,为不同平台创建软件包。
来源:README.md