Overview
Command Palette (CmdPal) is an extensible, modern command launcher that serves as the next iteration of PowerToys Run. With extensibility at its core, it provides a unified interface to start anything, run commands, and interact with system features through a plugin architecture.Activation
1
Enable Command Palette
Open PowerToys Settings and enable Command Palette
2
Open Launcher
Press the activation shortcut:
Win+Alt+Space (default)3
Start Typing
Enter commands, search queries, or action triggers
Key Features
Extensible Architecture
Extension System
WinRT-based plugin interfaceLanguage-agnostic extension development
Command Providers
Custom command sourcesIntegrate any data or action
Page Extensions
Full UI extensionsCustom interfaces within palette
Native Integration
Built-in PowerToys commandsSystem-level integration
Extension Development
Create extensions in any language supporting WinRT:Built-in Features
Command Palette includes these capabilities out of the box:- Application Launcher
- File Search
- Calculator
- System Commands
- Launch installed applications
- Search Start Menu items
- Open UWP and Win32 apps
- Recent app suggestions
Creating Extensions
The fastest way to create an extension:1
Run Create Command
Open Command Palette and run “Create extension”
2
Provide Details
Enter project name, display name, and output directory
3
Open Solution
Navigate to the generated
.sln file and open in Visual Studio4
Build & Deploy
Build the project - it automatically deploys to Command Palette
Configuration
Activation Shortcut
hotkey
default:"Win+Alt+Space"
Global hotkey to open Command PaletteConfigurable in PowerToys Settings
Extension Management
Manage installed extensions:- Open Command Palette
- Type “extensions” or “plugins”
- View installed extensions
- Enable/disable individual extensions
- Configure extension settings
Search Behavior
number
default:"10"
Maximum number of results to display
number
default:"150"
Debounce delay for search queries (milliseconds)
boolean
default:"true"
Enable fuzzy search for command matching
Use Cases
Quick Actions
Launch Applications
Launch Applications
Fastest way to open applications:
Calculations
Calculations
Quick math without opening calculator:
Developer Workflows
System Management
Settings Access
Quick access to Windows settings
Win+Alt+Space → "settings display"PowerToys Control
Manage PowerToys utilities
Win+Alt+Space → "powertoys color picker"Process Management
Extension for task managementCustom commands for process control
Power Options
Quick power commandsShutdown, restart, sleep actions
Custom Integrations
Examples of custom extensions:- API Testing: Quick REST API calls
- Cloud Services: Interact with Azure, AWS, etc.
- Database Queries: Run quick database lookups
- Documentation: Search local documentation
- Snippets: Insert code snippets
- DevOps: Trigger CI/CD pipelines
Extension Development
Getting Started
1
Install Prerequisites
- Visual Studio 2022+ with C++ and .NET workloads
- Windows SDK 10.0.26100.0+
- PowerToys installed
2
Create Extension Project
Use the “Create extension” command in Command PaletteOr manually with project template
3
Implement Interface
Implement
ICmdPalExtension interface:4
Build & Test
Build project - extension auto-deploys to Command PaletteTest immediately in running instance
Extension Types
- Command Providers
- Page Extensions
- Form Pages
Provide searchable commands:
Extension Packaging
Package and distribute extensions:Sample Extensions
Official samples in repository:- Generic samples:
src/modules/cmdpal/ext/SamplePagesExtension - Real-world samples:
src/modules/cmdpal/ext/ProcessMonitorExtension - Shipped extensions: GitHub - CmdPalExtensions
src/modules/cmdpal/README.md:48
Technical Details
Architecture
Key Projects
Build location:
src/modules/cmdpal
Extension SDK
The extension interface is designed to be language-agnostic:src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md
Extension Discovery
Command Palette discovers extensions through:- Installation Directory:
%LOCALAPPDATA%\Microsoft\PowerToys\CommandPalette\Extensions - Package Registration: Windows package registration
- Development Mode: Direct DLL loading for debugging
Keyboard Shortcuts
Global
In Command Palette
Troubleshooting
Command Palette won't open
Command Palette won't open
Check:
- PowerToys is running
- Command Palette enabled in settings
- Shortcut not conflicting
- Check PowerToys logs
- Try alternate activation shortcut
- Restart PowerToys
Extension not loading
Extension not loading
Verify:
- Extension built successfully
- Extension in correct directory
- Extension manifest valid
- Dependencies installed
%LOCALAPPDATA%\Microsoft\PowerToys\CommandPalette\ExtensionsLogs: Check Command Palette logs for load errorsExtension crashes Command Palette
Extension crashes Command Palette
Steps:
- Disable extension
- Review extension error handling
- Check exception logs
- Debug extension in Visual Studio
- Wrap extension code in try-catch
- Validate all inputs
- Handle async operations properly
Search results not appearing
Search results not appearing
Check:
- Extension implementing search correctly
- Query parsing logic
- Result filtering
- Performance (timeout issues)
See Also
- PowerToys Run - Previous generation launcher
- Extension Development Guide
- Sample Extensions
- Command Not Found - Shell integration