doc/devdocs/readme.md
Welcome to the PowerToys developer documentation. This documentation provides information for developers who want to contribute to PowerToys or understand how it works.
Tip: You can install Visual Studio with all required workloads automatically using the WinGet configuration files in the repository:
powershellwinget configure .config\configuration.wingetPick the file that matches your VS edition (e.g.,
configuration.vsProfessional.wingetorconfiguration.vsEnterprise.winget).
.\tools\build\setup-dev-environment.ps1
This script will:
.vsconfigRun with -Help to see all available options.
PowerToys.slnx file.install extra components in the solution explorer pane, click installAlternatively, import the .vsconfig file from the repository root using Visual Studio Installer to install all required workloads.
This is a one-time step required before you can compile most parts of PowerToys.
git submodule update --init --recursivePowerToys.slnx in Visual Studio.Solutions Configuration drop-down menu select Release or Debug.Build menu choose Build Solution, or press <kbd>Control</kbd>+<kbd>Shift</kbd>+<kbd>b</kbd> on your keyboard.x64\Release\.
x64\Release\PowerToys.exe directly without installing PowerToys, but some modules (i.e. PowerRename, ImageResizer, File Explorer extension etc.) will not be available unless you also build the installer and install PowerToys.You can also build from the command line using the provided scripts in tools\build\:
# Build the full solution (auto-detects platform)
.\tools\build\build.ps1
# Build with specific configuration
.\tools\build\build.ps1 -Platform x64 -Configuration Release
# Build only essential projects (runner + settings) for faster iteration
.\tools\build\build-essentials.ps1
# Build everything including the installer (Release only)
.\tools\build\build-installer.ps1
See Debugging for detailed debugging techniques, including Visual Studio setup, attaching to child processes, and troubleshooting build errors.
See Creating a New PowerToy for an end-to-end guide covering module architecture, settings integration, installer packaging, and testing.
If you want to build your own extensions for Command Palette, check out the Command Palette extensibility documentation. It covers how to create, package, and distribute custom extensions that integrate with Command Palette.
In progress label to the issue, if not already present. Also add a Cost-Small/Medium/Large estimate and make sure all appropriate labels are set.Squash and merge option to merge a PR. If you don't want to squash it because there are logically different commits, use Rebase and merge.Our installer is two parts, an EXE and an MSI. The EXE (Bootstrapper) contains the MSI and handles more complex installation logic.
The installer can only be compiled in Release mode; steps 1 and 2 must be performed before the MSI can be compiled.
PowerToys.slnx. Instructions are listed above.BugReportTool.sln tool. Path from root: tools\BugReportTool\BugReportTool.sln (details listed below)StylesReportTool.sln tool. Path from root: tools\StylesReportTool\StylesReportTool.sln (details listed below)PowerToysSetup.slnx Path from root: installer\PowerToysSetup.slnx (details listed below)See Installer for more details on building and debugging the installer.