README_ZH.md

August 26, 2025 · View on GitHub

Platform License GitHub release GitHub downloads GitHub issues GitHub stars Donate

SwitchShuttle Logo

SwitchShuttle

🚀 带全局热键的跨平台终端命令管理器

SwitchShuttle Demo

✨ 什么是 SwitchShuttle?

SwitchShuttle 是一个强大的跨平台系统托盘应用程序,它彻底改变了您管理和执行终端命令的方式。使用现代技术(Rust + Tauri + Vue.js)构建,它提供了一个优雅的界面来组织、自定义和快速访问您最常用的终端操作。

🎯 主要功能

  • 🖥️ 多平台支持 - 在 macOS、Windows 和 Linux 上无缝运行
  • ⚡ 全局热键 - 使用键盘快捷键从任何地方立即执行命令
  • 🎨 多终端支持 - iTerm、Terminal、Warp、Alacritty、Hyper 等
  • 📁 智能组织 - 创建嵌套子菜单以更好地组织命令
  • 🔧 动态输入 - 需要用户输入的命令的交互式提示
  • 🔄 多种执行模式 - 在当前窗口、新标签页或新窗口中执行
  • 🚀 自动启动 - 系统启动时启动以立即访问
  • 🎨 现代界面 - 使用 Vue.js 构建的美丽直观界面
  • 💻 命令行界面 - 直接从终端执行命令的 CLI
  • ⚙️ 配置管理 - 启用/禁用配置而无需删除
  • 🔄 开关命令 - 通过后台执行切换系统功能
  • 📊 监控命令 - 实时系统资源监控,带视觉指示器
  • 📅 计划命令 - 使用 cron 表达式自动化任务
  • 🎯 模板系统 - 常见工作流程的预构建命令模板

🖥️ 用户界面概述

SwitchShuttle 提供了一个现代、直观的界面,具有几个关键组件:

🎛️ 主要界面组件

1. 配置编辑器

  • 可视化 JSON 编辑器 - 使用语法高亮和验证编辑配置
  • 模板系统 - 导入常见工作流程的预构建命令模板
  • 实时验证 - 配置错误的即时反馈
  • 自动保存 - 输入时自动保存更改
  • 配置管理 - 启用/禁用配置而无需删除
  • 搜索和过滤 - 快速找到特定配置
  • 配置复制 - 为测试创建现有配置的副本

2. 命令管理

  • 命令构建器 - 使用可视化表单界面创建命令
  • 热键配置 - 设置即时命令执行的全局快捷键
  • 图标选择器 - 选择表情符号图标以更好地视觉组织
  • 输入字段 - 为交互式命令配置动态输入提示
  • 嵌套子菜单 - 在层次结构中组织命令
  • 命令验证 - 命令语法的实时验证

3. 设置面板

  • 终端选择 - 选择您首选的终端应用程序
  • 启动模式 - 配置命令执行方式(当前/新标签页/新窗口)
  • 主题设置 - 自定义应用程序外观
  • 自动启动配置 - 启用/禁用系统启动
  • 全局热键设置 - 配置系统范围的菜单快捷键

4. 系统托盘菜单

  • 快速访问 - 右键点击托盘图标以立即访问命令
  • 状态指示器 - 开关命令和监控的视觉反馈
  • 嵌套菜单 - 易于导航的有组织命令层次结构
  • 全局热键 - 即时命令执行的键盘快捷键
  • 实时监控 - 实时系统资源指示器

🎨 界面功能

可视化命令构建器

{
  "name": "🚀 启动开发服务器",
  "command": "npm run dev",
  "hotkey": "Ctrl+Shift+D",
  "icon": "🚀",
  "background": false,
  "inputs": {
    "port": "3000",
    "host": "localhost"
  }
}

模板系统

SwitchShuttle 包含常见开发工作流程的预构建模板:

  • 开发 - Git 操作、构建工具、测试
  • DevOps - Docker、Kubernetes、服务器管理
  • 数据库 - MySQL、PostgreSQL、MongoDB 操作
  • 云服务 - AWS、Azure、Google Cloud 命令
  • 安全 - 网络扫描、漏洞评估
  • 监控 - 系统资源、日志、指标
  • 实用工具 - 文件操作、系统工具
  • 调度器 - Cron 作业和自动化任务

