A blazingly fast macOS application switcher extension for Raycast with customizable hotkeys and intelligent sorting.
- 🚀 Lightning Fast - Optimized for speed with 5ms app detection
- ⌨️ Custom Hotkeys - Assign single or multi-character hotkeys to your favorite apps
- 🎯 Smart Sorting - Recently used apps appear first, then running apps
- 🔍 Fuzzy Search - Find apps quickly with space + search term
- 📱 Real App Icons - Displays actual macOS application icons
- 💾 Persistent Storage - Hotkeys and history survive between sessions
- ⚡ Instant Switching - Type a hotkey to switch immediately
- Clone this repository:
git clone https://github.com/stasmarkin/raycast-instant-app-switcher-extension.git
cd raycast-instant-app-switcher-extension- Install dependencies:
npm install- Build the extension:
npm run build- Import into Raycast:
- Open Raycast
- Go to Extensions
- Click "+" → "Add Local Extension"
- Select the project directory
- Open Raycast (default:
Cmd + Space) - Type "Select Appliction" or your custom alias
- Browse through your applications:
- Recent apps appear first
- Running apps are marked with "Running"
- All installed apps are shown below
-
Assign a Hotkey:
- Select an app from the list
- Press
Cmd + H - Enter a hotkey (e.g.,
fffor Firefox,fifor Figma) - Press Enter
-
Use Hotkeys:
- Open the extension
- Type your hotkey (e.g.,
ff) - App switches instantly!
-
Remove Hotkeys:
- Select an app with a hotkey
- Press
Cmd + R
- Type
Spacefollowed by search term - Example:
␣fire→ Firefox - Example:
␣vsc→ Visual Studio Code - Supports abbreviations and partial matches
| Shortcut | Action |
|---|---|
Enter |
Switch to selected app |
Cmd + H |
Assign hotkey to app |
Cmd + R |
Remove hotkey from app |
| Single character | Switch via hotkey (if assigned) |
Space + text |
Search apps by text term |
- Uses
lsappinfofor ultra-fast running app detection (~5ms) - Caches installed apps for 3 minutes
- 50ms timeout for app scanning to prevent UI blocking
Apps are sorted by:
- Recently used - Last 25 apps you switched to
- Running status - Currently running applications
- Alphabetically - All other apps
The extension automatically prevents conflicts:
- E.g. can't assign
ffiffexists - Bidirectional conflict detection
- Node.js 18+
- Raycast installed on macOS
- npm or yarn
# Development mode with hot reload
npm run dev
# Build for production
npm run build
# Lint code
npm run lintraycast-instant-app-switcher-extension/
├── src/
│ └── switch-apps.tsx # Main extension code
├── assets/
│ └── command-icon.png # Extension icon
├── package.json # Project metadata
├── tsconfig.json # TypeScript config
└── README.md # This file
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code conventions
- Use TypeScript for type safety
- Keep functions small and focused
- Add comments for complex logic
MIT License - see LICENSE file for details
- Built with Raycast Extensions API
- Inspired by the need for faster app switching on macOS
If you encounter any issues or have suggestions:
- Open an issue on GitHub
- Check existing issues for solutions
- Provide detailed reproduction steps
Made with ❤️ for the Raycast community