菜单

设置界面

相关源文件

Tabby 中的设置界面提供了一种用户友好的方式来配置和定制应用程序。本文档描述了 Tabby 设置系统的架构、配置值如何存储和管理,以及设置界面如何与这些值交互。

有关配置文件管理的信息,请参阅配置文件管理。有关终端特定设置,请参阅终端功能

配置系统架构

Tabby 设置界面的核心是ConfigService,它负责加载、保存和提供用户配置值的访问。配置以 YAML 格式存储,并遵循分层结构。

来源:tabby-core/src/services/config.service.ts117-493 tabby-core/src/configDefaults.yaml1-63

配置代理

Tabby 配置系统的一个关键特性是ConfigProxy类。此代理提供对配置值的透明访问,并自动回退到默认值。

  1. 当请求配置值时,代理首先检查该值是否存在于用户配置中。
  2. 如果该值不存在,则返回configDefaults.yaml中定义的默认值。
  3. 当设置一个与默认值匹配的值时,代理会将其从存储的配置中移除。

这使得应用程序能够维护一个最小化配置文件,其中只包含与默认值不同的值。

来源:tabby-core/src/services/config.service.ts34-115

设置用户界面

设置界面分为多个选项卡,每个选项卡都专注于特定的设置类别。主要组件是SettingsTabComponent,它提供了整体结构和导航。

来源:tabby-settings/src/components/settingsTab.component.pug1-183

应用程序设置部分

主设置选项卡包含通用应用程序设置:

  • 语言:应用程序显示语言的选择
  • Shell 集成:启用 Shell 集成以快速打开终端
  • 分析:使用情况分析控制
  • 更新:自动更新的配置
  • 辅助功能:动画和对比度设置

来源:tabby-settings/src/components/settingsTab.component.pug62-121

窗口设置部分

窗口设置选项卡提供了定制应用程序窗口的选项:

  • 主题:应用程序主题的选择
  • 间距:控制元素之间的空间量
  • 透明/亚克力:背景透明效果设置
  • 不透明度:控制窗口不透明度
  • 窗口边框:窗口边框样式选项(原生、细边、完整)
  • 停靠:将终端停靠到屏幕边缘的设置
  • 选项卡:选项卡位置、宽度和外观的选项

来源:tabby-settings/src/components/windowSettingsTab.component.pug1-444

配置同步部分

配置同步选项卡允许用户在多个设备之间同步其设置:

  • 同步主机:同步服务器的配置
  • 令牌:同步服务器的认证令牌
  • 配置管理:上传、下载和管理配置的界面
  • 选择性同步:要同步配置的哪些部分的设置

来源:tabby-settings/src/components/configSyncSettingsTab.component.pug1-141

配置同步

Tabby 的配置同步功能通过ConfigSyncService实现。此服务允许用户将其配置存储在远程服务器中,并在多个设备之间同步。

来源:tabby-settings/src/services/configSync.service.ts1-202 tabby-settings/src/components/configSyncSettingsTab.component.ts1-148

选择性同步

配置同步系统允许用户选择性地同步配置的不同部分:

  • 快捷键:键盘快捷键和绑定
  • 外观:窗口和用户界面外观设置
  • 密码库:存储的凭据和秘密

当用户希望某些设置是设备特定的,而将其他设置同步到多个设备时,这尤其有用。

来源:tabby-settings/src/components/configSyncSettingsTab.component.pug111-139 tabby-settings/src/services/configSync.service.ts19

配置文件编辑器

对于高级用户,Tabby 通过“配置文件”选项卡提供对配置文件的直接访问。这允许用户:

  • 查看和编辑原始 YAML 配置
  • 查看默认配置值作为参考
  • 在保存更改之前验证语法

此功能为高级用户提供了对其配置的精细控制。

来源:tabby-settings/src/components/settingsTab.component.pug141-175

保存更改和重启要求

当用户更改设置时,更改通常会通过ConfigService.save()方法立即保存。某些更改可能需要重新启动应用程序才能生效,这由requestRestart()方法处理,该方法会向用户显示一个重启按钮。

来源:tabby-settings/src/components/settingsTab.component.pug179-183 tabby-core/src/services/config.service.ts235-237

设置的程序化访问

通过 Angular 的依赖注入,应用程序的任何部分都可以访问配置系统。组件和服务可以:

  • 通过config.store读取配置值
  • 通过config.changed$监听配置更改
  • 通过config.save()保存更改

这提供了一种一致的方式来从应用程序的任何部分访问和修改设置。

来源:tabby-core/src/services/config.service.ts117-493

默认配置值

Tabby 附带一组默认配置值,这些值定义在configDefaults.yaml中。这些默认值提供了应用程序所有可配置方面的基线设置,包括:

  • 外观设置(主题、不透明度、边框类型)
  • 终端行为设置
  • 默认快捷键
  • 选项卡恢复设置
  • 插件设置

用户只需指定与这些默认值不同的值,从而保持配置文件简洁和最小化。

来源:tabby-core/src/configDefaults.yaml1-63

实现说明

设置界面利用 Angular 的组件系统和响应式编程模型:

  1. 设置组件直接绑定到config.store中的值
  2. 当值发生变化时,组件调用config.save()来持久化更改
  3. 配置服务通过config.changed$发出事件以通知应用程序的其他部分
  4. 组件订阅这些事件以在设置更改时更新其显示

此架构确保设置更改能立即反映在整个应用程序中并持久保存到磁盘。