跳转到内容

每次点击都会先弹出系统文件夹选择器 cc-switch

Quick fix

修改 src/App.tsx 移除 handleOpenTerminal 中的 pickDirectory() 调用,即可解决点击打开终端时强制弹出文件夹选择器的问题。

报错原文
每次点击都会先弹出系统文件夹选择器,选完目录才打开终端。

在 cc-switch 的多个版本中,前端交互逻辑存在冗余。以打开终端为例,src/App.tsx 的 handleOpenTerminal 函数在调用后端 open_provider_terminal 之前,无条件调用了 settingsApi.pickDirectory(),导致每次都必须手动选择目录。而后端 cwd 参数本身是 Option,不传时默认在终端目录打开,因此前端强制弹窗并非必须。

此外,该版本区间还存在其他类似的 UI 状态与事件绑定问题:托盘图标左键点击仅弹出菜单而无法直接打开主界面(需修改 Tauri 托盘事件监听)、从 S3 恢复备份后托盘菜单供应商数据未及时同步,以及 SQL 导入选择文件后需要二次点击确认。这些均属于前端状态管理或事件绑定的遗漏。

  1. 打开 src/App.tsx 文件,找到 handleOpenTerminal 函数。

  2. 移除 settingsApi.pickDirectory() 的调用及相关的 cwd 参数传递,直接调用 openTerminal。

    // src/App.tsx
    const handleOpenTerminal = async (provider: Provider) => {
    const selectedDir = await settingsApi.pickDirectory();
    if (!selectedDir) return;
    await providersApi.openTerminal(provider.id, activeApp, { cwd: selectedDir });
    await providersApi.openTerminal(provider.id, activeApp);
    ...
    };
  3. 若需同时修复托盘左键点击无法打开主界面的问题,在 Rust 后端设置 .show_menu_on_left_click(false) 并添加 TrayIconEvent::Click 事件处理。

Toolcc-switch
Version3.16.2 - 3.19.2
PlatformsWindowsmacOS
为什么在 Linux 上修改托盘左键点击行为没有效果?
这是 Tauri 和平台的已知限制,TrayIconEvent 在 Linux 上不会触发,因此该改动在 Linux 上是安全的空操作,点击仍会弹出菜单。
修复打开终端弹窗后,还能指定工作目录吗?
后端 open_provider_terminal 的 cwd 参数本身是 Option,不传时会在终端默认目录打开。若需保留指定工作目录的能力,建议后续将其放入设置项或独立入口,而不是强制弹窗。
从 S3 恢复备份后托盘菜单不更新怎么办?
这是一个已知的同步 Bug,主界面数据正常但托盘菜单仍显示旧数据,目前需等待官方修复或尝试重启应用以刷新缓存。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。