wallpaper · per display · position-aware

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.

preview before you apply .\Set-Wallpaper.ps1 -WhatIf
you know this one

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.

the fix, three ways

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.

position Named by real coordinatesLEFT · CENTER · RIGHT — labels survive a cable swap.
preview The whole folder, as a galleryEvery tile previews exactly what lands on that monitor.
no crop Auto-fit, zero lossOff-ratio images are composed at exact resolution — 0% lost.
how auto-fit works

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.

Image ratio vs monitor ratio ↓ decides
Smaller than the monitor
→ compose
Crop would exceed 25%
→ compose
3:2 on 16:9 (~16%)
→ original as-is
small, sharp, fast

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.

open & honest

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 IDesktopWallpaper COM interface) and PowerShell 7 — winget install Microsoft.PowerShell if 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.
run it yourself

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.

# get the code
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