microsoft / microsoft/PowerToys

Migrate FancyZones Editor to WinUI 3

Open
#49,680 0 comments 0 reactions 0 assignees View on GitHub
Issue-Task Product-FancyZones
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.