菜单

Shell 集成

相关源文件

Tabby 中的 Shell 集成在终端应用程序和受支持操作系统上的原生 Shell 环境之间提供了一个桥梁。此功能通过启用工作目录检测和系统级集成等特性来增强终端体验。

有关终端会话和连接处理的信息,请参阅终端引擎

支持的平台

Shell 集成已实现支持

  • Windows
  • macOS

Linux 支持在平台服务实现中被明确排除。

来源:tabby-electron/src/services/platform.service.ts108-110

架构

Shell 集成功能遵循分层架构,并具有平台特定的实现。

来源:tabby-core/src/api/platform.ts209-223 tabby-electron/src/services/platform.service.ts108-122 tabby-ssh/src/session/shell.ts109-115

核心组件

PlatformService

PlatformService 是一个抽象类,定义了 Shell 集成能力接口。在基础实现中,不支持 Shell 集成。

来源:tabby-core/src/api/platform.ts209-223

ElectronPlatformService

ElectronPlatformService 通过 Electron 为桌面环境提供了 Shell 集成实现。

此实现将实际的 Shell 集成操作委托给在构造期间注入的 ShellIntegrationService

来源:tabby-electron/src/services/platform.service.ts108-122

工作目录支持

终端会话通过会话类中定义的方法实现工作目录检测。例如,在 SSHShellSession 中:

这些方法允许终端选项卡确定工作目录检测是否可用并检索当前目录路径。

来源:tabby-ssh/src/session/shell.ts109-115

工作目录检测

Shell 集成的主要功能之一是能够检测和报告当前工作目录。这在以下序列图中表示:

此功能支持不同终端选项卡类型的各种特性。

来源:tabby-ssh/src/session/shell.ts109-115 tabby-ssh/src/components/sshTab.component.ts214-218

在终端选项卡中的使用

SSH 会话

SSHTabComponent 使用工作目录检测来初始化用户当前目录中的 SFTP 面板。

当用户打开 SFTP 面板时,它将直接导航到其当前工作目录,而不是从根目录开始。

来源:tabby-ssh/src/components/sshTab.component.ts214-218

SFTP 面板

SFTP 面板包含用于通知用户工作目录检测的 UI 元素。

当工作目录检测不可用但可能启用时,会出现此通知。

来源:tabby-ssh/src/components/sftpPanel.component.pug35-43

安装和管理

当安装 Shell 集成时,它遵循以下序列:

此过程可能涉及写入 Shell 配置文件(例如 .bashrc.zshrc 或 PowerShell 配置文件)以添加工作目录报告所需的钩子。

来源:tabby-electron/src/services/platform.service.ts108-122

文件操作与工作目录感知

Shell 集成使文件操作能够感知当前目录。例如,SFTP 面板以当前路径初始化:

路径通常由终端的当前工作目录确定,这使得文件操作更加直观。

来源:tabby-ssh/src/components/sftpPanel.component.ts51-53

连接类型集成

Shell 集成功能因不同的连接类型而异。

连接类型工作目录支持备注
SSH完整版使用 Shell 转义序列检测目录更改。
本地终端完整版使用特定于平台的 API 进行目录检测。
串口有限无内置工作目录检测。
Telnet有限无内置工作目录检测。

每种会话类型根据其功能和协议限制实现适当级别的 Shell 集成。

来源:tabby-ssh/src/session/shell.ts109-115 tabby-ssh/src/components/sshTab.component.ts214-218 tabby-serial/src/components/serialTab.component.ts1-107 tabby-telnet/src/components/telnetTab.component.ts1-98

关键文件

Shell 集成功能在几个关键文件中实现:

  1. tabby-core/src/api/platform.ts - 定义平台服务(包括 Shell 集成)的抽象接口。
  2. tabby-electron/src/services/platform.service.ts - 为桌面环境实现 Shell 集成接口。
  3. tabby-ssh/src/session/shell.ts - 为 SSH 会话实现工作目录支持。
  4. tabby-ssh/src/components/sshTab.component.ts - 使用工作目录检测进行 SFTP 操作。
  5. tabby-ssh/src/components/sftpPanel.component.pug - 包含用于工作目录检测的 UI 元素。

尽管提供的源文件中没有完整的 Shell 集成实现细节,但本文档概述了 Tabby 终端应用程序中 Shell 集成的架构和用法。