Skip to content

ByteSizedMarius/StandaloneFancyZones

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

StandaloneFancyZones

This repository allows you to build a portable, self-contained FancyZones from a PowerToys installation.

For anyone who wants FancyZones window management without the rest of the PowerToys suite running in the background.

Requirements

For generating the portable deployment, DotNet and PowerToys are required.

Once the portable package has been generated, it can be used on any machine with no dependencies or requirements.

winget install Microsoft.PowerToys --version 0.99.1   # bundled binaries are copied from here (known-good version)
winget install Microsoft.DotNet.SDK.9                 # builds the tray launcher

When done, restart the terminal so changes to path are picked up.

Build

git clone https://github.com/ByteSizedMarius/StandaloneFancyZones
.\StandaloneFancyZones\GenerateDeployment.ps1

Produces .\deployment and StandaloneFancyZones.zip in the project directory. If the build errors, see Troubleshooting.

Optional: neither build dependency is needed at runtime, so both can be removed once ./deployment exists:

winget uninstall Microsoft.PowerToys; winget uninstall Microsoft.DotNet.SDK.9

Usage

Run deployment\StandaloneFancyZones.exe. A tray icon appears.

  • Right-click → Editor: open the layout editor.
  • Right-click → Exit: stop FancyZones and the tray.
  • Win+Shift+` (or Win+Shift+ö depending on kb language): the upstream edit-zones hotkey still works.

For login autostart: run deployment\Add-ToAutostart.ps1 once.

To be clear, the executable is portable – zone configuration and settings live on the machine at %LOCALAPPDATA%\Microsoft\PowerToys\FancyZones\ in the json files. The zone editor is packaged as normal, but settings accessed via the PowerToys runner (shortcut, zone behavior, zone appearance, etc.) can only be set manually. Configure with a normal PowerToys install, then copy the files or edit manually using a texteditor.


How it works

With the approach implemented here, the Microsoft-signed FancyZones binaries are reused; we just need to glue them together.

The PowerToys runner normally provides:

  1. Lifecycle supervision (start FZ, restart when settings change, etc.)
  2. Editor invocation (signaling FZ to open the layout editor on demand)
  3. Tray Icon

These are reimplemented in StandaloneFancyZones.exe, which is a self-compiled unsigned binary. The source code lives in this src.

Caveats

  • No Settings UI. Edit settings.json directly or copy your settings from an existing installation configured with the PowerToys settings UI (to be clear: settings != zones. Zones can be configured as normal via the packaged editor).
  • No code signing for StandaloneFancyZones.exe.
  • No telemetry, GPO, or auto-update.

Troubleshooting

dotnet publish fails with NU1100: Unable to resolve ...

NuGet has no sources configured (common on a fresh SDK install). Add nuget.org and retry:

dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org

About

Portable FancyZones deployment

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors