ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何使用 tabby:// 协议链接让 Tabby 打开指定目录、运行命令或切换配置?

如何使用 tabby:// 协议链接让 Tabby 打开指定目录、运行命令或切换配置? 如何使用 tabby:// 协议链接让 Tabby 打开指定目录、运行命令或切换配置【免费下载链接】tabbyA terminal for a more modern age项目地址: https://gitcode.com/GitHub_Trending/ta/tabbyTabby 桌面版Electron 应用在启动时会把自己注册为tabby协议的处理程序之后系统里出现tabby://形式的链接就能直接唤起 Tabby 并执行一个动作open在指定目录打开 shell、run在终端里运行一条命令、profile打开指定配置profile的新标签页。这篇文章基于仓库中协议处理的实际实现说明 URL 的格式、参数写法、执行后的行为以及如何判断操作是否生效。适用环境为 Windows、macOS、Linux 上的 Tabby 桌面版本文涉及的链接解析与命令定义集中在 app/lib/urlHandler.ts 和 app/lib/cli.ts。协议如何注册与分发启动入口处完成注册见 app/lib/index.ts// Register tabby:// URL scheme if (process.defaultApp) { if (process.argv.length 2) { app.setAsDefaultProtocolClient(tabby, process.execPath, [process.argv[1]]) } } else { app.setAsDefaultProtocolClient(tabby) }也就是说只要正常启动一次 Tabby系统就会把tabby://链接交给 Tabby不需要额外手动注册。链接到达应用后的分发路径是macOS通过open-url事件接收app/lib/index.ts。此时没有窗口则把 URL 追加到启动参数里已有窗口则走handleSecondInstance。其他平台URL 作为第二个实例的启动参数进入second-instance事件app/lib/index.ts。随后窗口创建逻辑在 app/lib/window.ts 的passCliArguments中从参数里找出tabby://链接调用parseTabbyURL(urlArg, cwd)解析并把解析结果通过 IPC 发给渲染进程执行。tabby:// URL 的格式解析规则在 app/lib/urlHandler.ts链接必须以tabby://开头否则直接忽略命令取 URL 的 host没有 host 时取 pathname 第一段。代码注释明确说明Linux 下xdg-open可能把 host 转成小写因此匹配命令时做的是不区分大小写的比较查询参数逐个按键查找该命令定义的参数类型然后做类型转换boolean值为true或空字符串为真、number、array用shell-quote解析、string。所以一条链接的通用形态是tabby://command?参数名值命令必须是 app/lib/cli.ts 中createParserConfig预定义的命令否则解析返回 null主进程日志输出Unknown command in tabby:// URL: command三个核心命令的写法命令与其参数定义来自 app/lib/cli.ts 的createParserConfig命令用途参数键名 / 类型链接示例open [directory]在指定目录打开 shelldirectory/ stringtabby://open?directory/home/user/projectrun [command...]在终端中运行命令command/ arraytabby://run?commandgit%20statusprofile [profileName]用指定 profile 打开新标签页profileName/ stringtabby://profile?profileNameMyServer几点写法上的注意参数名必须与定义中的键完全一致directory、command、profileName。参数名写错时值不会被转换对应命令也拿不到该参数动作不会发生。run的command是数组类型值会用 shell-quote 解析所以多段命令要按空格分隔并做 URL 编码如上例的%20。open的目录若是相对路径会相对于 Tabby 进程的当前工作目录解析path.resolve(event.cwd, ...)见下文执行逻辑建议直接写绝对路径避免歧义。执行行为与结果验证三个命令的具体处理分别在 tabby-local/src/cli.tsopen/run和 tabby-core/src/cli.tsprofile。每个动作的成功现象如下open—— 在指定目录打开 shelltabby-local/src/cli.ts 中handleOpenDirectory会先检查目标只有当路径存在且是目录时才会terminal.openTab(undefined, directory)新建一个终端标签页并把窗口带到前台bringToFront。如果路径不存在或不是目录不会有新标签页也不会弹任何错误这是静默忽略。run—— 运行一条命令tabby-local/src/cli.ts 中handleRunCommand的行为是先弹出确认对话框内容为Run git status?命令按空格拼接展示按钮为 Run / Cancel。点击 Run 后才会新建一个本地 shell 标签页其中command[0]作为可执行文件、其余部分作为参数点击 Cancel 则什么都不发生。所以链接发出后没有新标签页时先检查是否有一个未处理的确认框。profile—— 切换/打开指定配置tabby-core/src/cli.ts 中handleOpenProfile按名称精确匹配 profilex.name profileName匹配成功为该 profile 打开新标签页并 bringToFront名称不匹配不会打开标签页主进程日志输出Requested profile name not found。profile 名称以 Tabby 中实际配置的名字为准不能猜。主进程日志信号解析成功时主进程控制台会打印app/lib/urlHandler.tsURL Handler - Safely parsed [tabby://open?directory/home/user/project] to: {_:[open],directory:/home/user/project}这是文档意义上的链接被正确接收并解析的直接证据如果看到的是Unknown command in tabby:// URL: ...说明命令拼写不在预定义列表里。其他可用命令同一份命令表app/lib/cli.ts还定义了三个命令写法相同tabby://command?参数值命令用途参数paste [text]把文本粘贴进当前活动标签页textstring、escapebooleanPerform shell escapingrecent [index]按序号打开最近使用过的 profileprofileNumbernumberquickConnect providerId query用指定 quick connect provider 打开连接标签页providerId、query均 string其中paste有两个限制tabby-terminal/src/cli.ts会先弹出Paste ...?确认框确认后才发送并且只有当活动标签页是带会话的终端标签页时才会真正sendInputescape为真时先用 shell-quote 对文本做转义。quickConnect的 provider 名称错误时日志会输出Requested provider id not found. Available providers: ...可直接用来核对可用的 providerId。限制与注意事项命令白名单URL 的 host 必须是createParserConfig中定义的命令之一未知命令被整体忽略并记日志。open只处理目录不存在或非目录的路径被静默跳过链接看似没反应时优先核对路径是否真实存在、是否以斜杠结尾结尾斜杠会被去掉。run与paste都有确认对话框这是实现中固定的安全确认步骤取消即不执行不要把确认框当作链接失败的信号。参数名即接口查询参数键必须与命令定义中的键一致directory、command、profileName、text、escape、profileNumber、providerId、query拼错不会报错只是拿不到值。大小写链接 host 在 Linuxxdg-open下可能被转小写实现已按不区分大小写匹配命令写命令时保持与定义一致即可不必依赖大写。启动参数--debug/-d启动时显示 DevTools与--hidden最小化启动是命令行启动选项app/lib/cli.tsURL 参数解析路径只按各命令自身定义的参数做类型转换不建议把它们当作 URL 查询参数使用。按以上路径一条tabby://open?directory/path/to/dir或tabby://profile?profileNameMyServer链接触发后的验证方式是确认主进程日志出现URL Handler - Safely parsed ...同时 Tabby 窗口前台出现对应目录或 profile 的新标签页run/paste则先以确认对话框出现、点击后新标签页或文本输入发生为准。【免费下载链接】tabbyA terminal for a more modern age项目地址: https://gitcode.com/GitHub_Trending/ta/tabby创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表