{"id":13981750,"url":"https://github.com/s00d/switchshuttle","last_synced_at":"2025-07-12T15:32:04.245Z","repository":{"id":250355716,"uuid":"834232140","full_name":"s00d/switchshuttle","owner":"s00d","description":"SwitchShuttle is a cross-platform system tray application that allows users to run predefined commands in various terminal applications. It supports macOS, Windows, and Linux, offering a simple and customizable way to manage and execute your frequently used commands.","archived":false,"fork":false,"pushed_at":"2025-07-08T10:53:28.000Z","size":26335,"stargazers_count":25,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-08T11:29:00.983Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://s00d.github.io/switchshuttle/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/s00d.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-26T18:01:27.000Z","updated_at":"2025-07-08T10:33:03.000Z","dependencies_parsed_at":"2024-07-26T19:46:21.002Z","dependency_job_id":"276ba5eb-93a9-4396-945f-79f5c599fb08","html_url":"https://github.com/s00d/switchshuttle","commit_stats":null,"previous_names":["s00d/switchshuttle"],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/s00d/switchshuttle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s00d%2Fswitchshuttle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s00d%2Fswitchshuttle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s00d%2Fswitchshuttle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s00d%2Fswitchshuttle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s00d","download_url":"https://codeload.github.com/s00d/switchshuttle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s00d%2Fswitchshuttle/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265013361,"owners_count":23698024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-09T05:00:57.285Z","updated_at":"2025-07-12T15:32:04.235Z","avatar_url":"https://github.com/s00d.png","language":"Vue","funding_links":[],"categories":["Applications"],"sub_categories":["Utilities"],"readme":"\u003cdiv align=\"center\"\u003e\n  \n  [![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-blue?style=for-the-badge)](https://github.com/s00d/switchshuttle)\n  [![License](https://img.shields.io/badge/license-MIT-green?style=for-the-badge)](LICENSE)\n  [![GitHub release](https://img.shields.io/github/v/release/s00d/switchshuttle?style=for-the-badge)](https://github.com/s00d/switchshuttle/releases)\n  [![GitHub downloads](https://img.shields.io/github/downloads/s00d/switchshuttle/total?style=for-the-badge)](https://github.com/s00d/switchshuttle/releases)\n  [![GitHub issues](https://img.shields.io/github/issues/s00d/switchshuttle?style=for-the-badge)](https://github.com/s00d/switchshuttle/issues)\n  [![GitHub stars](https://img.shields.io/github/stars/s00d/switchshuttle?style=for-the-badge)](https://github.com/s00d/switchshuttle/stargazers)\n  [![Donate](https://img.shields.io/badge/Donate-Donationalerts-ff4081?style=for-the-badge)](https://www.donationalerts.com/r/s00d88)\n\n  \u003cimg src=\"https://raw.githubusercontent.com/s00d/switchshuttle/refs/heads/main/icons/logo-min.png\" alt=\"SwitchShuttle Logo\" width=\"600\"\u003e\n  \n  # SwitchShuttle\n  \n  **🚀 Cross-platform terminal command manager with global hotkeys**\n\n  \u003cimg src=\"https://github.com/s00d/switchshuttle/blob/main/icons/intro.gif?raw=true\" alt=\"SwitchShuttle Demo\" width=\"600\"\u003e\n  \u003cdiv class=\"locale\"\u003e\n    \u003ca href=\"README.md\"\u003e🇺🇸 English\u003c/a\u003e • \n    \u003ca href=\"README_ZH.md\"\u003e🇨🇳 中文\u003c/a\u003e • \n    \u003ca href=\"README_RU.md\"\u003e🇷🇺 Русский\u003c/a\u003e • \n    \u003ca href=\"README_DE.md\"\u003e🇩🇪 Deutsch\u003c/a\u003e • \n    \u003ca href=\"README_JA.md\"\u003e🇯🇵 日本語\u003c/a\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n---\n\n## ✨ What is SwitchShuttle?\n\nSwitchShuttle is a powerful cross-platform system tray application that revolutionizes how you manage and execute terminal commands. Built with modern technologies (Rust + Tauri + Vue.js), it provides a sleek interface for organizing, customizing, and quickly accessing your most-used terminal operations.\n\n### 🎯 Key Features\n\n- **🖥️ Multi-Platform Support** - Works seamlessly on macOS, Windows, and Linux\n- **⚡ Global Hotkeys** - Execute commands instantly from anywhere with keyboard shortcuts\n- **🎨 Multiple Terminal Support** - iTerm, Terminal, Warp, Alacritty, Hyper, and more\n- **📁 Smart Organization** - Create nested submenus for better command organization\n- **🔧 Dynamic Inputs** - Interactive prompts for commands that need user input\n- **🔄 Multiple Execution Modes** - Run in current window, new tab, or new window\n- **🚀 Auto-Start** - Launch at system startup for instant access\n- **🎨 Modern UI** - Beautiful, intuitive interface built with Vue.js\n- **💻 Command Line Interface** - Execute commands directly from terminal with CLI\n- **⚙️ Configuration Management** - Enable/disable configurations without deleting them\n- **🔄 Switch Commands** - Toggle system features with background execution\n- **📊 Monitor Commands** - Real-time system resource monitoring with visual indicators\n\n## 🚀 Quick Start\n\n### Download \u0026 Install\n\n#### Option 1: Homebrew (macOS - Recommended)\n```bash\n# Install via Homebrew\nbrew tap s00d/switchshuttle\nbrew install --cask switchshuttle\n```\n\n#### Option 2: Manual Download\n1. **Download** the latest release for your platform from [GitHub Releases](https://github.com/s00d/switchshuttle/releases)\n2. **Install** the application\n3. **Launch** SwitchShuttle - it will appear in your system tray\n4. **Right-click** the tray icon to access the menu\n\n### First Configuration\n\n1. **Edit Config** → Opens your configuration file in your default editor\n2. **Add your commands** using the JSON format (see examples below)\n3. **Save and restart** the application\n4. **Enjoy** your organized command shortcuts!\n\n## 🖥️ Command Line Interface (CLI)\n\nSwitchShuttle also provides a powerful command-line interface for quick command execution without opening the GUI.\n\n### CLI Usage\n\n#### Execute Commands\n```bash\n# Execute by command ID\nswitch-shuttle cmd_8\n\n# Execute by command name (case-insensitive)\nswitch-shuttle \"Example Command\"\n```\n\n#### List All Commands\n```bash\n# Show all available commands with their IDs\nswitch-shuttle --list\n# or\nswitch-shuttle -l\n```\n\n#### Search Commands\n```bash\n# Search for commands containing specific text\nswitch-shuttle --search \"git\"\n# or\nswitch-shuttle -s \"docker\"\n```\n\n### Running CLI on Different Operating Systems\n\n#### macOS\n```bash\n# If installed via Homebrew\nswitch-shuttle --list\n\n# If installed manually\n/Applications/switch-shuttle.app/Contents/MacOS/SwitchShuttle --list\n\n# Create an alias for easier access\necho 'alias switch-shuttle=\"/Applications/switch-shuttle.app/Contents/MacOS/SwitchShuttle\"' \u003e\u003e ~/.zshrc\nsource ~/.zshrc\n```\n\n#### Windows\n```bash\n# If installed via installer\n\"C:\\Program Files\\SwitchShuttle\\switch-shuttle.exe\" --list\n\n# If installed via winget or chocolatey\nswitch-shuttle --list\n\n# Add to PATH for easier access\n# Add \"C:\\Program Files\\SwitchShuttle\" to your system PATH\n```\n\n#### Linux\n```bash\n# If installed via package manager\nswitch-shuttle --list\n\n# If installed manually\n./switch-shuttle --list\n\n# Make executable and add to PATH\nchmod +x switch-shuttle\nsudo mv switch-shuttle /usr/local/bin/\n```\n\n### CLI Examples\n\n```bash\n# Quick git operations\nswitch-shuttle \"git status\"\nswitch-shuttle \"git pull\"\n\n# Development workflows\nswitch-shuttle \"npm run dev\"\nswitch-shuttle \"docker-compose up\"\n\n# List all available commands\nswitch-shuttle --list\n\n# Find commands related to database\nswitch-shuttle --search \"database\"\n```\n\n### CLI Features\n\n- **🚀 Fast Execution** - Run commands instantly from terminal\n- **🔍 Smart Search** - Find commands by ID or name\n- **📋 Command Listing** - View all available commands\n- **⚡ No GUI Required** - Perfect for automation and scripts\n- **🔄 Exit After Execution** - Clean terminal experience\n\n## 📋 Configuration Guide\n\n### Basic Structure\n\nSwitchShuttle uses JSON configuration files stored in:\n- **macOS/Linux**: `~/.config/switch-shuttle/`\n- **Windows**: `C:\\Users\\\u003cUsername\u003e\\AppData\\Roaming\\switch-shuttle\\`\n\n### Simple Example\n\n```json\n{\n  \"terminal\": \"iterm\",\n  \"launch_in\": \"new_tab\",\n  \"title\": \"My Commands\",\n  \"commands\": [\n    {\n      \"name\": \"🚀 Start Development Server\",\n      \"command\": \"npm run dev\",\n      \"hotkey\": \"Ctrl+Shift+D\"\n    },\n    {\n      \"name\": \"📦 Install Dependencies\",\n      \"command\": \"npm install\",\n      \"hotkey\": \"Ctrl+Shift+I\"\n    },\n    {\n      \"name\": \"🔧 Development Tools\",\n      \"submenu\": [\n        {\n          \"name\": \"🧪 Run Tests\",\n          \"command\": \"npm test\",\n          \"hotkey\": \"Ctrl+Shift+T\"\n        },\n        {\n          \"name\": \"📊 Build Project\",\n          \"command\": \"npm run build\",\n          \"hotkey\": \"Ctrl+Shift+B\"\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Advanced Features\n\n#### 🔧 Dynamic Inputs\n\nCreate interactive commands that prompt for user input:\n\n```json\n{\n  \"name\": \"📝 Create New Component\",\n  \"inputs\": {\n    \"componentName\": \"MyComponent\",\n    \"componentType\": \"functional\"\n  },\n  \"commands\": [\n    \"mkdir -p src/components/[componentName]\",\n    \"touch src/components/[componentName]/index.tsx\",\n    \"echo 'import React from \\\"react\\\";' \u003e src/components/[componentName]/index.tsx\",\n    \"echo 'export const [componentName] = () =\u003e \u003cdiv\u003e[componentName]\u003c/div\u003e;' \u003e\u003e src/components/[componentName]/index.tsx\"\n  ],\n  \"hotkey\": \"Ctrl+Shift+N\"\n}\n```\n\n#### 🔄 Multiple Commands\n\nExecute a sequence of commands:\n\n```json\n{\n  \"name\": \"🔄 Full Development Cycle\",\n  \"commands\": [\n    \"git pull origin main\",\n    \"npm install\",\n    \"npm run lint\",\n    \"npm run test\",\n    \"npm run build\"\n  ],\n  \"hotkey\": \"Ctrl+Shift+F\"\n}\n```\n\n#### 📁 Nested Submenus\n\nOrganize commands in hierarchical menus:\n\n```json\n{\n  \"name\": \"🐳 Docker Operations\",\n  \"submenu\": [\n    {\n      \"name\": \"🚀 Start Services\",\n      \"submenu\": [\n        {\n          \"name\": \"🏗️ Development\",\n          \"command\": \"docker-compose -f docker-compose.dev.yml up -d\"\n        },\n        {\n          \"name\": \"🏭 Production\",\n          \"command\": \"docker-compose -f docker-compose.prod.yml up -d\"\n        }\n      ]\n    },\n    {\n      \"name\": \"🛑 Stop All\",\n      \"command\": \"docker-compose down\"\n    }\n  ]\n}\n```\n\n#### 🔄 Switch Commands\n\nToggle system features with background execution:\n\n```json\n{\n  \"name\": \"🔧 System Controls\",\n  \"submenu\": [\n    {\n      \"name\": \"📶 Toggle WiFi\",\n      \"command\": \"networksetup -setairportpower en0 toggle\",\n      \"switch\": \"networksetup -getairportpower en0 | grep -q 'On' \u0026\u0026 echo 'true' || echo 'false'\"\n    },\n    {\n      \"name\": \"🔊 Toggle Bluetooth\",\n      \"command\": \"blueutil -p toggle\",\n      \"switch\": \"blueutil -p | grep -q '1' \u0026\u0026 echo 'true' || echo 'false'\"\n    },\n    {\n      \"name\": \"🌙 Toggle Dark Mode\",\n      \"command\": \"osascript -e 'tell app \\\"System Events\\\" to tell appearance preferences to set dark mode to not dark mode'\",\n      \"switch\": \"osascript -e 'tell app \\\"System Events\\\" to tell appearance preferences to get dark mode'\"\n    }\n  ]\n}\n```\n\n**Switch Command Features:**\n- **Background Execution** - Commands run silently without opening terminal\n- **Status Checking** - Automatically detects current state\n- **Visual Feedback** - Shows enabled/disabled status in menu\n- **Cross-Platform** - Works on macOS, Windows, and Linux\n\n#### 📊 Monitor Commands\n\nMonitor system resources and services with real-time information:\n\n```json\n{\n  \"name\": \"📊 System Monitoring\",\n  \"submenu\": [\n    {\n      \"name\": \"💾 Memory Usage\",\n      \"command\": \"top -l 1 | head -n 10\",\n      \"monitor\": \"memory\",\n      \"icon\": \"🧠\"\n    },\n    {\n      \"name\": \"💻 CPU Load\",\n      \"command\": \"top -l 1 | grep 'CPU usage'\",\n      \"monitor\": \"cpu\",\n      \"icon\": \"⚡\"\n    },\n    {\n      \"name\": \"💾 Disk Space\",\n      \"command\": \"df -h | grep '/dev/'\",\n      \"monitor\": \"disk\",\n      \"icon\": \"💾\"\n    },\n    {\n      \"name\": \"🌐 Network Status\",\n      \"command\": \"ifconfig | grep -E 'inet |status:'\",\n      \"monitor\": \"network\",\n      \"icon\": \"🌐\"\n    }\n  ]\n}\n```\n\n**Monitor Command Features:**\n- **Menu Integration** - Add monitoring buttons to system tray menu\n- **Command Execution** - Execute monitoring commands when menu opens\n- **Data Display** - Show command output directly in menu interface\n- **Visual Indicators** - Icons and status indicators in menu\n- **Cross-Platform** - Works on macOS, Windows, and Linux\n\n## ⚙️ Configuration Reference\n\n### Main Configuration\n\n| Parameter | Type | Description | Default |\n|-----------|------|-------------|---------|\n| `terminal` | String | Terminal application to use | `\"terminal\"` |\n| `launch_in` | String | Where to launch commands | `\"current\"` |\n| `theme` | String | Terminal theme (if supported) | - |\n| `title` | String | Window/tab title | - |\n| `menu_hotkey` | String | Global hotkey to open menu | - |\n| `commands` | Array | List of command configurations | `[]` |\n| `enabled` | Boolean | Whether this configuration should be loaded | `true` |\n\n### Terminal Options\n\n| Terminal | macOS | Windows | Linux |\n|----------|-------|---------|-------|\n| `iterm` | ✅ | ❌ | ❌ |\n| `terminal` | ✅ | ✅ | ✅ |\n| `warp` | ✅ | ❌ | ❌ |\n| `alacritty` | ✅ | ✅ | ✅ |\n| `hyper` | ✅ | ✅ | ✅ |\n\n### Launch Modes\n\n| Mode | Description |\n|------|-------------|\n| `current` | Execute in current terminal window |\n| `new_tab` | Open new tab and execute |\n| `new_window` | Open new window and execute |\n\n### Command Configuration\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | String | ✅ | Display name for the command |\n| `command` | String | ❌ | Single command to execute |\n| `commands` | Array | ❌ | Multiple commands to execute |\n| `submenu` | Array | ❌ | Nested subcommands |\n| `inputs` | Object | ❌ | Dynamic input fields |\n| `hotkey` | String | ❌ | Global hotkey shortcut |\n| `switch` | String | ❌ | Command to check current status (for toggle commands) |\n| `monitor` | String | ❌ | Monitor type for real-time resource tracking |\n| `icon` | String | ❌ | Emoji icon for visual identification |\n\n### Configuration Management\n\n#### Enable/Disable Configurations\n\nYou can enable or disable individual configuration files to control which commands are available in the system tray menu. This is useful for:\n\n- **Temporary disabling** - Disable configurations without deleting them\n- **Testing** - Enable/disable configurations during development\n- **Organization** - Keep multiple configurations but only use specific ones\n\n**In the Visual Editor:**\n- Open the Configuration Editor\n- Use the toggle switch in the \"Configuration Status\" section\n- Enabled configurations will be loaded and available in the menu\n- Disabled configurations will be ignored\n\n**In JSON Configuration:**\n```json\n{\n  \"terminal\": \"iterm\",\n  \"launch_in\": \"current\",\n  \"title\": \"My Commands\",\n  \"enabled\": true,\n  \"commands\": [\n    {\n      \"name\": \"Example Command\",\n      \"command\": \"echo Hello World\"\n    }\n  ]\n}\n```\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `enabled` | Boolean | `true` | Whether this configuration should be loaded and available in the menu |\n\n**Note:** When `enabled` is set to `false` or omitted, the configuration will be ignored and its commands won't appear in the system tray menu.\n\n## 🎯 Use Cases\n\n### 👨‍💻 Developers\n- **Quick project navigation** - Jump to different projects instantly\n- **Build and test workflows** - One-click development cycles\n- **Docker management** - Start/stop containers with hotkeys\n- **Git operations** - Common git commands at your fingertips\n\n### 🛠️ DevOps Engineers\n- **Server management** - SSH connections and server commands\n- **Monitoring tools** - Quick access to logs and metrics\n- **Deployment scripts** - Automated deployment workflows\n- **Database operations** - Common database commands\n\n### 🎨 Designers\n- **Asset optimization** - Image processing and optimization\n- **Design system tools** - Component generation and updates\n- **Prototype servers** - Quick design server startup\n\n## 🔧 Building from Source\n\n### Prerequisites\n\n- [Rust](https://www.rust-lang.org/tools/install) (latest stable)\n- [Node.js](https://nodejs.org/) (v16 or higher)\n- [Tauri CLI](https://tauri.app/v1/guides/getting-started/prerequisites/)\n\n### Build Steps\n\n```bash\n# Clone the repository\ngit clone https://github.com/s00d/switchshuttle.git\ncd switchshuttle\n\n# Install dependencies\nnpm install\n\n# Development mode\nnpm run tauri dev\n\n# Build for production\nnpm run tauri build\n```\n\n### Platform-Specific Notes\n\n#### macOS\n```bash\n# If you encounter signing issues\nchmod +x /Applications/switch-shuttle.app\nxattr -cr /Applications/switch-shuttle.app\ncodesign --force --deep --sign - /Applications/switch-shuttle.app\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Here's how you can help:\n\n1. **Fork** the repository\n2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)\n3. **Commit** your changes (`git commit -m 'Add amazing feature'`)\n4. **Push** to the branch (`git push origin feature/amazing-feature`)\n5. **Open** a Pull Request\n\n### Development Guidelines\n\n- Follow the existing code style\n- Add tests for new features\n- Update documentation as needed\n- Ensure cross-platform compatibility\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Inspired by the original [Shuttle](https://github.com/fitztrev/shuttle) project\n- Built with [Tauri](https://tauri.app/) for cross-platform desktop apps\n- UI powered by [Vue.js](https://vuejs.org/)\n\n## 📞 Support\n\n- **Issues**: [GitHub Issues](https://github.com/s00d/switchshuttle/issues)\n- **Releases**: [GitHub Releases](https://github.com/s00d/switchshuttle/releases)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eMade with ❤️ by the SwitchShuttle community\u003c/p\u003e\n  \u003cp\u003e⭐ Star this repository if you find it useful!\u003c/p\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs00d%2Fswitchshuttle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs00d%2Fswitchshuttle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs00d%2Fswitchshuttle/lists"}