microsoft / microsoft/PowerToys
Migrate FancyZones Editor to WinUI 3
- Dominant language
- C
- Stars
- 139k
- Forks
- 8.6k
- PR merge metrics
- PR metrics pending
Description
## Overview
Migrate the FancyZones layout editor from WPF and ModernWpfUI to WinUI 3 (Windows App SDK), following the migration patterns established by the other PowerToys modules. The editor becomes an unpackaged, self-contained WinUI 3 app shipped under `WinUI3Apps\`, while preserving the existing runner, settings, telemetry, and UI automation contracts.
Sub-issue of #46463. Work in progress on branch `yuleng/winui3/fancyzones/1`.
## 1. UI (WPF → WinUI 3)
- [x] Convert the application shell and top-level windows to WinUI 3 / `WindowEx`
- [x] Replace WPF mouse, dispatcher, message box, context menu, trigger, and sizing patterns with WinUI equivalents
- [x] Reimplement zone drag/resize behavior and cursors for WinUI controls
- [x] Preserve transparent overlay behavior, z-order, and multi-monitor placement
- [x] Handle mixed-DPI positioning and displays with negative virtual-desktop origins
- [x] Preserve keyboard, focus, accessibility, and applied-layout visual behavior
- [ ] Complete interactive validation across multi-monitor, mixed-DPI, theme, and accessibility configurations
## 2. Core / Integration
- [x] Remove WPF and ModernWpfUI dependencies from the FancyZones Editor
- [x] Migrate localization from `.resx` to `.resw` with `ResourceLoader`
- [x] Replace the WPF theme dictionaries with WinUI theme resources
- [x] Preserve settings persistence, startup error reporting, shutdown behavior, and runner-exit handling
- [x] Keep the existing editor parameters, settings JSON, named events, telemetry, and UI Automation identifiers compatible
## 3. CI / Build / Installer
- [x] Launch the editor from `WinUI3Apps\PowerToys.FancyZonesEditor.exe`
- [x] Update signing and installer configuration for the WinUI 3 payload
- [x] Update installation verification and UI automation module paths
- [x] Remove the obsolete satellite-resource packaging path
- [ ] Complete a green CI run and execute the FancyZones Editor UI tests
## Verification
- [ ] Green CI
- [ ] FancyZones Editor UI automation
- [ ] Multi-monitor and mixed per-monitor DPI
- [ ] Light, dark, and high-contrast themes
- [ ] End-to-end layout creation, editing, saving, and activation flows
Contributor guide
Research direction
Start by reviewing the FancyZones Editor under WinUI3Apps\ and the migration patterns established by other PowerToys modules. Run the FancyZones Editor UI automation and verify multi-monitor, mixed-DPI, theme, accessibility, and end-to-end layout flows; done means green CI and all listed verification checks pass.
Written by the indexing model from the issue text.
Assessment
- Domain
- build-system, desktop, testing
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 20/100