Skip to main content

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.
Command Palette is currently in preview. The API may introduce breaking changes before reaching v1.0.0 stability.

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:
API Documentation: Microsoft Learn - Command Palette Extensibility

Built-in Features

Command Palette includes these capabilities out of the box:
  • 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 Studio
4

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:
  1. Open Command Palette
  2. Type “extensions” or “plugins”
  3. View installed extensions
  4. Enable/disable individual extensions
  5. 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

Fastest way to open applications:
Quick math without opening calculator:
Jump to files and folders:

Developer Workflows

System Management

Settings Access

Quick access to Windows settingsWin+Alt+Space → "settings display"

PowerToys Control

Manage PowerToys utilitiesWin+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

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
Source reference: 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:
SDK Spec: src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md

Extension Discovery

Command Palette discovers extensions through:
  1. Installation Directory: %LOCALAPPDATA%\Microsoft\PowerToys\CommandPalette\Extensions
  2. Package Registration: Windows package registration
  3. Development Mode: Direct DLL loading for debugging

Keyboard Shortcuts

Global

In Command Palette

Troubleshooting

Check:
  • PowerToys is running
  • Command Palette enabled in settings
  • Shortcut not conflicting
Debug:
  • Check PowerToys logs
  • Try alternate activation shortcut
  • Restart PowerToys
Verify:
  1. Extension built successfully
  2. Extension in correct directory
  3. Extension manifest valid
  4. Dependencies installed
Location: %LOCALAPPDATA%\Microsoft\PowerToys\CommandPalette\ExtensionsLogs: Check Command Palette logs for load errors
Steps:
  1. Disable extension
  2. Review extension error handling
  3. Check exception logs
  4. Debug extension in Visual Studio
Best practices:
  • Wrap extension code in try-catch
  • Validate all inputs
  • Handle async operations properly
Check:
  • Extension implementing search correctly
  • Query parsing logic
  • Result filtering
  • Performance (timeout issues)
Performance tip: Return results quickly, use async for slow operations

See Also