智能组织

  • 嵌套子菜单 - 在逻辑组中组织命令
  • 图标支持 - 使用表情符号图标进行视觉识别
  • 热键管理 - 即时访问的全局快捷键
  • 状态指示器 - 开关命令的实时反馈
  • 搜索功能 - 快速命令发现

🔒 安全管理器

SwitchShuttle包含一个全面的安全管理器,可以保护您的系统免受潜在有害命令的影响,并提供对命令执行的精细控制。

🛡️ 安全功能

命令验证

  • 长度限制: 最大命令长度(1000字符)和输入长度(500字符)防止过长的命令
  • 阻止的命令: 定义永远不应该执行的危险命令列表
  • 可疑模式: 使用正则表达式模式来检测和阻止潜在有害的命令模式
  • 实时验证: 命令在编辑时进行验证以确保安全

安全设置

  • 启用/禁用安全: 根据需要切换安全功能
  • 自定义阻止列表: 向阻止的命令列表添加特定命令
  • 模式匹配: 定义正则表达式模式来捕获可疑的命令结构
  • 长度限制: 配置命令和用户输入的最大长度

工作原理

  1. 编辑器验证: SecurityManager在配置编辑器中保存前验证命令
  2. 模式匹配: 命令根据阻止的模式和可疑的正则表达式模式进行检查
  3. 长度验证: 命令和输入根据最大长度限制进行验证
  4. 阻止列表检查: 命令与用户定义的阻止命令列表进行比较
  5. 安全配置: 只允许保存和使用经过验证的配置

🚀 快速开始

下载和安装

选项 1: Homebrew (macOS - 推荐)

# 通过 Homebrew 安装
brew tap s00d/switchshuttle
brew install --cask switchshuttle

选项 2: 手动下载

  1. 下载GitHub Releases 下载您平台的最新版本
  2. 安装 应用程序
  3. 启动 SwitchShuttle - 它将出现在系统托盘中
  4. 右键点击 托盘图标访问菜单

首次配置

  1. 打开配置编辑器 - 点击系统托盘菜单中的"编辑配置"
  2. 选择终端 - 选择您首选的终端应用程序
  3. 添加命令 - 使用可视化编辑器或导入模板
  4. 设置热键 - 配置快速访问的全局快捷键
  5. 保存并重启 - 您的命令现在在托盘菜单中可用

界面逐步指南

步骤 1: 配置编辑器

  • 打开 SwitchShuttle 并导航到"编辑器"选项卡
  • 选择您的终端应用程序(iTerm、Terminal、Warp 等)
  • 设置启动模式(当前窗口、新标签页或新窗口)
  • 配置菜单访问的全局热键

步骤 2: 添加命令

  • 点击"添加命令"创建新命令
  • 填写命令详情:
    • 名称: 命令的显示名称
    • 命令: 要执行的实际终端命令
    • 热键: 全局快捷键(可选)
    • 图标: 视觉识别的表情符号图标
    • 后台: 是否在后台运行
    • 输入: 交互式命令的动态输入字段

步骤 3: 使用模板

  • 点击"导入模板"访问预构建的命令集合
  • 浏览开发、DevOps、数据库等类别
  • 选择并导入您需要的模板
  • 根据需要自定义导入的命令

步骤 4: 系统托盘访问

  • 右键点击 SwitchShuttle 托盘图标
  • 浏览您有组织的命令菜单
  • 使用全局热键进行即时命令执行
  • 使用实时指示器监控系统状态

步骤 5: 高级功能

  • 开关命令: 带视觉状态指示器的系统功能切换
  • 监控命令: 系统资源的实时监控
  • 计划命令: 使用 cron 表达式自动化任务
  • 嵌套菜单: 层次结构中的命令组织

💻 命令行界面 (CLI)

SwitchShuttle 还提供了一个强大的命令行界面,用于无需打开 GUI 的快速命令执行。

CLI 使用

执行命令

# 通过命令 ID 执行
switch-shuttle cmd_8

# 通过命令名称执行(不区分大小写)
switch-shuttle "示例命令"

列出所有命令

# 显示所有可用命令及其 ID
switch-shuttle --list
# 或
switch-shuttle -l

搜索命令

# 搜索包含特定文本的命令
switch-shuttle --search "git"
# 或
switch-shuttle -s "docker"

