Microsoft PowerToys Preview gets its first command-line tools and a mouse button lock
Preview v0.102.2814.0 marks PowerToys' shift toward scripting and automation, and brings the suite's very first right- and middle-button latching.
Microsoft's PowerToys just grew a command line. Preview build v0.102.2814.0, published today, arrived with CLIs for both Light Switch and the main Settings app, plus the utilities suite's first-ever mouse button lock. Keep in mind that this is still a preview-channel build. It's not the finished 0.102 stable release.
First announced back in 2019, PowerToys has quietly become one of the most-used things on GitHub, sitting past 139,000 stars under the MIT license. It installs as an overlay layer alongside Windows instead of getting folded into the OS, which lets users cherry-pick features without waiting for a Windows update. The suite now ships more than 30 utilities, from FancyZones and Always on Top to PowerRename and Quick Accent.
This preview followed v0.102.2803.0 by just a single day. Maintainer LegendaryBlair published it under commit 1fca166, and its notes describe what changed since the last preview rather than the full 0.102-versus-0.101 story. And that story really comes down to one word. Scriptability.
A command line where there wasn't one
The headline is genuinely the CLIs. For the first time you can query and control Light Switch from a script. The new PowerToys.LightSwitch.CLI.exe handles status, light, dark, toggle, and schedule enable-disable, with a --json flag on every command for machine-readable output and documented exit codes so it drops cleanly into a shell pipeline.
The Settings CLI is arguably the more useful of the two. Sysadmins have long wanted a way to manage PowerToys without opening the GUI, and PowerToys.Settings.CLI.exe answers directly. Run list and it shows which modules are on or off. Run enable or disable and it saves the state. It's Group Policy aware too, meaning if an enterprise policy locks a module, the CLI refuses to override it.
Here's the catch. Mutations through enable and disable require PowerToys to be fully exited first, to avoid racing the running process. Read-only commands like list still work while PowerToys is live. PowerToys emits exactly one telemetry event per invocation, and it records only the command category and whether it succeeded, never module names or values.
Power users might shrug at this part. But fleet deployment is a real use case, and configuration-management tools don't do GUI clicks well. There's something almost nostalgic about PowerToys filling gaps that Microsoft left open over two decades ago, and a command line is exactly the kind of thing a sysadmin can run across a hundred machines at once.
The mouse button lock you never knew you needed
On the usability side, v0.102.2814.0 introduces Mouse Button Lock. It's the first button-latching feature PowerToys has ever shipped, and it modernizes Windows' old ClickLock.
Here's the bit most people don't know. Windows has shipped ClickLock for the left button since Windows 2000. It never extended it to the right or middle buttons. PowerToys closes that gap, adding opt-in locking for all three in one place. Right-button locking comes on by default since Windows has no native equivalent and people lean on it for drag-selects and context menus. Left and middle stay off by default.
The feature request itself dates back to June 2026, filed by @owenpkent as "Right-Click Lock." It named three camps: accessibility, for users dealing with arthritis or RSI; productivity, for long menu drags; and gaming, where sustained right-click is a standard camera gesture in MMOs and flight sims. Before now the only real workaround was AutoHotkey scripts, which are awkward to share and can trip anti-cheat software.
The implementation is native C++ running an in-process hook, structurally similar to the other passive Mouse Utilities. It suppresses the button-up event while locked and injects a synthetic release, tagging its own events so the hook ignores them. A move-cancel dead-zone keeps an actual drag-select from being mistaken for arming the lock. Every button releases on disable or clean exit, so you're never stuck with a button that won't let go.
Not cheap to build, either. The PR carried 17 unit tests, a libFuzzer adversarial target, UI tests, and a full Release build. PowerToys doesn't ship user-input code without that scaffolding anymore.
The smaller stuff
Beyond the two big additions, this build is mostly polish. Command Palette now drags packaged apps onto the dock without dropping the launch. Quick Accent got its horizontal scrollbar back for those overflowing character lists. Shortcut Guide indexes faster and stops flickering on first open. ZoomIt's DSC resource finally reads the actual registry settings instead of guessing. And the Settings welcome page traded animated GIFs for muted looping H.264 videos.
A lot of the heavy lifting under the hood was handled by an automated contributor account. PowerToys now leans on that for routine maintenance, and this build is no exception, with changes like moving build logs into artifacts\logs and promoting trimming diagnostics to build errors.
This preview lands as part of the broader 0.102 release train, which focuses on modernizing utilities with WinUI 3 and expanding Command Palette with tabs and scriptable extensions. The CLIs fit that direction neatly.
Grab it if you want
PowerToys ships this preview in four installer variants, plus Group Policy files and symbol dumps for debugging. The per-user x64 build leads in downloads at roughly 379, with machine-wide x64 trailing near 200. As with any preview build, install into a separate profile or VM if you're running your daily driver on bleeding-edge software.
You can grab it several ways. The Microsoft Store, WinGet, Chocolatey, Scoop, or a direct download from the GitHub release page. WinGet users can run winget install Microsoft.PowerToys -s winget for the per-user build, or add -scope machine for the machine-wide one.
Keep in mind that this is still a preview. The feature set is expanding toward its final stable form, but in-progress builds can bite. Head here to the release page for the full changelog and the exact SHA-256 hashes if you want to verify the downloads yourself.
