This session demonstrates the extensibility model of PowerToys Command Palette, the next generation of PowerToys Run. Through live coding, the speakers build a complete Command Palette extension from scratch in under 15 minutes, showcasing the SDK, best practices for handling latency, rich UI components, and the distribution model for community extensions.
Key Topics Covered
?? 1. PowerToys Command Palette Overview
Next Generation Launcher
Built from Scratch with WinUI:
Performance focus - “Blazing fast” execution and response times
Accessibility improvements - Enhanced screen reader and keyboard navigation support
Modern architecture - Complete rewrite from PowerToys Run foundation
Extensibility-first design - SDK and plugin architecture from day one
Core Functionality Demonstration
Basic Features:
Application launcher - Fast app discovery and launch
File search - Quick access to documents and projects
Workflow integration - issue triage without leaving Command Palette
Session Highlights
“Any app can plug into the Windows Command Palette and add their own commands and their own little snippets of functionality straight to it that give all the power of your app right at the user’s fingertips.” - Niels Laute
“It’s like a small command palette inside of a bigger command palette.” - Mike Griese (on nested commands)
“We can build an extension in like 13 minutes, not 15, including documentation.” - Niels Laute
“Creating an account on the Microsoft Store to submit your apps or publishing Command Palette extensions is now totally free.” - Niels Laute
Getting Started Guide
Prerequisites
PowerToys installed - Latest version with Command Palette enabled
Visual Studio - Development environment for C# extensions
SDK familiarity - Basic understanding of C# and UI development
Step-by-Step Extension Creation
Launch Command Palette (default: Alt+Space)
Run “Create new extension” command
Provide extension name and location
Open generated solution in Visual Studio
Modify CommandProvider.cs to add your commands
Build and deploy extension
Reload Command Palette to test changes
Essential Code Patterns
Basic Command:
yieldreturnnew CommandItem{ Title ="My Command", Command =newProcessCommand("cmd.exe"), Icon = IconInfo.FromEmoji("?")};
Microsoft Store: Free publishing for individual developers
GitHub Samples: Example extensions and templates
Community Extensions: Growing ecosystem of user-contributed extensions
About the Speakers
Mike Griese
Senior Software Engineer
Microsoft Expert on Terminal, PowerToys, Command Palette, and command-line development tools for Windows.
Niels Laute
Senior Software Engineer
Microsoft Windows Developer Platform team member working on AI Dev Gallery, Windows Community Toolkit, and Microsoft PowerToys.
This session demonstrates Microsoft’s commitment to extensible developer tools, showing how a powerful application launcher can be extended by the community to create rich, integrated development experiences that bring application functionality directly to users’ fingertips.