microsoft / microsoft/PowerToys
[Workspaces] Migrate Editor from WPF to WinUI 3
- 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
Assessment
This issue has not been assessed yet.