在不同操作系统上运行 CLI

macOS

# 如果通过 Homebrew 安装
switch-shuttle --list

# 如果手动安装
/Applications/switch-shuttle.app/Contents/MacOS/SwitchShuttle --list

# 创建别名以便更容易访问
echo 'alias switch-shuttle="/Applications/switch-shuttle.app/Contents/MacOS/SwitchShuttle"' >> ~/.zshrc
source ~/.zshrc

Windows

# 如果通过安装程序安装
"C:\Program Files\SwitchShuttle\switch-shuttle.exe" --list

# 如果通过 winget 或 chocolatey 安装
switch-shuttle --list

# 添加到 PATH 以便更容易访问
# 将 "C:\Program Files\SwitchShuttle" 添加到系统 PATH

Linux

# 如果通过包管理器安装
switch-shuttle --list

# 如果手动安装
./switch-shuttle --list

# 使其可执行并添加到 PATH
chmod +x switch-shuttle
sudo mv switch-shuttle /usr/local/bin/

CLI 示例

# 快速 Git 操作
switch-shuttle "git status"
switch-shuttle "git pull"

# 开发工作流程
switch-shuttle "npm run dev"
switch-shuttle "docker-compose up"

# 列出所有可用命令
switch-shuttle --list

# 查找与数据库相关的命令
switch-shuttle --search "database"

CLI 功能

  • 🚀 快速执行 - 从终端立即执行命令
  • 🔍 智能搜索 - 通过 ID 或名称查找命令
  • 📋 命令列表 - 查看所有可用命令
  • ⚡ 无需 GUI - 完美用于自动化和脚本
  • 🔄 执行后退出 - 干净的终端体验

📋 配置指南

基本结构

SwitchShuttle 使用 JSON 配置文件,存储在:

  • macOS/Linux: ~/.config/switch-shuttle/
  • Windows: C:\Users\<用户名>\AppData\Roaming\switch-shuttle\

简单示例

{
  "terminal": "iterm",
  "launch_in": "new_tab",
  "title": "我的命令",
  "commands": [
    {
      "name": "🚀 启动开发服务器",
      "command": "npm run dev",
      "hotkey": "Ctrl+Shift+D"
    },
    {
      "name": "📦 安装依赖",
      "command": "npm install",
      "hotkey": "Ctrl+Shift+I"
    },
    {
      "name": "🔧 开发工具",
      "submenu": [
        {
          "name": "🧪 运行测试",
          "command": "npm test",
          "hotkey": "Ctrl+Shift+T"
        },
        {
          "name": "📊 构建项目",
          "command": "npm run build",
          "hotkey": "Ctrl+Shift+B"
        }
      ]
    }
  ]
}

高级功能

🔧 动态输入

创建需要用户输入的交互式命令:

{
  "name": "📝 创建新组件",
  "inputs": {
    "componentName": "MyComponent",
    "componentType": "functional"
  },
  "commands": [
    "mkdir -p src/components/[componentName]",
    "touch src/components/[componentName]/index.tsx",
    "echo 'import React from \"react\";' > src/components/[componentName]/index.tsx",
    "echo 'export const [componentName] = () => <div>[componentName]</div>;' >> src/components/[componentName]/index.tsx"
  ],
  "hotkey": "Ctrl+Shift+N"
}

🔄 多命令

执行命令序列:

{
  "name": "🔄 完整开发周期",
  "commands": [
    "git pull origin main",
    "npm install",
    "npm run lint",
    "npm run test",
    "npm run build"
  ],
  "background": true,
  "hotkey": "Ctrl+Shift+F"
}

⏰ 计划命令 (Cron)

使用 cron 表达式安排命令自动执行:

{
  "name": "🔄 自动备份",
  "commands": [
    "rsync -av /source/ /backup/"
  ],
  "scheduler": "0 2 * * *",
  "background": true,
  "hotkey": "Ctrl+Shift+B"
}

Cron 表达式格式: 调度器使用标准的 6 字段 cron 表达式:秒 分 时 日 月 星期

常见 Cron 示例:

  • "0 0 * * * *" - 每小时整点
  • "0 0 2 * * *" - 每天凌晨 2 点
  • "0 30 9 * * 1-5" - 工作日上午 9:30
  • "0 0 12 * * 1" - 每周一中午
  • "0 0 0 1 * *" - 每月 1 号
  • "0 */15 * * * *" - 每 15 分钟
  • "0 0 0 * * 0" - 每周日午夜

