Waller is a native Windows wallpaper manager for multi-monitor setups. The definitive 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 English and Spanish UI, light/dark themes, keyboard access, and packaged launch diagnostics.
- Keeps Save and Apply independent: Save persists a Preset; Apply changes Windows.
The removed web/Tauri implementation remains available through Git history only.
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. Active domain language lives in CONTEXT.md.
- 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 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.
- 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.
docs/INDEX.md— active documentation mapnative/docs/README.md— native architecture and operationsdocs/architecture/winui-definitive-architecture-spec.md— approved architecture specificationdocs/architecture/WORKPLAN.md— architecture execution trackerdocs/architecture/winui-definitive-architecture-report.md— completed ten-ticket architecture report
MIT