菜单

核心系统

相关源文件

Tabby 中的核心系统提供了驱动整个终端应用程序的基础设施。这些系统处理基本功能,例如应用程序生命周期管理、窗口创建和控制、配置处理、标签页管理和插件集成。本页面记录了 Tabby 其余功能所依赖的这些基本构建模块。

有关终端模拟功能的具体详细信息,请参阅终端功能。有关不同连接类型的信息,请参阅连接类型

应用程序架构

Tabby 遵循基于 Electron 的架构,主进程和渲染进程之间有清晰的分离。Application 类充当应用程序的中央控制器,协调所有核心功能。

应用程序架构的主要组成部分是

  1. Application Class:集中管理应用程序控制,包括窗口、配置、系统托盘和插件操作。

  2. Window Management:处理窗口生命周期,包括创建、定位和平台特定功能。

  3. PTY Manager:管理终端功能所需的伪终端会话。

  4. Configuration System:加载、保存和同步应用程序设置。

  5. Plugin System:允许通过附加功能扩展 Tabby。

应用程序初始化流程从 app/lib/index.ts 开始,它加载配置,创建 Application 实例,并设置事件处理程序

来源

窗口管理系统

窗口管理系统处理窗口创建、行为和生命周期的所有方面。它通过 Window 类实现,该类封装了 Electron 的 BrowserWindow 并添加了 Tabby 特定的功能。

窗口管理系统的主要功能

  1. 跨平台透明/模糊效果:使用 Glasstron 和原生 API 实现平台特定的窗口透明效果。

  2. 窗口状态持久化:保存和恢复窗口位置、大小和最大化状态。

  3. 震动控制:提供启用/禁用和自定义窗口震动效果的方法。

  4. 窗口事件:管理窗口事件,如调整大小、移动、聚焦和关闭。

  5. 停靠窗口支持:为“停靠”模式实现浮动窗口行为。

窗口创建参数和外观根据用户设置和平台特定要求进行配置

来源

配置系统

配置系统管理应用程序中的用户偏好设置、设置和状态。它使用存储在用户配置文件目录中的 YAML 文件格式。

配置系统包括:

  1. 配置加载:从用户数据目录中的 config.yaml 加载配置。

  2. 平台特定默认值:为 Windows、macOS 和 Linux 提供不同的默认配置。

  3. 配置更改同步:在所有窗口之间传播配置更改。

  4. 配置提供程序:允许插件定义自己的配置模式和默认值。

配置路径在启动时确定,并可以通过 TABBY_CONFIG_DIRECTORY 环境变量进行自定义

默认快捷键配置因平台而异,使 Tabby 能够在每个平台上提供原生的体验

平台快捷键示例
WindowsCtrl-Shift-E(配置文件选择器),Ctrl-Tab(下一个标签页)
macOS⌘-E(配置文件选择器),⌘-1⌘-9(标签页切换)
LinuxCtrl-Shift-E(配置文件选择器),Alt-1Alt-9(标签页切换)

来源

标签页管理与恢复

Tabby 的标签页管理系统提供了丰富的功能,用于创建、组织和恢复终端会话。它围绕 AppService 类构建,该类管理应用程序中的所有标签页。

标签页管理系统的主要功能

  1. 标签页创建:使用 openNewTab()openNewTabRaw() 方法创建新标签页。

  2. 标签页选择:管理活动标签页状态和标签页切换。

  3. 标签页组织:支持将标签页组织成拆分布局。

  4. 标签页恢复:自动保存标签页状态并在重启后提供恢复功能。

  5. 进程完成监控:跟踪终端进程以检测其何时完成。

标签页恢复通过定期和在应用程序退出时序列化所有标签页的状态来实现。当 Tabby 启动时,如果设置启用,它将从保存的状态恢复标签页

来源

插件架构

Tabby 采用模块化插件架构,允许通过附加功能扩展应用程序。核心本身被构建为插件的集合。

插件系统基于 Angular 的依赖注入系统,由以下部分组成:

  1. 插件管理器:处理插件发现、安装和加载。

  2. 提供程序接口:定义扩展点,如 TabRecoveryProvider、HotkeyProvider 等。

  3. 插件生命周期:管理插件初始化和清理。

插件通过 Angular 的依赖注入系统使用多提供程序进行注册

用户插件可以安装在应用程序初始化期间定义的用户插件目录中

来源

平台集成

Tabby 与每个受支持的平台集成,以提供原生般的功能和优化。

主要平台特定功能

  1. Windows:

    • 使用原生 Windows API 实现原生模糊/亚克力效果
    • 通过注册表访问设置 DirectX 首选项
    • Windows 特定窗口样式
  2. macOS:

    • 原生震动效果
    • TouchBar 集成
    • 原生应用程序菜单
    • Dock 集成
  3. Linux:

    • 合成器特定透明度支持
    • 平台特定命令行选项

平台检测和特定代码路径通过 HostAppService 等服务实现

来源

结论

Tabby 的核心系统为终端应用程序提供了坚实的基础,并为窗口管理、配置、标签页管理和插件支持提供了精心设计的抽象。这些系统协同工作,提供一致、可扩展且针对平台优化的终端体验。

模块化架构允许通过插件轻松扩展,而核心组件则处理应用程序功能的基本方面。主进程和渲染进程之间的分离遵循 Electron 最佳实践,确保了性能和稳定性。