A different wallpaper on every monitor — nothing cropped.
You pick the image for the left, center, and right screen by where it physically sits on your desk. It previews the whole wall first, then fits each image to its exact resolution — no stretching, no chopped-off edges.
.\Set-Wallpaper.ps1 -WhatIf
Windows can do this. It just does it badly.
You can set a per-monitor wallpaper in Windows — but it numbers your displays 1, 2, 3 in an order that has nothing to do with where they physically sit, keeps only your 5 most recent images, and never shows the crop before you apply. So an off-ratio photo lands stretched, or with the best part sliced off, and you find out too late. It's the right feature, missing every helpful detail.
Label by position. Preview everything. Never crop.
This tool names your monitors by their real coordinates — LEFT, CENTER, RIGHT — so the labels survive a cable swap. It shows your whole image folder as a gallery grid where every tile previews exactly what will land on that monitor. And when a picture's ratio doesn't fit, an auto-fit mode composes a new image at the display's exact resolution so 0% is lost.
It only re-encodes when it actually helps.
When an image's ratio doesn't match the display, auto-fit builds a new image at the exact display resolution — the same picture blurred and darkened as a backdrop, the full original laid on top, so nothing is cut. Re-encoding costs a little quality, so it happens only when it's worth it. A square 5735×5735 on a 3840×2160 monitor would lose 44% to cropping; auto-fit loses nothing.
Everything you wanted the built-in one to do.
A GUI you double-click, or a one-line command if you prefer. It reads your monitor layout, remembers your folder, and caches thumbnails to disk so the gallery opens instantly the second time.
Position labels
LEFT / CENTER / RIGHT by real coordinates — survives cable swaps.
Whole-folder gallery
Your entire image folder as a grid, not just 5 recents.
Preview before apply
Every tile shows exactly what will land on the monitor.
Auto-fit, no crop
Composes an exactly-sized image so nothing is lost.
Disk thumbnail cache
100 thumbnails: 29s the first time, 0.6s after.
GUI + command line
Bilingual UI that follows your Windows language.
Honest tools age better than magic ones.
MIT-licensed, with the full source on GitHub — the COM plumbing, the layout detection, the compositor, the thumbnail cache. And the trade-offs, up front:
- Needs Windows 8+ (the
IDesktopWallpaperCOM interface) and PowerShell 7 —winget install Microsoft.PowerShellif you don't have it. No admin rights required. - Re-encoding is a real quality trade-off, so auto-fit does it only when cropping would actually hurt — otherwise it uses your original untouched.
- A 6000×4000 JPEG takes ~290ms to decode and there's no way around it, so it decodes once and caches to disk.
- No install, no account, no telemetry. Scripts in a folder, and MIT.
Clone it, and double-click to run.
You'll need Windows 10/11 and PowerShell 7. Nothing to install for the tool itself — it's just scripts in a folder.
git clone https://github.com/techjuicelab/per-monitor-wallpaper.git
cd per-monitor-wallpaper
# if you don't have PowerShell 7
winget install Microsoft.PowerShell
# GUI: double-click Wallpaper.bat — or from the command line:
.\Set-Wallpaper.ps1 -WhatIf # preview before applying
.\Set-Wallpaper.ps1 # apply