调度器功能:

  • 后台执行 - 命令静默运行,不打开终端
  • Cron 支持 - 完整的 cron 表达式解析和执行
  • 错误处理 - cron 解析失败时的优雅回退
  • 跨平台 - 在 macOS、Windows 和 Linux 上工作

🖥️ 后台执行

控制命令执行方式 - 使用 ConsolePool 在后台或正常终端执行:

{
  "name": "🚀 启动服务器",
  "commands": [
    "npm run dev"
  ],
  "background": true,
  "hotkey": "Ctrl+Shift+S"
}

后台执行选项:

  • "background": true - 使用 ConsolePool 执行(后台)
  • "background": false - 使用正常终端执行
  • "background": null 或省略 - 基于命令类型自动检测

📁 嵌套子菜单

在层次菜单中组织命令:

{
  "name": "🐳 Docker 操作",
  "submenu": [
    {
      "name": "🚀 启动服务",
      "submenu": [
        {
          "name": "🏗️ 开发",
          "command": "docker-compose -f docker-compose.dev.yml up -d"
        },
        {
          "name": "🏭 生产",
          "command": "docker-compose -f docker-compose.prod.yml up -d"
        }
      ]
    },
    {
      "name": "🛑 停止所有",
      "command": "docker-compose down"
    }
  ]
}

🔄 开关命令

通过后台执行切换系统功能:

{
  "name": "🔧 系统控制",
  "submenu": [
    {
      "name": "📶 切换 WiFi",
      "command": "networksetup -setairportpower en0 toggle",
      "switch": "networksetup -getairportpower en0 | grep -q 'On' && echo 'true' || echo 'false'"
    },
    {
      "name": "🔊 切换蓝牙",
      "command": "blueutil -p toggle",
      "switch": "blueutil -p | grep -q '1' && echo 'true' || echo 'false'"
    },
    {
      "name": "🌙 切换深色模式",
      "command": "osascript -e 'tell app \"System Events\" to tell appearance preferences to set dark mode to not dark mode'",
      "switch": "osascript -e 'tell app \"System Events\" to tell appearance preferences to get dark mode'"
    }
  ]
}

开关命令功能:

  • 后台执行 - 命令静默运行,不打开终端
  • 状态检查 - 自动检测当前状态
  • 视觉反馈 - 在菜单中显示启用/禁用状态
  • 跨平台 - 在 macOS、Windows 和 Linux 上工作

📊 监控命令

使用实时信息监控系统资源和服务:

{
  "name": "📊 系统监控",
  "submenu": [
    {
      "name": "💾 内存使用",
      "command": "top -l 1 | head -n 10",
      "monitor": "memory",
      "icon": "🧠"
    },
    {
      "name": "💻 CPU 负载",
      "command": "top -l 1 | grep 'CPU usage'",
      "monitor": "cpu",
      "icon": "⚡"
    },
    {
      "name": "💾 磁盘空间",
      "command": "df -h | grep '/dev/'",
      "monitor": "disk",
      "icon": "💾"
    },
    {
      "name": "🌐 网络状态",
      "command": "ifconfig | grep -E 'inet |status:'",
      "monitor": "network",
      "icon": "🌐"
    }
  ]
}

监控命令功能:

  • 菜单集成 - 向系统托盘菜单添加监控按钮
  • 命令执行 - 菜单打开时执行监控命令
  • 数据显示 - 直接在菜单界面中显示命令输出
  • 视觉指示器 - 菜单中的图标和状态指示器
  • 跨平台 - 在 macOS、Windows 和 Linux 上工作

⚙️ 配置参考

主配置

参数类型描述默认值
terminalString要使用的终端应用程序"terminal"
launch_inString启动命令的位置"current"
themeString终端主题(如果支持)-
titleString窗口/标签页标题-
menu_hotkeyString打开菜单的全局热键-
commandsArray命令配置列表[]
enabledBoolean是否应加载此配置true

终端选项

终端macOSWindowsLinux
iterm
terminal
warp
alacritty
hyper

启动模式

模式描述
current在当前终端窗口中执行
new_tab打开新标签页并执行
new_window打开新窗口并执行

