microsoft / microsoft/PowerToys

[Workspaces] Migrate Editor from WPF to WinUI 3

Open
#48,799 1 comment 1 reaction 1 assignee Claimed by @chatasweetie View on GitHub
Area-Accessibility Area-User Interface Issue-Refactoring Product-Workspaces
Dominant language
C
Stars
139k
Forks
8.6k
PR merge metrics
PR metrics pending

Description

## Summary

Migrate the Workspaces Editor application from WPF to WinUI 3 to complete the Workspaces module modernization. The Launcher UI was already migrated in #48700 — this is the remaining WPF surface.

## Motivation

- Complete the Workspaces module WinUI modernization (Launcher UI done in #48700)
- Remove all WPF dependencies from the Workspaces module
- Consistent Fluent UI experience across Editor and Launcher
- Improved long-term maintainability

## Scope

**In scope:**
- WorkspacesEditor WPF application (6 XAML files, 31 C# files, 5 windows/pages)
- WorkspacesCsharpLibrary WPF imaging dependency (`BaseApplication.cs`)
- Resource dictionaries, converters, custom controls
- Installer and signing updates
- WorkspacesEditorUITest updates

**Out of scope:**
- New features or UX redesigns
- Changes to `workspaces.json` format
- C++ engine components (Launcher, WindowArranger, SnapshotTool, ModuleInterface)
- Telemetry changes

## WinUI 3 Window Limitations

WinUI 3 has known limitations with transparent borderless windows, topmost behavior, and multi-monitor overlay rendering — all of which the Workspaces capture experience depends on.

If WinUI 3 can support the overlay/snapshot requirements (possibly with `AppWindow`/HWND interop), the entire Editor migrates to a single framework. If not, a hybrid architecture is needed where the main Editor UI moves to WinUI 3 but the capture overlay remains in WPF or moves to C++/Win32 (following the FancyZones pattern).

## Testing

| Suite | Tests | Coverage |
|-------|-------|----------|
| `WorkspacesEditor.UnitTests` | 51 | ViewModel (search, filter, sort), application model, project validation |
| `WorkspacesEditorUITest` | ~57 | Design validation for windows/pages |
| `WorkspacesLauncherUI.UnitTests` | 129 | Launcher UI (from #48700) |
| `WorkspacesLib.UnitTests` | C++ | Core workspace logic |

## Acceptance Criteria

- [ ] All automated tests passing (Editor 51 + UI ~57 + Launcher 129 + C++ unit tests)
- [ ] No functional regressions (create, edit, launch, delete, search, sort, shortcut)
- [ ] Capture flow works end-to-end (create workspace → snapshot → save)
- [ ] Accessibility parity (keyboard nav, Narrator, High Contrast)
- [ ] Theme parity (Light/Dark/HC)
- [ ] DPI parity (100%, 150%, 200% — no offset/scaling errors)
- [ ] Multi-monitor support validated
- [ ] Old WPF Editor code removed
- [ ] Installer updated and packaging correct
- [ ] No WPF dependencies remain in Workspaces module

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.