This project downloads a small daily batch of Unsplash images, rejects bright images, and copies accepted files into your slideshow folder.
- AGENTS.md: role-based architecture and responsibilities.
- SKILLS.md: practical operation/tuning skills and command quick reference.
- Uses Unsplash API (
/photos/random) for automatic wallpaper downloads. - Can also import wallpapers from local Windows Spotlight assets.
- Configurable image types via
Queriesand API parameters. - Filters for monitor-friendly ratios (16:9, 16:10 by default) and rejects non-matching images.
- Brightness filtering removes light-themed images from both Unsplash and Spotlight sources.
- Saves files to archive + slideshow folders.
- Auto-syncs archive and slideshow folders for tracked files (repairs accidental manual deletions).
- Auto-removes old downloaded wallpapers (default retention: 7 days).
- Daily automation via Windows Task Scheduler.
- Copy config template:
Copy-Item .\config.sample.json .\config.json
- Configure using the TUI app (recommended):
powershell -NoProfile -ExecutionPolicy Bypass -File .\config-tui.ps1 -ConfigPath .\config.json
- Or edit
config.jsonmanually:- Set
Paths.SlideshowFolderto your real slideshow directory (for example:C:/Users/<you>/Pictures/Wallpapers). - Tune
Unsplash.Queries, batch size, and filter values. - Optional Spotlight source settings live under
WindowsSpotlight. - Tune cleanup retention via
Cleanup.RetentionDays(default7).
- Set
- Set Unsplash API key in your user environment:
setx UNSPLASH_ACCESS_KEY "your_access_key_here"
- Open a new terminal so the env var is available.
powershell -NoProfile -ExecutionPolicy Bypass -File .\wallpaper-fetch.ps1 -ConfigPath .\config.json
TUI launcher:
powershell -NoProfile -ExecutionPolicy Bypass -File .\config-tui.ps1 -ConfigPath .\config.json
TUI quick keys:
UUnsplash settingsWWindows Spotlight settingsAAdd new queryMRemove queryFFilter settingsPPath settingsSSchedule settingsCCleanup settingsKSet API keyGGuided setup wizardVSave configDDry-run nowRRun fetch nowIInstall/update scheduled taskXRemove scheduled taskLReload configQQuit
Dry-run config check:
powershell -NoProfile -ExecutionPolicy Bypass -File .\wallpaper-fetch.ps1 -ConfigPath .\config.json -DryRun
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-daily-task.ps1 -ConfigPath .\config.json
Optional custom task name:
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-daily-task.ps1 -ConfigPath .\config.json -TaskName "MyWallpaperJob"
Remove task:
powershell -NoProfile -ExecutionPolicy Bypass -File .\uninstall-daily-task.ps1 -TaskName "UnsplashWallpaperDaily"
TargetAspectRatios: defaults include:1.7778(16:9)1.6(16:10)
MaxAverageLuminance: lower value means darker overall images only.MaxBrightPixelRatio: limits how much of an image can be very bright.MinWidthandMinHeight: prevent low-resolution downloads.
WindowsSpotlight.Enabled: enable/disable Spotlight import.WindowsSpotlight.AssetsPath: optional custom assets path; blank uses the default Windows Spotlight folder.WindowsSpotlight.MaxCandidatesPerRun: how many spotlight files to scan per run.WindowsSpotlight.MinFileSizeKB: skips tiny/non-wallpaper assets.
Cleanup.Enabled: turn old-file cleanup on or off.Cleanup.RetentionDays: remove wallpapers older than this many days.Cleanup.MaxFileCount: keep only this many latest wallpapers (default50, use0to disable count-based cleanup).- Cleanup removes only images tracked in this app state file.
After setting your slideshow folder in Windows Personalization settings, this script keeps that folder updated with newly approved images.