命令配置

参数类型必需描述
nameString命令的显示名称
commandsArray要执行的多个命令
submenuArray嵌套子命令
switchString检查开关状态的命令(返回 true/false)
monitorString获取监控显示值的命令
inputsObject动态输入字段
hotkeyString全局热键快捷键
iconString视觉识别的表情符号图标
backgroundBoolean在后台执行(ConsolePool)或正常终端
schedulerString计划执行的 cron 表达式

配置管理

启用/禁用配置

您可以启用或禁用单个配置文件来控制系统托盘菜单中可用的命令。这对于以下情况很有用:

  • 临时禁用 - 禁用配置而不删除
  • 测试 - 开发期间启用/禁用配置
  • 组织 - 保持多个配置但仅使用特定配置

在可视化编辑器中:

  • 打开配置编辑器
  • 使用"配置状态"部分中的切换开关
  • 启用的配置将被加载并在菜单中可用
  • 禁用的配置将被忽略

在 JSON 配置中:

{
  "terminal": "iterm",
  "launch_in": "current",
  "title": "我的命令",
  "enabled": true,
  "commands": [
    {
      "name": "示例命令",
      "command": "echo Hello World"
    }
  ]
}
参数类型默认值描述
enabledBooleantrue是否应加载此配置并在菜单中可用

注意:enabled 设置为 false 或省略时,配置将被忽略,其命令不会出现在系统托盘菜单中。

🎯 使用案例

👨‍💻 开发者

  • 快速项目导航 - 立即跳转到不同项目
  • 构建和测试工作流程 - 一键开发周期
  • Docker 管理 - 使用热键启动/停止容器
  • Git 操作 - 手边的常用 git 命令
  • 开发服务器管理 - 启动/停止开发服务器
  • 代码质量工具 - 运行 linter、formatter 和测试

🛠️ DevOps 工程师

  • 服务器管理 - SSH 连接和服务器命令
  • 监控工具 - 快速访问日志和指标
  • 部署脚本 - 自动化部署工作流程
  • 数据库操作 - 常用数据库命令
  • 容器编排 - Docker 和 Kubernetes 管理
  • 基础设施监控 - 系统资源跟踪

🎨 设计师

  • 资源优化 - 图像处理和优化
  • 设计系统工具 - 组件生成和更新
  • 原型服务器 - 快速设计服务器启动
  • 设计工具自动化 - 批处理和工作流程

🔧 系统管理员

  • 系统监控 - 实时资源监控
  • 服务管理 - 启动/停止系统服务
  • 备份自动化 - 计划备份操作
  • 网络工具 - 网络诊断和配置
  • 安全工具 - 漏洞扫描和评估
  • 维护任务 - 系统清理和优化

🔧 从源代码构建

先决条件

构建步骤

# 克隆仓库
git clone https://github.com/s00d/switchshuttle.git
cd switchshuttle

# 安装依赖
pnpm install

# 开发模式
pnpm run tauri dev

# 生产构建
pnpm run tauri build

平台特定说明

macOS

# 如果遇到签名问题
chmod +x /Applications/switch-shuttle.app
xattr -cr /Applications/switch-shuttle.app
codesign --force --deep --sign - /Applications/switch-shuttle.app

Windows

# 安装 Rust 和 Node.js
# 然后按照上面的构建步骤

Linux

# 安装系统依赖
sudo apt-get update
sudo apt-get install libwebkit2gtk-4.0-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev

# 然后按照上面的构建步骤

🤝 贡献

我们欢迎贡献!以下是您可以提供帮助的方式:

  1. Fork 仓库
  2. 创建 功能分支 (git checkout -b feature/amazing-feature)
  3. 提交 您的更改 (git commit -m 'Add amazing feature')
  4. 推送 到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

开发指南

  • 遵循现有代码风格
  • 为新功能添加测试
  • 根据需要更新文档
  • 确保跨平台兼容性
  • 使用 pnpm 进行包管理

开发设置

# 安装依赖
pnpm install

# 启动开发服务器
pnpm run tauri dev

# 运行类型检查
pnpm run type-check

# 生产构建
pnpm run tauri build

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

🙏 致谢

📞 支持


由 SwitchShuttle 社区用 ❤️ 制作

⭐ 如果您觉得这个仓库有用,请给它一个星标!