Launch any app with a single keystroke — muscle memory, not mental effort.
MaxLaunchpad is a free, open-source keyboard launcher that maps your programs onto a virtual keyboard. Summon it anywhere with a global hotkey, then press one key to launch. No typing, no searching, no fuzzy-match roulette.
Download · Documentation · Features · FAQ · Contributing
- What is MaxLaunchpad?
- Why a keyboard launcher instead of a search launcher?
- Features
- Install MaxLaunchpad on Windows, macOS and Linux
- Quick start in 60 seconds
- Virtual keyboard layout: 310 shortcuts
- Keyboard shortcuts reference
- YAML configuration example
- Use cases
- MaxLaunchpad vs. Spotlight, Alfred, Raycast, Flow Launcher & Rofi
- FAQ
- Documentation
- Development guide (for contributors)
- Credits
MaxLaunchpad is a cross-platform application launcher for Windows, macOS and Ubuntu/Linux that
launches programs from a single keypress. Instead of typing an app name and hoping the search
ranking picks the right result, you assign each program to a physical key — Q for your terminal,
C for Chrome, V for VS Code — and that binding never changes.
Think of it as Vim for your desktop workflow: deterministic, spatial, and fast enough that your fingers stop asking your brain for permission.
- 🎯 Deterministic — the same key always launches the same app, forever.
- ⚡ One keystroke —
Alt+`to summon, one key to launch. Two presses total. - 🧩 310 shortcuts — 10 tabs × 30 keys + 10 global function keys.
- 🗂 Portable YAML — human-readable profiles you can version with Git, sync, or share.
- 🖥 Truly cross-platform — one workflow across Windows, macOS and Ubuntu.
- 🆓 Free & open source — Electron + React + TypeScript, no account, no cloud, no telemetry hooks.
Search-based launchers (Spotlight, Alfred, Raycast, Flow Launcher, Launchy, Wox, Rofi, Keypirinha) ask you to recall a name, type it, read the results, and confirm. That is four cognitive steps every single time, and the result list can change under you as indexes and rankings update.
MaxLaunchpad replaces recall with muscle memory:
| Search launcher | MaxLaunchpad | |
|---|---|---|
| Steps to launch | hotkey → type → scan → Enter | hotkey → one key |
| Result stability | ranking may change | fixed binding, always |
| Works with hands on home row | partially | yes |
| Arguments / working dir / admin | limited | per-shortcut |
| Config portability | app-specific DB | plain YAML files |
They are complementary, not mutually exclusive: keep your search launcher for one-off apps and files, use MaxLaunchpad for the 20–50 programs you open every day.
- Single-keystroke launch — press any letter/symbol key to launch instantly; no typing, no fuzzy search.
- 310 configurable shortcuts — 10 tabs (
1–0) × 30 keys, plus 10 global function keys (F1–F10) shared across all tabs. - Global hotkey — summon from any app with
Alt+`(Windows/Linux) orOption ⌥+`(macOS); modifiers and main key are fully configurable. - Arguments, working directory, run-as-admin — per shortcut, so one key can launch a fully-parameterised command.
- Launch anything
- Windows:
.exe,.lnk,.bat,.cmd,.ps1, Microsoft Store / UWP apps,shell:targets - macOS:
.appbundles, Unix executables,.sh,.command - Ubuntu/Linux: ELF binaries,
.desktopentries,.sh,.py,.rb - All platforms:
http/httpsURLs open in your default browser
- Windows:
- Auto-hide after launch — window disappears the moment the app starts.
- Drag & drop setup — drag an executable, shortcut or
.appfrom your file manager onto a key. Windows.lnkfiles are parsed for target, arguments and working directory automatically. - Quick Select — search installed applications inside the edit dialog to auto-fill label, path and description (with ↑/↓/Enter keyboard navigation).
- Multiple profiles —
keyboard.yaml,work.yaml,gaming.yaml… switch viaFile > New / Open / Save As. - Human-readable YAML — version it with Git, sync it with Dropbox/Syncthing, share it with your team.
- Auto-save with timestamped backups — every change is saved and the previous version is backed up.
- Built-in search —
Ctrl+F/Cmd+Ffilters all keys by label, file path, arguments, working directory, description or key ID.
- System tray — close button minimises to tray; optional Start in Tray and Launch on Startup.
- Always on top, auto-hide on blur, lock-to-center — behaves like an overlay, not another window to manage.
- Multi-monitor & macOS Spaces aware — appears on the display under your cursor and on the current Space.
- Light / dark / system themes plus custom CSS styles dropped into
~/.config/MaxLaunchpad/styles/. - Compact mode — hide the menu bar, button icons, button text, empty buttons or entire keyboard rows.
- Real icons — extracts and caches icons for Windows UWP/Store apps and macOS
.appbundles, supports custom icon paths/URLs, and falls back to generated DiceBear avatars.
# Windows (winget)
winget install AwesomeDog.MaxLaunchpad
# macOS (Homebrew Cask)
brew install --cask AwesomeDog/tap/maxlaunchpadGrab the installer for your OS from the Releases page.
| Platform | Requirement | Notes |
|---|---|---|
| Windows | Windows 10 or later | Works out of the box. |
| macOS | macOS 11 Big Sur or later (Apple Silicon) | Run xattr -cr /Applications/MaxLaunchpad.app to clear the quarantine flag. Add the app to Login Items for auto-start. |
| Linux | Ubuntu 24.04 or equivalent (Wayland) | Under Wayland the global hotkey may need manual setup in GNOME keyboard settings. |
- Launch MaxLaunchpad. The virtual keyboard appears; it also lives in your system tray.
- Enable
View > Drag & Drop Modeso the window stays visible while you configure it. - Drag apps onto keys from Explorer / Finder / Files — or right-click a key → Edit and use Quick Select to search installed apps.
- Name your tabs (right-click a number key
1–0→ Edit): e.g.Dev,Work,Media,Games. - Turn off Drag & Drop Mode, press
Alt+`from anywhere, then press your key. Done.
Tip: everything is stored in
~/.config/MaxLaunchpad/. Put that folder in a Git repo and your launcher setup follows you to every machine.
┌─────────────────────────────────────────┐
│ F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 │ Function keys — global, shared across all tabs
├─────────────────────────────────────────┤
│ 1 2 3 4 5 6 7 8 9 0 │ Tab selectors — click or press to switch
├─────────────────────────────────────────┤
│ Q W E R T Y U I O P │
│ A S D F G H J K L ; │ Letter/symbol keys — 30 per tab
│ Z X C V B N M , . / │
└─────────────────────────────────────────┘
10 global function keys + (10 tabs × 30 keys) = 310 shortcuts
Tabs work like tmux sessions for your applications: one tab per context — Dev, Design,
Ops, Games — each with its own full set of 30 bindings.
| Shortcut | Action |
|---|---|
Alt + ` (⌥ + ` on macOS) |
Show / hide MaxLaunchpad (configurable) |
F1 – F10 |
Launch a global shortcut (works on every tab) |
Q–P, A–;, Z–/ |
Launch the shortcut on the active tab |
1 – 0 |
Switch to tab 1–10 |
← / → |
Previous / next tab |
| Mouse scroll over the keyboard | Previous / next tab |
Ctrl+F / Cmd+F |
Search all shortcuts |
Esc |
Close dialog, or hide the window |
| Left-click a key | Launch program |
| Right-click a key | Context menu (Edit / Copy / Cut / Paste / Delete / Open file location) |
| Drop a file on a key | Configure that key |
Alt (tap) |
Reveal the menu bar when it is hidden |
All user data lives in ~/.config/MaxLaunchpad/ on every platform (honouring XDG_CONFIG_HOME):
~/.config/MaxLaunchpad/
├── settings.yaml # App settings & global hotkey (one per machine)
├── keyboard.yaml # Default keyboard profile
├── work.yaml # Additional profiles you create
├── caches/ # Icon cache
├── logs/ # Application logs
├── styles/ # Custom CSS themes
└── backups/ # Timestamped auto-backups
keyboard.yaml — key bindings and tab labels:
tabs:
- id: '1'
label: 'Dev'
- id: '2'
label: 'Work'
keys:
- tabId: 'F' # 'F' = global function-key row
id: F1
label: Help
filePath: 'C:\Windows\HelpPane.exe'
- tabId: '1'
id: Q
label: Calculator
filePath: 'C:\Windows\system32\calc.exe'
description: Launch Calculator
- tabId: '1'
id: O
label: OutlookStoreApp # Microsoft Store / UWP app
filePath: explorer.exe
arguments: shell:appsFolder\Microsoft.OutlookForWindows_8wekyb3d8bbwe!Appsettings.yaml — hotkey, theme, window and UI preferences:
hotkey:
modifiers: [Alt]
key: '`'
activeTabOnShow: lastUsed
lockWindowCenter: true
launchOnStartup: true
startInTray: true
theme: system # light | dark | system
customStyle: default # CSS file name in styles/, without ".css"
windowSize: { width: 1000, height: 600 }
hideElements:
menu: false
buttonIcons: false
buttonText: false
emptyButtons: false
rowF: false
row1: false
row2: false
row3: falseFull schema, validation rules and every option: Product Specification.
- Developers — one tab per stack: IDE, terminal, DB client, API client, log viewer, local docs.
- Sysadmins / DevOps — RDP/SSH sessions, admin consoles and PowerShell scripts with pre-baked arguments and Run as Admin.
- Gamers — a
Gamestab of launchers, mod managers, overlays and voice chat. - Creators — Photoshop, DaVinci, OBS, stream deck-style shortcuts without buying a stream deck.
- Keyboard purists — never touch the mouse, the Dock, the Start menu or the taskbar again.
- Multi-machine users — commit your YAML profile to Git and reproduce your exact workflow on a new laptop in seconds.
| MaxLaunchpad | Spotlight / Alfred / Raycast | Flow Launcher / Wox / Keypirinha / Launchy | Rofi / dmenu | |
|---|---|---|---|---|
| Interaction model | Fixed key → app | Type & search | Type & search | Type & search |
| Keystrokes to launch | 1 (after hotkey) | 3–8 | 3–8 | 3–8 |
| Windows | ✅ | Alfred/Raycast ❌ | ✅ | ❌ |
| macOS | ✅ | ✅ | ❌ | ❌ |
| Linux | ✅ (Ubuntu/Wayland) | ❌ | ❌ | ✅ |
| Visual, spatial layout | ✅ virtual keyboard | ❌ | ❌ | ❌ |
| Plain-text portable config | ✅ YAML | ❌ | partial | ✅ |
| Open source | ✅ | ❌ (mostly) | ✅ | ✅ |
If you loved the discontinued Windows-only MaxLauncher, MaxLaunchpad is the modern, cross-platform continuation of that idea.
Yes. It is an open-source Electron/React/TypeScript desktop app, free for personal and commercial use.
Yes — Windows 10 and Windows 11 are supported.
Yes, macOS 11 Big Sur or later on Apple Silicon. After installing, run
xattr -cr /Applications/MaxLaunchpad.app to remove the quarantine attribute.
MaxLaunchpad targets Ubuntu 24.04 (Wayland). Because Wayland restricts global shortcut registration, you may need to bind the hotkey through GNOME's own keyboard-shortcut settings.
Yes. Everything lives in plain YAML under ~/.config/MaxLaunchpad/. Commit it to Git, sync it with
Dropbox/OneDrive/Syncthing, or copy a single profile file to another machine.
310: ten function keys shared globally, plus ten tabs of thirty letter/symbol keys each.
Yes — .exe, .lnk, .bat, .cmd, .ps1, shell: targets and Store/UWP apps on Windows;
.app bundles and shell scripts on macOS; ELF binaries, .desktop files, .sh, .py and .rb
on Linux. URLs open in your default browser.
Yes. Every shortcut supports arguments, a working directory, a custom icon, a tooltip description, and Run as Admin on Windows.
It is a spiritual successor to the discontinued MaxLauncher, rebuilt from scratch with modern tooling and extended from Windows to macOS and Ubuntu. Profiles use MaxLaunchpad's own YAML format.
~/.config/MaxLaunchpad/logs/ and ~/.config/MaxLaunchpad/backups/. A backup is written before
each save whenever the profile content has changed.
Full manual — installation, usage, every setting, troubleshooting and FAQ:
- 📖 Online manual: https://awesomedog.github.io/maxlaunchpad/
- 📁 In-repo entry point:
./docs/index.md - 📐 Product Specification — feature specs, YAML schema, UI/UX behaviour
- 🏗 Technical Architecture — implementation details, state management, code patterns
If you only want to use MaxLaunchpad, you can stop here. Everything below is for developers and contributors.
- Node.js 22+
- npm 10+
git clone https://github.com/AwesomeDog/maxlaunchpad.git
cd maxlaunchpad
npm install# Development
npm start # Dev mode with hot reload
# Build
npm run make:mac # macOS .app bundle
npm run make:win # Windows installer
npm run make:linux # Linux package
# Quality
npm run lint:fix # Auto-fix ESLint issues
npm test # Jest test suite
# Release
npm version patch && git push && git push --tags # Bump version & trigger CI| Technology | Usage |
|---|---|
| Electron | Application framework |
| React | UI (functional components + hooks) |
| TypeScript | Language |
| Context + useReducer | State management |
| js-yaml | Config parsing |
| zod | Runtime validation |
| Electron Forge + Webpack | Build & packaging |
Project structure
src/
├── main/ # Electron main process
│ ├── main.ts # Entry point, lifecycle
│ ├── window.ts # BrowserWindow management
│ ├── hotkey.ts # Global hotkey registration
│ ├── configStore.ts # YAML config read/write
│ ├── launcher.ts # Program launching
│ ├── iconService.ts # Icon extraction & caching
│ └── ...
├── preload/ # Bridge API (contextBridge)
├── renderer/ # React UI
│ ├── state/ # Context + useReducer store
│ ├── hooks/ # Custom hooks
│ ├── components/ # UI components
│ └── styles/ # CSS
└── shared/ # Shared types & constants
Architecture — three-layer Electron design
┌─────────────────────────────────────────────────────────────┐
│ Main Process (Node.js) │
│ • App lifecycle & window management │
│ • Global hotkey registration (OS-level) │
│ • YAML config I/O & validation │
│ • Program launching & icon extraction │
└─────────────────────────────────────────────────────────────┘
↕ IPC (type-safe)
┌─────────────────────────────────────────────────────────────┐
│ Preload (Security Bridge) │
│ • Exposes window.electronAPI via contextBridge │
│ • Acts as typed contract between layers │
└─────────────────────────────────────────────────────────────┘
↕
┌─────────────────────────────────────────────────────────────┐
│ Renderer (React SPA) │
│ • Virtual keyboard UI & modal dialogs │
│ • Unified state via Context + useReducer │
│ • Zero direct Node.js access (sandboxed) │
└─────────────────────────────────────────────────────────────┘
Issues, feature requests and pull requests are welcome. Bug reports that include your OS version,
MaxLaunchpad version and the relevant lines from ~/.config/MaxLaunchpad/logs/maxlaunchpad.log
are the most useful.
If MaxLaunchpad saves you keystrokes, please ⭐ star the repo — it is the main way other keyboard-driven people find it.
MaxLaunchpad is a spiritual successor to the beloved but now-discontinued MaxLauncher, expanding its legacy from Windows to macOS and Ubuntu.
Keywords: keyboard launcher · application launcher · app launcher for Windows / macOS / Linux · quick launch tool · global hotkey launcher · keyboard shortcuts manager · program launcher · virtual keyboard launcher · MaxLauncher alternative · Launchy / Alfred / Raycast / Flow Launcher alternative · Electron desktop app · productivity tool
