Editorial Note: I am publishing this on behalf of the Dev Platform Team.
PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. Inspired by the Windows 95 era PowerToys project, this reboot provides power users with utilities to squeeze more efficiency out of the Windows 10 shell and customize it for individual workflows. Check out this great overview of the Windows 95 PowerToys.
The first preview release of PowerToys contains two utilities with all the code for the project on GitHub. The repo also contains the information and tools you need to understand how the PowerToys’ utilities work together and how to create your own utilities.
To kick the tires on the first two utilities, download the installer here. The main PowerToys service runs when Windows starts and a user logs in. When the service is running, a PowerToys icon appears in the system tray. Selecting the icon launches the PowerToys settings UI. The settings UI lets you enable and disable individual utilities and provides settings for each utility. There is also a link to the help doc for each utility. You can right click the tray icon to quit the Power Toys service.
Note that some PowerToys functionality requires running in an elevated process. Elevation is required to interact with and manipulate windows from processes that have a higher set of rights than the current user. This is why the PowerToys.exe requests elevation when launched.
If you find bugs or have suggestions, please open an issue in the Power Toys GitHub repo. The backlog for creating new utilities is here. You can provide feedback on the backlog to suggest new ideas or a different priority order by joining the backlog discussion in this issue.
First two utilities
This first preview of PowerToys contains two utilities. The Windows key shortcut guide and a window manager called FancyZones.
Windows key shortcut guide
The Windows key shortcut guide is a full screen overlay utility that provides a dynamic set of Windows key shortcuts that are applicable for the given desktop and currently active window. When the Windows key is held down for one second, (this time can be tuned in settings,) an overlay appears on the desktop showing all available Windows key shortcuts and what action those shortcuts will take given the current state of the desktop and active window. If the Windows key continues to be held down after a shortcut is issued, the overlay will remain up and show the new state of the active window.
FancyZones is a window manager that is designed to make it easy to arrange and snap windows into efficient layouts for your workflow, and also to restore these layouts quickly. FancyZones allows the user to define a set of window locations for a desktop that are drag targets for windows. When the user drags a window into a zone, the window is resized and repositioned to fill that zone.
To get started with FancyZones, you need to enable the utility in the PowerToys settings, and then invoke the FancyZones setup UI. There’s a button in settings to open this UI, or you can press Win+~ to launch it. When first launched, the UI presents a list of zone layouts that can be quickly adjusted by how many windows are on the monitor. Choosing a layout shows a preview of that layout on the monitor. Pressing the save and close button sets that layout to the monitor.
The editor also supports creating and saving custom layouts. This functionality is in the Custom tab in the editor UI. There are two ways to create custom zone layouts, window layout and table layout. These can also be thought of as additive and subtractive models. The additive window layout model starts with a blank layout and supports adding zones that can be dragged and resized, similar to windows.
The subtractive table layout model starts with a table layout and allows zones to be created by splitting and merging zones and then resizing the gutter between zones.
Community led and developed in the open
Our goal for the PowerToys project is for it to be an extension of the Windows power user community and for it to provide the functionality these users find most valuable. Our backlog of utilities is on GitHub, and we encourage the community to provide feedback on the backlog in this issue. Each utility has its own feature backlog. You can also contribute to the Windows shortcut guide backlog and the FancyZones backlog. For new utility suggestions, please create a new issue to discuss the idea.
Creating your own PowerToys utilities
While opening bug reports, feature suggestions, and feedback on the backlog are all incredibly valuable for this project, if you’re one of the many power users that are also developers, you can contribute directly to the product.
When the PowerToys project was first announced this spring, we didn’t think the reception would be as enthusiastic as it has been. The project started with just an empty repo, with a roadmap and a place for power users to provide suggestions and ideas. However, over 4000 users starred the repo, showing a strong interest in the project. Given this enthusiasm, we’re anticipating many developers will want to contribute to PowerToys, and we’ve made sure that the documentation, project architecture, and tools are ready for the community to dive in.
Before getting started, it’s worthwhile to read the contribution guidelines for the project. After that, you should read the “Developer Guidance” section of the PowerToys readme, which has a link to the new PowerToys utility Visual Studio template. Each utility is a .dll, which is loaded by the PowerToys runtime and each utility can provide settings to the PowerToys settings framework with a JSON blob. The settings UI takes this JSON and automatically creates a settings UI for the utility. More information on the settings format can be found in the Settings spec.
If you’ve got questions or feedback on creating your own PowerToys, please create an issue. We’re looking forward to seeing the enthusiasm of the community and how it will guide PowerToys.