After the latest PowerToys update I have one less reason to swap from Windows 11 to Linux
The latest PowerToys update introduces two new utilities and major refinements across the suite.
The latest update to PowerToys includes new features that Windows and Linux users will love. On top of a number of general improvements and bug fixes, PowerToys v0.99.0 adds two new utilities, and one of them may stop Windows users from flirting with Linux.
As I've shared in recent editions of the Windows Wrap, I'm quite happy with the direction Windows is going in. Microsoft is working to improve its flagship operating system and the culture surrounding feedback.
All signs are positive, but Microsoft needs to continue on this path. If Windows 11 keeps some of its biggest weaknesses, I may look at Linux again.
Article continues belowIt's easier than ever to migrate from Windows to Linux and there are several areas in which Linux beats Windows 11 (though Windows remains the better choice for most people).
But now there's one less reason to switch from Windows to Linux, albeit a small one. The most recent update to PowerToys adds a new utility called Grab And Move that lets you resize and drag windows without having to click the title bar or window edge.
By default, Grab And Move is set to move a window when you hold Alt + Left Click and resize a window when you hold Alt + Right Click. You can set the utility to use the Windows key rather than Alt if you'd like.
PowerToys v0.99.0 also adds Power Display, which is a new utility that lets you adjust your monitors through the system tray.You can already adjust system brightness through the system tray, but that feature is limited when using multi-monitor setups or certain displays.
All the latest news, reviews, and guides for Windows and Xbox diehards.
On my setup, the built-in Windows 11 brightness slider only adjusts the screen of my laptop. To adjust my external monitor's brightness, I need to use buttons on the display. Power Display lets me adjust both from the same menu.
Below is the full changelog for the latest PowerToys update. You can read more about the changes on the app's GitHub page.
View the full changelog ↴
PowerToys v0.99.0
Advanced Paste
- Eliminated 13 XAML compiler warnings by switching x:Bind expressions on non-observable properties from OneWay to OneTime mode in #46726
- Fixed auto-copy failing on Electron/Chromium apps (e.g. Teams, VS Code) by releasing held modifier keys before injecting Ctrl+C in #46486
Always On Top
- Fixed the pin/unpin sound playing even when the operation failed by gating sound playback on whether SetWindowPos actually succeeded in #46910
Command Palette (Dock)
- Added a new pin-to-Dock dialog that gives users more control over how commands are pinned, replacing the previous one-click pin behavior in #46436. Thanks @niels9001!
- Added a Compact Dock mode (28px tall, subtitle hidden) for Top/Bottom dock positions, and hid the Dock Size setting for Left/Right positions in #46699
- Made the Dock window stay on top of all other windows by default, automatically yielding when a full-screen app is detected in #46163. Thanks @jiripolasek!
- Decoupled the Dock context menu from the Command Bar's active item so it no longer updates when a different list item is selected, and made the Dock search box position follow the Dock position in #46420. Thanks @jiripolasek!
- Fixed duplicate dock bands caused by missing duplicate check when pinning in #46438
- Fixed a build-breaking merge inconsistency in DockWindow.xaml.cs in #46639. Thanks @jiripolasek!
- Fixed the Dock not reflecting pin/unpin changes until restart in #47169
- Fixed the Dock window showing a visible frame on startup by hiding the DWM border during window creation in #47187
Extensions & SDK
- Added plain text viewer and image viewer IContent types to the extension SDK in #43964. Thanks @jiripolasek!
- Added persistent calculator history with save, reuse, delete, and clear actions, configurable primary action, and replace-query-on-enter behavior in #45307. Thanks @jiripolasek!
- Added a NetworkSpeedUnit choice setting to the Performance Monitor extension (bits/s, decimal bytes/s, IEC binary bytes/s) in #46320. Thanks @niels9001!
- Enabled dock pinning of Windows Terminal profiles with per-profile icons, and hardened GUID parsing so a malformed profile entry no longer breaks the whole list in #46372
- Assigned stable IDs to FancyZones layout commands in the PowerToys extension so users can pin individual layouts to the dock in #46198. Thanks @vanzue!
- Hardened the Performance Monitor extension with exception handling and crash recovery via a sentinel file mechanism in #46541. Thanks @jiripolasek!
- Gave each built-in extension its own settings file with transparent one-time migration from the legacy shared settings.json in #46685. Thanks @michaeljolley!
- Shipped Copilot instructions and 5 skills (publish-extension, add-adaptive-card-form, add-extension-settings, add-dock-band, add-fallback-commands) inside the extension template in #46683. Thanks @niels9001!
- Fixed invisible/corrupted icons in newly created extensions by extracting template expansion into a dedicated service that no longer rewrites binary files in #46490. Thanks @jiripolasek!
- Fixed a Watson crash where a single extension in a bad state would kill the entire extension-loading loop in #47032
- Fixed right-click context menus failing to open on the first attempt for slow out-of-process third-party extensions in #46626. Thanks @jiripolasek!
- Fixed the Settings toggle for disabling fallback commands from out-of-process extensions by switching the type check from a concrete class to the WinRT interface in #47127
- Simplified the Time & Date extension page to recalculate results on every query rather than caching, breaking a potential infinite update loop in #46396. Thanks @jiripolasek!
- Fixed Calculator extension unit tests failing under non-English cultures in #46911. Thanks @niels9001!
Search & Indexer
- Improved indexer search with implicit filename broadening for plain free-text queries, retry-with-literal matching for punctuation-heavy searches, and a Windows Search availability indicator in #46907. Thanks @jiripolasek!
- Fixed a crash when converting large calculator results to hex/oct/bin by switching the secondary-results base conversion to BigInteger with a custom base converter in #46176. Thanks @jiripolasek!
- Split the full-screen shortcut guard into separate full-screen and busy checks with an opt-in IgnoreShortcutWhenBusy setting, added a live diagnostic InfoBar, and introduced an opt-in triple-press breakthrough to bypass suppression in #45891. Thanks @jiripolasek!
- Fixed the Window Walker Close window command to respect the "Keep open after closing window" setting and automatically refreshed the window list in #45721. Thanks @jiripolasek!
Reliability & UX
- Fixed a 100% reproducible crash when typing in the search box by adding a reentrancy guard around filtered-items mutations in #47148. Thanks @MuyuanMS!
- Fixed a second typing crash that occurred when the indexer fallback was enabled by correcting a P/Invoke function signature in #47186
- Hardened ListViewModel item-fetch synchronization with copy-on-write cache publication, latest-fetch-wins semantics, and improved cancellation cleanup in #46429. Thanks @jiripolasek!
- Refactored settings and app state to be immutable end-to-end to eliminate concurrency race conditions in #46451. Thanks @michaeljolley!
- Added a CanGoBack guard to Frame.GoBack, preventing a crash when navigating back with an empty navigation stack in #46493. Thanks @jiripolasek!
- Fixed duplicate and contradictory Pin to Dock/Unpin from dock context menu entries appearing on top-level home-page items in #46458. Thanks @michaeljolley!
- Prevented PgUp/PgDown paging from landing on non-interactive entries like separators and section headers in #46439. Thanks @jiripolasek!
- Fixed keyboard focus restoration on the Extensions settings page so Shift+Tab returns to the previously selected extension card in #45903. Thanks @jiripolasek!
- Reverted focus-restoration on the Extensions settings page that was causing clicks to open the wrong extension item in #46642. Thanks @jiripolasek!
- Fixed inline code (backtick text) in the Details and Content panels being invisible on light-theme backgrounds in #46739. Thanks @michaeljolley!
- Fixed the Window Walker "Not Responding" tag being illegible in dark mode in #46924. Thanks @niels9001!
- Fixed a WinUI layout bug where the settings page content was visually offset when wrapped in a ScrollViewer with MaxWidth in #46568
- Fixed a regression in PinToDockDialogContent.xaml where a type rename was missed during a merge gap in #46599. Thanks @jiripolasek!
- Fixed a screen reader accessibility issue where the Alias text box announced "Enter Alias" instead of just "Alias" in #45906
- Added screen reader announcements for shortcut key information on the settings button in #46164. Thanks @chatasweetie and @jiripolasek!
- Removed redundant container-level tab stops in the details panel for improved keyboard accessibility in #46346. Thanks @chatasweetie!
Infrastructure & Code Quality
- Extracted persistence and file I/O logic from SettingsModel and AppStateModel into dedicated service classes in #46312. Thanks @michaeljolley!
- Introduced CmdPalLogger, CmdPalLoggerProvider, and an extension method integrating Microsoft.Extensions.Logging with ManagedCommon.Logger in #46768. Thanks @michaeljolley!
- Bumped all CommunityToolkit.WinUI packages from 8.2.250402 to 8.2.251219 and removed three SearchBar workaround hacks in #46027. Thanks @niels9001!
- Enabled telemetry event firing correctly in AOT builds by adding EventSourceSupport in #47121
- Updated the extension solution filter files to include new transitive dependencies and added a leaner SLNF for faster developer builds in #46896. Thanks @jiripolasek!
- Updated the Microsoft.CmdPal.Ext.PowerToys solution filter file to include missing project dependencies in #46136. Thanks @jiripolasek and @vanzue!
- Removed a legacy workaround for FontIconSource.CreateIconElement (fixed in WinAppSDK 1.8.4) in #45790. Thanks @jiripolasek!
- Moved developer documentation to doc/devdocs/modules/cmdpal to align with other PowerToys modules in #46926. Thanks @niels9001!
- Bumped Command Palette version to 0.10 in #47181
Image Resizer
- Migrated Image Resizer from WPF to WinUI 3, unblocking future AOT compilation and aligning with Windows 11 design language in #45288. Thanks @moooyo and @niels9001!
- Restored honoring the user-configured JPEG quality setting when resizing JPEGs, which had been silently ignored at a fixed ~Q90 default after the WinUI 3 migration in #47134
- Fixed missing PNG encoder settings by applying codec-specific encoder properties in the transcode path in #46695. Thanks @moooyo!
- Fixed a regression where JsonPropertyName attributes were not forwarded by the ObservableProperty generator, restoring correct JSON serialization in #47056
Keyboard Manager
- Reverted multiline text replacement back to character-by-character sending with Shift+Enter for newlines, fixing multiline replacements in chat apps and plain editors in #46794
- Addressed code review feedback on manual key selection: fixed localization, centralized VK_DISABLED constants, added validation for disable mappings, fixed dropdown revert logic, and plugged Process handle leaks in #46377
Light Switch
- Fixed Light Switch and PowerDisplay integration by re-enabling the Apply monitor settings expander and disabled-warning InfoBar in Settings, and ensuring every hotkey press notifies PowerDisplay instead of only every other press in #47190
Mouse Utilities
- Refactored PadImage in PowerOCR (Text Extractor) to improve memory management and nullability clarity in #44906. Thanks @adelobosko!
Peek
- Added auto-detection of file name encoding when previewing zip files, fixing garbled text for archives created on non-UTF-8 systems in #44799. Thanks @oxygen-dioxide!
Power Display
- Re-enabled the PowerDisplay module with a new icon/logo, DPI fixes, UI/UX improvements, and installer integration in #46489
- Cleaned up the PowerDisplay module by fixing resource leaks, removing dead code, converting a recursive parser to iterative, and changing the default activation shortcut to Win+Ctrl+Shift+P in #46979
- Fixed thread safety by marking shared fields as volatile, guarding color temperature writes behind a capability check, and correcting a misleading log message in #47008
- Fixed PowerDisplay startup restore, volume initialization, and Identify window lifecycle in #47051
- Introduced a shared flyout positioning helper used by PowerDisplay and Quick Access, fixing taskbar overlap at 100% scaling and off-screen rendering after DPI changes in #47097
- Polished Power Display by standardizing the module name, shrinking the flyout slightly, and removing dead code in #47163
PowerToys Run
- Fixed a command breakout in the Shell plugin by escaping double quotes in the command string, while still allowing environment variables to expand in #45554. Thanks @RinZ27!
- Removed unused XAML namespace declarations from PowerLauncher XAML files in #46221. Thanks @niels9001!
Quick Accent
- Added subscript and superscript Unicode characters to the Special Characters set for keys 0-9, A, E, N, X, Y, Z, and math operators in #45540. Thanks @Salehnaz!
- Added the missing Icelandic accented letter í to the VK_I key definition in #46424. Thanks @squirrelslair!
- Added Shift+N capitalization support for superscript Latin small letter n in #46571. Thanks @PesBandi!
- Restored the en-dash character under the VK_MINUS key in the Special Characters set in #47106
- Fixed the default "All available" language setting silently falling back to a small character set due to parsing issues, added case-insensitive parsing with invalid-entry warnings, and added two new Hungarian character mappings in #47117. Thanks @daverayment!
Settings
- Fixed the Settings shortcut/key visuals so arrow glyphs (up/down/left/right) render as proper FontIcon glyphs instead of literal text in #46454. Thanks @vanzue!
- Formatted the last checked for updates timestamp as friendly relative strings (Today at 1:22 PM, Yesterday at 3:45 PM) in #46923
- Fixed Dashboard layout issues by removing excessive empty scroll space, restoring responsive behavior, and correcting a 1-pixel vertical alignment mismatch in #46922
- Fixed the Quick Accent character-sets grid being clipped and showing an inner horizontal scrollbar, so the list reflows from 3 to 2 to 1 columns on resize in #45986. Thanks @daverayment!
- Renamed the shortcut conflict checkbox label from "Ignore shortcut" to "Ignore conflict" for clarity in #46318
- Fixed the backup folder path being visually clipped on the General and Image Resizer pages in #46920
- Refreshed Settings UI assets and copy: fixed a ZoomIt page regression, updated the Command Palette settings page with current links and screenshots, and added missing overview screenshots in #47132
- Fixed missing images in the Settings UI by adjusting the project file so image assets are packaged correctly in #47165
- Tweaked wording on a handful of Settings strings for clarity and consistency in #47164
Text Extractor
- Removed the third-party WPF-UI library in favor of native WPF Fluent theming with custom control templates in #46218
Window Manager (Grab And Move)
- Added the Grab And Move module enabling Alt+Left Click window dragging and Alt+Right Click window resizing, without needing to target title bars in #47024
- Unstuck the Alt key after Ctrl+Alt+Del or Alt+Tab into an admin process, made Win selectable as the move/resize activation modifier, and made the window geometry readout opaque in #47052. Thanks @foxmsft!
- Updated Grab And Move Settings strings to be modifier-agnostic now that Win is selectable alongside Alt in #47178
ZoomIt
- Added panoramic/scrolling screenshot capture, text extraction when snipping, and break timer improvements with screen saver mode and optional computer lock in #46506. Thanks @foxmsft, @MarioHewardt, and @markrussinovich!
- Fixed ZoomIt x86 build compatibility by emulating the _mm_cvtsi128_si64 intrinsic with _mm_storel_epi64 for 32-bit targets in #46529. Thanks @foxmsft!
Development
- Added a full OOBE page for Grab And Move, high-resolution icons and overview images for both Grab And Move and PowerDisplay, NEW badges on Settings nav items, and refreshed the README utilities table in #47033
- Added an update-available badged tray icon, a new "Update available" tray menu entry that opens Settings to General, and raised the update InfoBar severity to Warning in #47030
- Updated the dark-mode PowerToys tray icons to use the correct shade of black for the outline in #47166
- Changed default-on state for new installations by disabling 7 modules by default to streamline the initial experience for new users in #47027
- Added explicit default-disabled overrides to eight module interfaces so the native Runner defaults match the managed enabled-modules list, eliminating first-launch enable/disable flicker in #47144
- Updated the Windows Implementation Library (WIL) from 1.0.231216.1 to 1.0.250325.1 via Central Package Management in #43503
- Fixed the build.ps1 script so the -RestoreOnly switch works correctly and added support for the newer .slnf solution filter file format in #46012. Thanks @raycheung!
- Upgraded the check-spelling CI action to v0.0.26 which fixes spell-check failures on fork PRs and updates exclusion patterns in #46851. Thanks @jsoref!
- Refreshed the check-spelling action to 0.0.26 and synced dictionaries, patterns, and expect/reject lists across docs, source, and resource files in #47119. Thanks @jsoref!
- Pinned the check-spelling GitHub Action to v0.0.26 to attempt to fix the CI pipeline blocking PRs from forked repositories in #46746
- Reverted the pinning of the check-spelling action after determining that the pin was unrelated to the pipeline issue in #46749. Thanks @moooyo!
- Added contributor names from a recent PR to the spellchecker allow-list to prevent CI spelling errors in #46765. Thanks @jiripolasek!
- Added comprehensive DSC (Desired State Configuration) documentation with per-module reference pages, settings examples, and an overview guide covering 25+ PowerToys modules in #42554. Thanks @Gijsreyn!
- Cleaned up root-folder Markdown files by consolidating bullet styles, fixing spelling and grammar, converting HTML to Markdown, and applying sentence-case headers in #46582. Thanks @Jay-o-Way!
- Documented three missing telemetry events (ModuleLaunchedFromSettings, CmdPal_DockConfiguration, KeyboardManager_LaunchEditor) in #46371
- Added telemetry event logging to CLI entry points for FileLocksmith, Awake, and Image Resizer so command-line invocations are tracked alongside GUI usage in #46872. Thanks @MuyuanMS!
- Added 75+ MSTest unit tests covering Hosts ValidationHelper (IPv4/IPv6/hostname validation) and ColorPicker ColorFormatHelper conversions (CMYK, HSB/HSI/HWB, CIE XYZ/LAB, Oklab/Oklch, sRGB-linear, NCol) in #46679
- Fixed MSTEST0017 analyzer warnings by correcting assertion argument order in 22 Assert calls across 8 test files in #46712
- Fixed a CI test hang where Common.Interop.UnitTests.TestSend could block for 80 minutes when a prior run left a named-pipe handle alive, by ensuring pipe names are unique per run and bounding handshake waits in #47123
- Resolved StyleCop SA1614, SA1616, SA1622, and SA1623 warnings across Command Palette, Power Display, Settings UI, DSC, and Extensions Toolkit code in #46706, #46707, #46717, #46718
- Bumped the azure/login GitHub Action from v2 to v3 in the MS Store submissions workflow in #46323
- Bumped the azure/cli GitHub Action from v2 to v3 in the MS Store submissions workflow in #46562
This update also improves Command Palette, Keyboard Manager, and ZoomIt. The changelog is so long that I'm a bit surprised the PowerToys team didn't hold off for a major release number.
The developers of PowerToys are also working to migrate the app to WinUI 3. Microsoft is shifting toward more native experiences, and WinUI 3 is one of the native UI platforms for Windows.
Image Resizer is being migrated from WPF to WinUI 3, making it look more modern as well as aligning it with the rest of PowerToys.
Overall, this is a massive update with new features and improvements. If you use PowerToys, it's time to hop into the app's settings and install the latest version.
This collection of utilities includes a large library of features to enhance the Windows experience. PowerToys is designed with power users in mind, but it has handy features for people who just use their PC for everyday computing too.
Join us on Reddit at r/WindowsCentral to share your insights and discuss our latest news, reviews, and more.

Sean Endicott is a news writer and apps editor for Windows Central with 11+ years of experience. A Nottingham Trent journalism graduate, Sean has covered the industry’s arc from the Lumia era to the launch of Windows 11 and generative AI. Having started at Thrifter, he uses his expertise in price tracking to help readers find genuine hardware value.
Beyond tech news, Sean is a UK sports media pioneer. In 2017, he became one of the first to stream via smartphone and is an expert in AP Capture systems. A tech-forward coach, he was named 2024 BAFA Youth Coach of the Year. He is focused on using technology—from AI to Clipchamp—to gain a practical edge.
You must confirm your public display name before commenting
Please logout and then login again, you will then be prompted to enter your display name.

