本页面提供了开发 Tabby 终端插件的全面指南。插件允许您通过新的终端连接类型、UI 组件、主题、命令等来扩展 Tabby 的功能。本文档涵盖了插件的架构、开发流程和集成点。
有关安装现有插件的信息,请参阅 设置开发环境 中的插件管理器部分。
Tabby 采用模块化的插件架构,每个插件都是一个遵循特定约定的 npm 包。应用程序在启动时动态发现并加载插件,将它们集成到核心功能中。
来源:app/src/plugins.ts189-226 app/src/plugins.ts228-262 tabby-core/src/index.ts61-84
来源:app/src/entry.ts34-55 app/src/plugins.ts189-226 app/src/plugins.ts228-262
至少,Tabby 插件需要这些文件
| 文件 | 目的 |
|---|---|
package.json | 定义插件元数据、依赖项和构建脚本 |
webpack.config.js | 插件构建的配置 |
src/index.ts | 主入口点,导出插件的 Angular 模块 |
src/[components, services, etc.] | 插件功能实现 |
您的插件的 package.json 需要特定配置才能被 Tabby 识别
keywords 字段尤为重要——它必须包含 tabby-plugin(用于社区插件)或 tabby-builtin-plugin(用于官方插件)。
来源:tabby-terminal/package.json1-53 tabby-ssh/package.json1-47 tabby-core/package.json1-41
每个插件必须将其作为主入口点的 Angular 模块导出。这是一个简化的示例
来源:tabby-core/src/index.ts40 tabby-core/src/index.ts61-84 app/src/plugins.ts155-187
Tabby 提供了几个插件的扩展点。最常见的有
扩展 BaseTabComponent 以在 Tabby 界面中创建新的标签类型。
实现终端连接服务和组件,以添加对新协议(如 SSH、Telnet 等)的支持。
实现 ConfigProvider 以向 Tabby 的设置添加新配置选项。
实现 HotkeyProvider 以添加自定义键盘快捷键
来源:tabby-core/src/index.ts62 tabby-core/src/hotkeys.ts8-284
实现 TabContextMenuItemProvider 以将项目添加到标签上下文菜单
来源:tabby-core/src/index.ts66-68 tabby-core/src/tabContextMenu.ts19-298
实现 ProfileProvider 以添加新的连接配置文件类型
克隆 Tabby 仓库
git clone https://github.com/Eugeny/tabby.git
cd tabby
创建您的插件目录
mkdir -p tabby-your-plugin
按照上述说明设置插件的 package.json 和其他文件。
构建您的插件
cd tabby-your-plugin
npm run build
链接您的插件进行测试
cd dist
npm link
cd ../../app
npm link tabby-your-plugin
以开发模式运行 Tabby
npm run start
Tabby 使用以下流程来发现插件
来源:app/src/plugins.ts95-127 app/src/plugins.ts130-153 app/src/plugins.ts189-226
这是一个创建基本插件的简化工作流程
设置插件结构:
实现插件功能:
注册扩展:
构建和测试:
使用依赖注入 - Tabby 大量使用 Angular 的依赖注入,请在您的插件中遵循此模式。
考虑平台差异 - Tabby 运行在多个平台(Windows、macOS、Linux)上,请确保您的插件在它们之间都能正常工作。
遵循现有模式 - 研究内置插件以理解应用程序的设计模式。
保持轻量级 - 尽量减少外部依赖,以保持插件的高效性。
提供清晰的文档 - 记录插件的功能和用法。
遵循这些准则,您可以创建增强 Tabby 功能的插件,同时保持与核心应用程序的兼容性。
来源:app/src/plugins.ts1-263 tabby-core/src/index.ts1-267 tabby-terminal/package.json1-53 tabby-ssh/package.json1-47