Waller is a native Windows wallpaper manager for multi-monitor setups. The product is the WinUI 3 application under native/, built with C# and .NET 10.
It keeps one editable Active Session, lets every Monitor use its own Wallpaper Source and placement, saves reusable local Presets, and applies rendered wallpapers through Windows IDesktopWallpaper.
- Detects connected monitors and their current wallpapers.
- Supports local images, solid colors, and empty assignments.
- Supports Cover, Contain, Stretch, Center, and Tile placement.
- Saves, loads, renames, duplicates, and deletes local Presets.
- Renders one shell-readable PNG per monitor before Apply.
- Reports Apply progress and supports cancellation.
- Provides an English UI, light/dark themes, keyboard access, and packaged launch diagnostics.
- Keeps Save and Apply independent: Save persists a Preset; Apply changes Windows.
Project site · Latest release · Source and issues
These captures use an isolated proof package with three fictional monitors and an original matte wallpaper generated for the demo. The app never changed the real desktop or read personal presets.
| Monitor workspace | English settings |
|---|---|
![]() |
![]() |
| Preset manager | Save a preset |
![]() |
![]() |
See capture provenance for the isolation boundary and example-art source.
native/
Waller.Native.App/ WinUI shell, view models, composition, and Windows adapters
Waller.Native.Workflows/ XAML-free use cases and shell state
Waller.Native.Core/ domain models, rendering, persistence, and Windows contracts
Waller.Native.Tests/ xUnit tests for Core and public workflows
scripts/ verification, smoke, packaging, and diagnostic commands
Dependency direction is App -> Workflows -> Core, with App -> Core for UI adapters. Tests reference Workflows and Core.
- Windows 10 version 1809 or newer
- .NET SDK
10.0.302or a compatible patch selected byglobal.json - Developer Mode for packaged local launch
The repository can install the required SDK into .scratch/toolchains without changing the machine-wide installation:
powershell -ExecutionPolicy Bypass -File .\scripts\BootstrapDotnet.ps1powershell -ExecutionPolicy Bypass -File .\scripts\Invoke-Native.ps1 -Task RunThe root executor uses the workspace-local SDK when present, builds the interactive run self-contained, and delegates to the canonical native scripts.
Fast repository gate without launching the app:
powershell -ExecutionPolicy Bypass -File .\scripts\Invoke-Native.ps1 -Task Verify -SkipSmokePackaged launch and optional UI Automation smoke:
powershell -ExecutionPolicy Bypass -File .\scripts\Invoke-Native.ps1 -Task Verify -SurfaceSmoke -SettingsRoundTripApply smoke temporarily changes the current user's wallpapers and restores them in finally. Run it only when that desktop mutation is acceptable:
powershell -ExecutionPolicy Bypass -File .\scripts\Invoke-Native.ps1 -Task Verify -ApplySmokepowershell -ExecutionPolicy Bypass -File .\scripts\Invoke-Native.ps1 -Task Release
powershell -ExecutionPolicy Bypass -File .\scripts\Invoke-Native.ps1 -Task PackagePackage creates a development-signed MSIX under native/artifacts/. It is for local install validation, not public distribution. Production signing, Store publication, and clean-machine qualification remain separate release gates.
Microsoft Store preparation, Partner Center identity setup, .msixupload generation, certification notes, listing copy, and lifecycle evidence are documented in docs/store/README.md. The Store build remains blocked until Waller has a reserved Partner Center identity.
- Presets and settings use package-local
LocalCache\Local\Wallerstorage. - Rendered wallpapers use
%USERPROFILE%\.waller\renderedso the Windows shell can read them. - Repository cleanup and build commands do not migrate or delete user data.
See PRIVACY.md for the public data-access and retention policy.
docs/INDEX.md— documentation mapnative/README.md— native solution and commandsnative/docs/TESTING.md— verification and smokenative/docs/PACKAGING.md— packaging and install policydocs/store/README.md— Microsoft Store submissiondocs/CHANGELOG_MAINTENANCE.md— maintenance historyPRIVACY.md— privacy policy
If Waller improves your multi-monitor setup, you can sponsor continued development or support the maintainer on Ko-fi. Focused bug reports and improvements are welcome through GitHub Issues and CONTRIBUTING.md.
MIT



