此页面详细介绍了构成 Tabby 终端显示的用户界面组件。这些组件负责渲染终端内容、处理用户交互以及提供终端特定的 UI 功能,例如搜索功能和视觉自定义。有关底层终端引擎的信息,请参阅终端引擎。
Tabby 的终端 UI 是使用 Angular 组件和专用终端渲染库的组合构建的。该架构在终端显示逻辑和底层会话处理之间实现了清晰的分离。
来源: tabby-terminal/src/api/baseTerminalTab.component.ts1-919 tabby-terminal/src/frontends/frontend.ts1-97 tabby-terminal/src/frontends/xtermFrontend.ts1-522
BaseTerminalTabComponent 是 Tabby 中终端 UI 的基础。它充当不同类型终端选项卡的基类,并管理终端实例的生命周期、处理用户交互以及协调终端前端和会话后端。
BaseTerminalTabComponent 的主要功能
来源: tabby-terminal/src/api/baseTerminalTab.component.ts24-919
Frontend 抽象类定义了终端前端的接口,它们负责实际的终端内容渲染。Tabby 提供两种主要实现:
前端实现负责:
来源: tabby-terminal/src/frontends/frontend.ts1-97 tabby-terminal/src/frontends/xtermFrontend.ts61-522
搜索面板提供终端内的文本搜索功能。
搜索面板支持:
来源: tabby-terminal/src/components/searchPanel.component.ts1-79 tabby-terminal/src/components/searchPanel.component.pug1-66 tabby-terminal/src/components/searchPanel.component.scss1-29
终端显示是渲染终端内容的主要区域。它由 xterm.js 库处理,该库通过XTermFrontend 或XTermWebGLFrontend 类集成。
终端显示功能包括:
终端的外观可通过设置进行高度自定义。
| 设置 | 描述 | 配置属性 |
|---|---|---|
| 字体 | 终端字体系列 | terminal.font |
| 字体大小 | 文本大小(像素) | terminal.fontSize |
| 行内边距 | 行之间的额外空间 | terminal.linePadding |
| 字体粗细 | 正常文本的粗细 | terminal.fontWeight |
| 粗体字体粗细 | 粗体文本的粗细 | terminal.fontWeightBold |
| 连字 | 字体连字支持 | terminal.ligatures |
| 光标形状 | 块状、光束状或下划线 | terminal.cursor |
| 光标闪烁 | 启用光标闪烁 | terminal.cursorBlink |
| 配色方案 | 终端颜色 | terminal.colorScheme |
| 背景 | 终端背景源 | terminal.background |
来源: tabby-terminal/src/frontends/xtermFrontend.ts61-516 tabby-terminal/src/components/appearanceSettingsTab.component.pug1-182 tabby-terminal/src/config.ts1-216
终端选项卡可以选择性地显示一个包含常用操作的工具栏。工具栏可以:
工具栏的可见性通过以下方式控制:
工具栏由BaseTerminalTabComponent 管理,具有以下属性:
enableToolbar:是否启用工具栏pinToolbar:工具栏是否永久可见revealToolbar:工具栏是否临时显示来源: tabby-terminal/src/api/baseTerminalTab.component.ts82-88 tabby-terminal/src/api/baseTerminalTab.component.ts779-791
终端捕获并处理键盘输入,并对以下内容进行特殊处理:
终端支持广泛的键盘快捷键。
| 类别 | 快捷键 | 描述 |
|---|---|---|
| 剪贴板 | 复制、粘贴、全选 | 文本选择和剪贴板操作 |
| 导航 | Home、End、单词导航 | 终端中的光标定位 |
| 编辑 | 删除单词、删除行 | 文本编辑操作 |
| 视图 | 缩放(放大/缩小)、重置缩放 | 终端字体大小调整 |
| 滚动 | 滚动到顶部/底部、翻页向上/向下 | 导航终端缓冲区 |
| 搜索 | 搜索 | 打开搜索面板 |
| 高级 | 广播输入 | 将输入发送到多个终端 |
来源: tabby-terminal/src/hotkeys.ts1-124 tabby-terminal/src/api/baseTerminalTab.component.ts213-326 tabby-terminal/src/frontends/xtermFrontend.ts144-217
终端支持多种鼠标操作:
右键单击行为是可配置的,选项包括:
off:禁用右键单击处理menu:显示上下文菜单paste:粘贴剪贴板内容clipboard:复制选择,或在没有选择时粘贴来源: tabby-terminal/src/api/baseTerminalTab.component.ts651-744 tabby-terminal/src/components/terminalSettingsTab.component.pug67-102
终端外观主要通过颜色方案控制,该方案定义了:
可以使用ColorSchemePreviewComponent 预览颜色方案。
预览组件显示了使用选定颜色方案的真实终端视图。
来源: tabby-terminal/src/components/colorSchemePreview.component.pug1-67 tabby-terminal/src/frontends/xtermFrontend.ts368-389
终端包含多种动画以增强用户体验
这些动画是使用 Angular 的动画系统定义的
来源: tabby-terminal/src/api/baseTerminalTab.component.ts28-65 tabby-terminal/src/frontends/xtermFrontend.ts343-349
Tabby 通过配置属性提供广泛的终端外观和行为设置
| 设置 | 描述 | 默认 |
|---|---|---|
| 前端 | 终端渲染器 (WebGL 或 Canvas) | 'xterm-webgl' |
| 滚动回溯 | 缓冲区中保留的行数 | 25000 |
| 用亮色绘制粗体文本 | 使用亮色显示粗体文本 | true |
| Sixel 图形支持 | 通过转义序列显示图像 | true |
| 设置 | 描述 | 默认 |
|---|---|---|
| Alt 是 Meta 键 | 将 Alt 键用作 Meta 键 | false |
| 输入时滚动 | 用户输入时滚动到底部 | true |
| 括号粘贴 | 将粘贴内容包装在转义序列中发送 | true |
| 粘贴时修剪空格 | 移除粘贴文本周围的空格 | true |
| 提示音 | 终端提示音行为 (关闭、视觉、听觉) | 'off' |
来源: tabby-terminal/src/components/terminalSettingsTab.component.pug1-238 tabby-terminal/src/config.ts6-216
终端 UI 组件与 Tabby 的核心基础设施集成
值得注意的集成点
来源: tabby-terminal/src/api/baseTerminalTab.component.ts114-129 tabby-terminal/src/api/baseTerminalTab.component.ts191-208