Go to file
Dustin L. Howett ad1f20408c
Rewrite the entire Azure DevOps build system (#34984)
This pull request rewrites the entire Azure DevOps build system.

The guiding principles behind this rewrite are:

- No pipeline definitions should contain steps (or tasks) directly.
- All jobs should be in template files.
- Any set of steps that is reused across multiple jobs must be in
  template files.
- All artifact names can be customized (via a property called
  `artifactStem` on all templates that produce or consume artifacts).
- No compilation happens outside of the "Build" phase, to consolidate
  the production and indexing of PDBs.
- All step and job templates are named with `step` or `job` _first_,
  which disambiguates them in the templates directory.
- Most jobs can be run on different `pool`s, so that we can put
  expensive jobs on expensive build agents and cheap jobs on cheap
  build agents. Some jobs handle pool selection on their own, however.

Our original build pipelines used the `VSBuild` task _all over the
place._ This resulted in PowerToys being built in myriad ways, different
for every pipeline. There was an attempt at standardization early on,
where `ci.yml` consumed jobs and steps templates... but when
`release.yml` was added, all of that went out the window.

It's the same story as Terminal (https://github.com/microsoft/terminal/pull/15808).

The new pipelines are consistent and focus on a small, well-defined set
of jobs:

- `job-build-project`
    - This is the big one!
    - Takes a list of build configurations and platforms.
    - Produces an artifact named `build-PLATFORM-CONFIG` for the entire
      matrix of possibilities.
    - Builds all of the installers.
    - Optionally signs the output (all of the output).
    - Admittedly has a lot going on.
- `job-test-project`
    - Takes **one** build config and **one** platform.
    - Consumes `build-PLATFORM-CONFIG`
    - Selects its own pools (hardcoded) because it knows about
      architectures and must choose the right agent arch.
    - Runs tests (directly on the build agent).
- `job-publish-symbols-using-symbolrequestprod-api`
    - Consumes `**/*.pdb` from all prior build phases.
    - Uploads all PDBs in one artifact to Azure DevOps
    - Uses Microsoft's internal symbol publication REST API to submit
      stripped symbols to MSDL for public consumption.

Finally, this pull request has some additional benefits:

- Symbols are published to the private and public feeds at the same
  time, in the same step. They should be available in the public symbol
  server for public folks to debug against!
- We have all the underpinnings necessary to run tests on ARM64 build
  agents.
    - Right now, `ScreenResolutionUtility` is broken
    - I had to introduce a custom version of `UseDotNet` which would
      install the right architecture (🤦); see https://github.com/microsoft/azure-pipelines-tasks/issues/20300.
- All dotnet and nuget versioning is consolidated into a small set of
  step templates.
- This will provide a great place for us to handle versioning changes
  later, since all versioning happens in one place.
2024-09-25 09:23:58 -07:00
.config [Deps]Update Xamlstyler.console to 3.2404.2 (#32567) 2024-06-20 10:15:55 +01:00
.configurations [Dev]Add additional Winget DSC scripts for VS Pro and Enterprise (#31325) 2024-02-08 09:50:37 +00:00
.github Rewrite the entire Azure DevOps build system (#34984) 2024-09-25 09:23:58 -07:00
.pipelines Rewrite the entire Azure DevOps build system (#34984) 2024-09-25 09:23:58 -07:00
deps Update cziplib to 0.25 (#21198) 2022-10-13 00:12:17 +03:00
doc [PTRun][UnitConverter]Use capital letters in DegreePrefixer (#34845) 2024-09-25 13:59:49 +01:00
installer Rewrite the entire Azure DevOps build system (#34984) 2024-09-25 09:23:58 -07:00
src Rewrite the entire Azure DevOps build system (#34984) 2024-09-25 09:23:58 -07:00
tools [Workspaces] Handle admin windows repositioning. (#34965) 2024-09-25 11:13:38 +02:00
.gitattributes Update .gitattributes 2022-07-19 13:06:16 -07:00
.gitignore [DSC] Implement Microsoft.PowerToys.Configure DSCResource & winget support (#30918) 2024-04-02 00:09:47 +01:00
.gitmodules Delete cxxopts (#21197) 2022-10-13 00:09:47 +03:00
.vsconfig Community Toolkit upgrade to 8.1.240821 (after .84 is verified stable) (#34419) 2024-09-12 09:30:44 -07:00
CODE_OF_CONDUCT.md
COMMUNITY.md Update COMMUNITY.md (#32725) 2024-06-12 09:34:32 -07:00
CONTRIBUTING.md Add bot trigger for contribution thread (#28221) 2023-11-15 15:46:52 -08:00
Cpp.Build.props Community Toolkit upgrade to 8.1.240821 (after .84 is verified stable) (#34419) 2024-09-12 09:30:44 -07:00
CppRuleSet.ruleset [Analyzers][CPP] Turn on warning 26493 (#23990) 2023-02-13 16:37:26 +00:00
Directory.Build.props [Build] Set NuGet Audit Mode to Direct to revert changes made with VS 17.12 (#34314) 2024-08-16 11:16:43 +02:00
Directory.Build.targets [Build]Add Microsoft.MSBuildCache (#30100) 2024-01-15 21:45:28 +00:00
Directory.Packages.props Community Toolkit upgrade to 8.1.240821 (after .84 is verified stable) (#34419) 2024-09-12 09:30:44 -07:00
LICENSE
NOTICE.md Community Toolkit upgrade to 8.1.240821 (after .84 is verified stable) (#34419) 2024-09-12 09:30:44 -07:00
nuget.config [EnvVar][Hosts][RegPrev]Decouple and refactor to make it "packable" as nuget package (#32604) 2024-04-26 18:41:44 +01:00
packages.config Update MSBuildCache to 0.1.283-preview (#33988) 2024-07-24 12:18:24 -07:00
PowerToys.sln [Workspaces] Handle admin windows repositioning. (#34965) 2024-09-25 11:13:38 +02:00
README.md Update README.md to include 0.84.1 hashes (#34753) 2024-09-10 10:44:19 -07:00
SECURITY.md Update SECURITY.md from 0.0.2 to 0.0.9 (#28289) 2023-09-06 09:14:28 -07:00
Settings.XamlStyler [Build]Use XamlStyler to check XAML formatting (#28643) 2023-10-09 15:58:13 +01:00
Solution.props [PowerRename] Fluent UX (#13678) 2021-10-25 14:40:19 +01:00
SUPPORT.md [Docs]Replace docs.micrososft.com with learn.microsoft.com (#20662) 2022-09-28 17:18:55 +01:00

Microsoft PowerToys

Hero image for Microsoft PowerToys

How to use PowerToys | Downloads & Release notes | Contributing to PowerToys | What's Happening | Roadmap

Build status

Architecture Solution (Main) Solution (Stable) Installer (Main)
x64 Build Status for Main Build Status for Stable Build Status Installer pipeline
ARM64 Build Status for Main Build Status for Stable Build Status Installer pipeline

About

Microsoft PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. For more info on PowerToys overviews and how to use the utilities, or any other tools and resources for Windows development environments, head over to learn.microsoft.com!

Current utilities:
Advanced Paste Always on Top PowerToys Awake
Command Not Found Color Picker Crop And Lock
Environment Variables FancyZones File Explorer Add-ons
File Locksmith Hosts File Editor Image Resizer
Keyboard Manager Mouse utilities Mouse Without Borders
Peek Paste as Plain Text PowerRename
PowerToys Run Quick Accent Registry Preview
Screen Ruler Shortcut Guide Text Extractor
Video Conference Mute Workspaces

Installing and running Microsoft PowerToys

Requirements

  • Windows 11 or Windows 10 version 2004 (code name 20H1 / build number 19041) or newer.
  • x64 or ARM64 processor
  • Our installer will install the following items:

Go to the Microsoft PowerToys GitHub releases page and click on Assets at the bottom to show the files available in the release. Please use the appropriate PowerToys installer that matches your machine's architecture and install scope. For most, it is x64 and per-user.

Description Filename sha256 hash
Per user - x64 PowerToysUserSetup-0.84.1-x64.exe 1CDAF3482B031D84DAE15188DE292FB44C5D211698089921040D94B256EBD3CA
Per user - ARM64 PowerToysUserSetup-0.84.1-arm64.exe E0207EF5147EE281D4F438E87A30586D8CAA24DE948950FF1B12E05454622CD9
Machine wide - x64 PowerToysSetup-0.84.1-x64.exe 10DF9774DE1857051E135B9790A18A92C5C7F42587C733DEE991186E67231EE0
Machine wide - ARM64 PowerToysSetup-0.84.1-arm64.exe EB5DDA5EFBA17E813DBF24AFF668DDF5424ED3659234ABBC15441D478D812699

This is our preferred method.

Via Microsoft Store

Install from the Microsoft Store's PowerToys page. You must be using the new Microsoft Store which is available for both Windows 11 and Windows 10.

Via WinGet

Download PowerToys from WinGet. Updating PowerToys via winget will respect current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell:

User scope installer [default]

winget install Microsoft.PowerToys -s winget

Machine-wide scope installer

winget install --scope machine Microsoft.PowerToys -s winget

Other install methods

There are community driven install methods such as Chocolatey and Scoop. If these are your preferred install solutions, you can find the install instructions there.

Third-Party Run Plugins

There is a collection of third-party plugins created by the community that aren't distributed with PowerToys.

Contributing

This project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.

We ask that before you start work on a feature that you would like to contribute, please read our Contributor's Guide. We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.

Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you grant us the rights to use your contribution and that you have permission to do so.

For guidance on developing for PowerToys, please read the developer docs for a detailed breakdown. This includes how to setup your computer to compile.

What's Happening

PowerToys Roadmap

Our prioritized roadmap of features and utilities that the core team is focusing on.

0.84 - August 2024 Update

In this release, we focused on adding a new utility (PowerToys Workspaces), Advanced paste custom actions feature, stability, and improvements.

Highlights

  • New utility: PowerToys Workspaces - this utility can launch a set of applications to a custom layout and configuration on the desktop. App arrangements can be saved as a workspace and then relaunched with one click from the Workspaces Editor or from a desktop shortcut. In the editor, app configuration can be customized using CLI arguments and "launch as admin" modifiers, and app window sizes and positions can be updated as desired. This is our first public version of Workspaces and we are excited for you to try it out for yourself! Make sure to file issues you encounter on our GitHub so the team can continue to improve the utility.
    • Known issues - the team is actively working on fixing these:
      • Apps that launch as admin are unable to be repositioned to the desired layout.
      • Border of "Remove" / "Add Back" app button in editor is not clearly visible on light themes.
  • Added Awake --use-parent-pid CLI argument to attach to parent process. Thanks @dend!
  • Added custom actions - user-specified pre-defined prompts for the AI model. Additionally, actions (both standard and custom) are now searchable from prompt box and Ctrl + number in-app shortcuts are now applicable for first 9 search results.
  • Ported all C++/CX code to C++/WinRT as part of a refactor and upgrade series aimed at enabling AOT (Ahead of Time) compilation for enhanced performance and reduced disk footprint.

General

  • Added DSC support for ImageResizer resize sizes property.

Advanced Paste

  • Added custom actions - user-specified pre-defined prompts for the AI model. Additionally, actions (both standard and custom) are now searchable from prompt box and Ctrl + number in-app shortcuts are now applicable for first 9 search results.

Awake

  • Added --use-parent-pid CLI argument to attach to parent process and fixed issue causing tray icon to disappear. Thanks @dend!

Hosts File Editor

File Explorer add-ons

  • Fixed multiple preview form positioning issues causing floating, detached windows, CoreWebView2 related exception and process leak. Thanks @davidegiacometti!

Keyboard Manager

  • Convert RemapBufferRow to a struct with descriptive field names. Thanks @masaru-iritani!
  • Fixed issue causing stuck Ctrl key when shortcuts contain AltGr key.

Peek

Quick Accent

PowerRename

  • Updated the tooltip text of the replace box info button. Thanks @Agnibaan!

PowerToys Run

  • Fixed window positioning on start-up introduced in 0.83.
  • Improved default web browser detection. Thanks @davidegiacometti!
  • Fixed volume ounces conversion to support both imperial and metric. Thanks @GhostVaibhav!
  • Fixed thread-safety issue causing results not to be shown on first launch.

Screen Ruler

  • Added multiple measurements support for all measuring tools.

Settings

  • Improved disabled animations InfoBar in Find My Mouse page. Thanks @davidegiacometti!

Workspaces

  • New utility: PowerToys Workspaces - this utility can launch a set of applications to a custom layout and configuration on the desktop. App arrangements can be saved as a workspace and then relaunched with one click from the Workspaces Editor or from a desktop shortcut. In the editor, app configuration can be customized using CLI arguments and "launch as admin" modifiers, and app window sizes and positions can be updated as desired. This is our first public version of Workspaces and we are excited for you to try it out for yourself! Make sure to file issues you encounter on our GitHub so the team can continue to improve the utility.

Documentation

  • Added ChatGPTPowerToys plugin mention to thirdPartyRunPlugins.md. Thanks @ferraridavide!

Development

  • Ported all C++/CX code to C++/WinRT.
  • Moved Version.props import to Directory.Build.props.
  • Extracted self-containment related .csproj properties to src/Common.SelfContained.props.
  • Unused and obsolete dependencies cleanup. Thanks @davidegiacometti!
  • Extracted CSWinRT related .csproj properties to src/Common.Dotnet.CsWinRT.props.
  • Upgraded Microsoft.Windows.CsWinRT to 2.0.8 and updated verifyDepsJsonLibraryVersions.ps1 to unblock PRs.
  • Explicitly Set NuGet Audit Mode to Direct in Directory.Build.props to revert changes made with VS 17.12 update. Thanks @snickler!
  • Upgraded UnitsNet to 5.56.0.

What is being planned for version 0.84

For v0.85, we'll work on the items below:

  • Stability / bug fixes
  • Language selection
  • New module: File Actions Menu
  • New module: New+

PowerToys Community

The PowerToys team is extremely grateful to have the support of an amazing active community. The work you do is incredibly important. PowerToys wouldnt be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Month by month, you directly help make PowerToys a better piece of software.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct.

Privacy Statement

The application logs basic telemetry. Our Telemetry Data page (Coming Soon) has the trends from the telemetry. Please read the Microsoft privacy statement for more information.