[](https://github.com/s00d/switchshuttle)
[](https://github.com/s00d/switchshuttle/blob/main/LICENSE)
[](https://github.com/s00d/switchshuttle/releases)
[](https://github.com/s00d/switchshuttle/releases)
[](https://github.com/s00d/switchshuttle/issues)
[](https://github.com/s00d/switchshuttle/stargazers)
[](https://www.donationalerts.com/r/s00d88)

# SwitchShuttle
**🚀 带全局热键的跨平台终端命令管理器**
---
## ✨ 什么是 SwitchShuttle?
SwitchShuttle 是一个强大的跨平台系统托盘应用程序,它彻底改变了您管理和执行终端命令的方式。使用现代技术(Rust + Tauri + Vue.js)构建,它提供了一个优雅的界面来组织、自定义和快速访问您最常用的终端操作。
### 🎯 主要功能
- **🖥️ 多平台支持** - 在 macOS、Windows 和 Linux 上无缝运行
- **⚡ 全局热键** - 使用键盘快捷键从任何地方立即执行命令
- **🎨 多终端支持** - iTerm、Terminal、Warp、Alacritty、Hyper 等
- **📁 智能组织** - 创建嵌套子菜单以更好地组织命令
- **🔧 动态输入** - 需要用户输入的命令的交互式提示
- **🔄 多种执行模式** - 在当前窗口、新标签页或新窗口中执行
- **🚀 自动启动** - 系统启动时启动以立即访问
- **🎨 现代界面** - 使用 Vue.js 构建的美丽直观界面
- **💻 命令行界面** - 直接从终端执行命令的 CLI
- **⚙️ 配置管理** - 启用/禁用配置而无需删除
- **🔄 开关命令** - 通过后台执行切换系统功能
- **📊 监控命令** - 实时系统资源监控,带视觉指示器
- **📅 计划命令** - 使用 cron 表达式自动化任务
- **🎯 模板系统** - 常见工作流程的预构建命令模板
## 🖥️ 用户界面概述
SwitchShuttle 提供了一个现代、直观的界面,具有几个关键组件:
### 🎛️ 主要界面组件
#### 1. **配置编辑器**
- **可视化 JSON 编辑器** - 使用语法高亮和验证编辑配置
- **模板系统** - 导入常见工作流程的预构建命令模板
- **实时验证** - 配置错误的即时反馈
- **自动保存** - 输入时自动保存更改
- **配置管理** - 启用/禁用配置而无需删除
- **搜索和过滤** - 快速找到特定配置
- **配置复制** - 为测试创建现有配置的副本
#### 2. **命令管理**
- **命令构建器** - 使用可视化表单界面创建命令
- **热键配置** - 设置即时命令执行的全局快捷键
- **图标选择器** - 选择表情符号图标以更好地视觉组织
- **输入字段** - 为交互式命令配置动态输入提示
- **嵌套子菜单** - 在层次结构中组织命令
- **命令验证** - 命令语法的实时验证
#### 3. **设置面板**
- **终端选择** - 选择您首选的终端应用程序
- **启动模式** - 配置命令执行方式(当前/新标签页/新窗口)
- **主题设置** - 自定义应用程序外观
- **自动启动配置** - 启用/禁用系统启动
- **全局热键设置** - 配置系统范围的菜单快捷键
#### 4. **系统托盘菜单**
- **快速访问** - 右键点击托盘图标以立即访问命令
- **状态指示器** - 开关命令和监控的视觉反馈
- **嵌套菜单** - 易于导航的有组织命令层次结构
- **全局热键** - 即时命令执行的键盘快捷键
- **实时监控** - 实时系统资源指示器
### 🎨 界面功能
#### **可视化命令构建器**
```json
{
"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 - 推荐)
```bash
# 通过 Homebrew 安装
brew tap s00d/switchshuttle
brew install --cask switchshuttle
```
#### 选项 2: 手动下载
1. **下载** 从 [GitHub Releases](https://github.com/s00d/switchshuttle/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 使用
#### 执行命令
```bash
# 通过命令 ID 执行
switch-shuttle cmd_8
# 通过命令名称执行(不区分大小写)
switch-shuttle "示例命令"
```
#### 列出所有命令
```bash
# 显示所有可用命令及其 ID
switch-shuttle --list
# 或
switch-shuttle -l
```
#### 搜索命令
```bash
# 搜索包含特定文本的命令
switch-shuttle --search "git"
# 或
switch-shuttle -s "docker"
```
### 在不同操作系统上运行 CLI
#### macOS
```bash
# 如果通过 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
```bash
# 如果通过安装程序安装
"C:\Program Files\SwitchShuttle\switch-shuttle.exe" --list
# 如果通过 winget 或 chocolatey 安装
switch-shuttle --list
# 添加到 PATH 以便更容易访问
# 将 "C:\Program Files\SwitchShuttle" 添加到系统 PATH
```
#### Linux
```bash
# 如果通过包管理器安装
switch-shuttle --list
# 如果手动安装
./switch-shuttle --list
# 使其可执行并添加到 PATH
chmod +x switch-shuttle
sudo mv switch-shuttle /usr/local/bin/
```
### CLI 示例
```bash
# 快速 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\`
### 简单示例
```json
{
"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"
}
]
}
]
}
```
### 高级功能
#### 🔧 动态输入
创建需要用户输入的交互式命令:
```json
{
"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] = () =>