Skip to content

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.

License

Notifications You must be signed in to change notification settings

s00d/switchshuttle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Platform License GitHub release GitHub downloads GitHub issues GitHub stars Donate

SwitchShuttle Logo

SwitchShuttle

πŸš€ Cross-platform terminal command manager with global hotkeys

SwitchShuttle Demo

✨ What is SwitchShuttle?

SwitchShuttle 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.

🎯 Key Features

  • πŸ–₯️ Multi-Platform Support - Works seamlessly on macOS, Windows, and Linux
  • ⚑ Global Hotkeys - Execute commands instantly from anywhere with keyboard shortcuts
  • 🎨 Multiple Terminal Support - iTerm, Terminal, Warp, Alacritty, Hyper, and more
  • πŸ“ Smart Organization - Create nested submenus for better command organization
  • πŸ”§ Dynamic Inputs - Interactive prompts for commands that need user input
  • πŸ”„ Multiple Execution Modes - Run in current window, new tab, or new window
  • πŸš€ Auto-Start - Launch at system startup for instant access
  • 🎨 Modern UI - Beautiful, intuitive interface built with Vue.js

πŸš€ Quick Start

Download & Install

Option 1: Homebrew (macOS - Recommended)

# Install via Homebrew
brew tap s00d/switchshuttle
brew install --cask switchshuttle

Option 2: Manual Download

  1. Download the latest release for your platform from GitHub Releases
  2. Install the application
  3. Launch SwitchShuttle - it will appear in your system tray
  4. Right-click the tray icon to access the menu

First Configuration

  1. Edit Config β†’ Opens your configuration file in your default editor
  2. Add your commands using the JSON format (see examples below)
  3. Save and restart the application
  4. Enjoy your organized command shortcuts!

πŸ“‹ Configuration Guide

Basic Structure

SwitchShuttle uses JSON configuration files stored in:

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

Simple Example

{
  "terminal": "iterm",
  "launch_in": "new_tab",
  "title": "My Commands",
  "commands": [
    {
      "name": "πŸš€ Start Development Server",
      "command": "npm run dev",
      "hotkey": "Ctrl+Shift+D"
    },
    {
      "name": "πŸ“¦ Install Dependencies",
      "command": "npm install",
      "hotkey": "Ctrl+Shift+I"
    },
    {
      "name": "πŸ”§ Development Tools",
      "submenu": [
        {
          "name": "πŸ§ͺ Run Tests",
          "command": "npm test",
          "hotkey": "Ctrl+Shift+T"
        },
        {
          "name": "πŸ“Š Build Project",
          "command": "npm run build",
          "hotkey": "Ctrl+Shift+B"
        }
      ]
    }
  ]
}

Advanced Features

πŸ”§ Dynamic Inputs

Create interactive commands that prompt for user input:

{
  "name": "πŸ“ Create New Component",
  "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"
}

πŸ”„ Multiple Commands

Execute a sequence of commands:

{
  "name": "πŸ”„ Full Development Cycle",
  "commands": [
    "git pull origin main",
    "npm install",
    "npm run lint",
    "npm run test",
    "npm run build"
  ],
  "hotkey": "Ctrl+Shift+F"
}

πŸ“ Nested Submenus

Organize commands in hierarchical menus:

{
  "name": "🐳 Docker Operations",
  "submenu": [
    {
      "name": "πŸš€ Start Services",
      "submenu": [
        {
          "name": "πŸ—οΈ Development",
          "command": "docker-compose -f docker-compose.dev.yml up -d"
        },
        {
          "name": "🏭 Production",
          "command": "docker-compose -f docker-compose.prod.yml up -d"
        }
      ]
    },
    {
      "name": "πŸ›‘ Stop All",
      "command": "docker-compose down"
    }
  ]
}

βš™οΈ Configuration Reference

Main Configuration

Parameter Type Description Default
terminal String Terminal application to use "terminal"
launch_in String Where to launch commands "current"
theme String Terminal theme (if supported) -
title String Window/tab title -
menu_hotkey String Global hotkey to open menu -
commands Array List of command configurations []

Terminal Options

Terminal macOS Windows Linux
iterm βœ… ❌ ❌
terminal βœ… βœ… βœ…
warp βœ… ❌ ❌
alacritty βœ… βœ… βœ…
hyper βœ… βœ… βœ…

Launch Modes

Mode Description
current Execute in current terminal window
new_tab Open new tab and execute
new_window Open new window and execute

Command Configuration

Parameter Type Required Description
name String βœ… Display name for the command
command String ❌ Single command to execute
commands Array ❌ Multiple commands to execute
submenu Array ❌ Nested subcommands
inputs Object ❌ Dynamic input fields
hotkey String ❌ Global hotkey shortcut

🎯 Use Cases

πŸ‘¨β€πŸ’» Developers

  • Quick project navigation - Jump to different projects instantly
  • Build and test workflows - One-click development cycles
  • Docker management - Start/stop containers with hotkeys
  • Git operations - Common git commands at your fingertips

πŸ› οΈ DevOps Engineers

  • Server management - SSH connections and server commands
  • Monitoring tools - Quick access to logs and metrics
  • Deployment scripts - Automated deployment workflows
  • Database operations - Common database commands

🎨 Designers

  • Asset optimization - Image processing and optimization
  • Design system tools - Component generation and updates
  • Prototype servers - Quick design server startup

πŸ”§ Building from Source

Prerequisites

Build Steps

# Clone the repository
git clone https://github.com/s00d/switchshuttle.git
cd switchshuttle

# Install dependencies
npm install

# Development mode
npm run tauri dev

# Build for production
npm run tauri build

Platform-Specific Notes

macOS

# If you encounter signing issues
chmod +x /Applications/switch-shuttle.app
xattr -cr /Applications/switch-shuttle.app
codesign --force --deep --sign - /Applications/switch-shuttle.app

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow the existing code style
  • Add tests for new features
  • Update documentation as needed
  • Ensure cross-platform compatibility

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Inspired by the original Shuttle project
  • Built with Tauri for cross-platform desktop apps
  • UI powered by Vue.js

πŸ“ž Support


Made with ❀️ by the SwitchShuttle community

⭐ Star this repository if you find it useful!

About

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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published