universal-windows-wallpaper-changer

2026.11.1

Downloads a random free high-resolution wallpaper from a free image
service (or picks one from own folder) and applies it as the Windows
desktop wallpaper. Runs once, or keeps changing the wallpaper in the
background with a tray icon (every 1-1440 minutes). Works for the
current user only. No administrator rights are needed.

Usage: .\universal-windows-wallpaper-chang
Downloads a random free high-resolution wallpaper from a free image
service (or picks one from own folder) and applies it as the Windows
desktop wallpaper. Runs once, or keeps changing the wallpaper in the
background with a tray icon (every 1-1440 minutes). Works for the
current user only. No administrator rights are needed.

Usage: .\universal-windows-wallpaper-changer.ps1 [options]
Run without options to open the start screen.

SOURCES (-Source)
 Random      Bing, FirstEverTech, Picsum or Wallhaven (default)
 FirstEverTech  Author's own 4K photos (no key, tags)
 Bing        Bing image archive (no key)
 Picsum      Random photos (no key)
 Wallhaven   Wallpaper search, SFW only (no key, query)
 Photos      Windows Pictures folder (local)
 Folder      Folder given with -Folder (local)
 Flickr      API key needed (Pro), query. EXPERIMENTAL
 Immich      Own server, API key + URL. EXPERIMENTAL
 Pexels      API key needed, query
 Pixabay     API key needed, max 1280px, query
 Unsplash    API key needed, 50 req/hour, query
 URL         Image link or .txt list (-URL)

If a service supports a query and none is given, a random one of
Nature, Abstract, Minimalist, Anime or Cyberpunk is used.

OPTIONS
 -help, -h, -?      Show help and exit.
 -version, -v       Show version and exit.
 -wizard            Step-by-step setup wizard.
 -source <name>     Image source. Default: Random.
 -query <text>      Search phrase, e.g. "nature winter".
 -folder <path>     Folder for -Source Folder.
 -url <link|file>   Image link or .txt list.
 -minwidth <px>     Min width. Default: 3840 (4K).
 -minpixels <n>     Min width x height. Default: 0 (off).
 -minsize <size>    Min file size (500K, 1M). Default: 0.
 -quality <1-100>   JPEG quality (services that convert).
 -format <jpg|png>  Output format.
 -orientation <o>   landscape | portrait | squarish.
 -maxattempts <n>   Tries before failing (1-20). Default: 5.
 -dir <path>        Where wallpapers are stored.
 -keep <n>          Keep last n files (default 20, 0 = all).
 -keepcurrentonly   Keep only the current wallpaper.
 -once              Change once and exit.
 -intervalminutes n Change every n min (1-1440) in background.
 -profile [name]    Run a saved profile (default: default).
 -fresh             Discard the stored image queue.
 -immichurl <url>   Immich server address.

BACKGROUND
 -background <cmd>  Status | Start | Stop | Pause | Resume
                    Stop also removes start at sign-in and settings.

API KEYS (stored encrypted per Windows user; env vars override)
 -keys              Show which keys are set.
 -setkey <service>  Enter a key (hidden).
 -removekey <svc>   Remove key(s) and the user env variable.
                    ALL | FLICKR | IMMICH | PEXELS | PIXABAY |
                    UNSPLASH | WALLHAVEN

OTHER
 -jpegimportquality <Max|Default>  Windows JPEG import quality.
 -noprompt          Skip the JPEG quality prompt.
 -quiet, -q         No screens, prompts or credits.
 -noupdate          Skip the update check.
 -skipverify, -s    Skip the self-hash check.
 -debug, -d         Print diagnostics.
 -installupdate     Internal (used by the EXE package).

Files: %LOCALAPPDATA%\UniversalWindowsWallpaperChanger
      (log, state, queue, installed copy for background mode)
      %APPDATA%\UniversalWindowsWallpaperChanger\profiles

Show more

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Script -Name universal-windows-wallpaper-changer

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

Owners

Copyright

(c) 2026 Marcin Grygiel / FirstEver.tech. All rights reserved.

Package Details

Author(s)

  • Marcin Grygiel

Tags

wallpaper bing picsum wallhaven flickr immich pexels pixabay unsplash windows automation

Functions

Stop-WithArgError Test-ArgValue Get-VersionNumber Compare-Versions Write-Log Write-DebugMessage Write-Warn Hide-Secret Write-ColorLine Get-KeyAndUrlFromLine Set-ConsoleSize Show-Header Show-ScreenTitle Read-YesNo Wait-AnyKey Exit-WithCredits Invoke-Nav Read-Nav Read-Validated Get-PicturesFolder New-DefaultConfig Merge-Config Test-ProfileName Get-ProfilePath Save-ConfigFile Read-ConfigFile Get-ProfileList Resolve-RunConfig ConvertTo-Bytes Format-Bytes Get-ServiceName Test-SourceSupportsQuery Get-RandomQueryPhrase Get-CommandParts Build-CommandLine ConvertFrom-SecureToPlain Get-ApiKeySource Get-ApiKey Set-ApiKey Remove-ApiKey Get-StoredImmichUrl Set-StoredImmichUrl Show-KeyTable Read-ApiKeyInteractive Get-JpegImportQuality Set-JpegImportQuality Format-JpegImportQuality Invoke-JpegImportQualityCommand Test-JpegPrecheckNeeded Show-JpegPrecheck Get-WebText ConvertTo-ArgString Show-StartupChecks Test-ScriptHash Test-GalleryInstall Get-LatestVersion Install-GalleryUpdate Install-UpdateFromExe Install-ScriptUpdate Install-UpdateFromPs1 Invoke-UpdateCheck Show-FinalCredits Get-RateLimitFile Test-ProviderRateLimited Set-ProviderRateLimited Get-HttpStatusCode Invoke-Api Expand-Response New-Photo Get-LongSideMeasure Test-OrientationOk Test-DimensionsOk Get-ImageFileInfo Get-ImageExtension Test-ImageFile Get-BingBatch Get-PicsumBatch Get-WallhavenBatch Get-LocalBatch Get-UrlBatch Get-FirstEverTechBatch Get-FlickrBatch Resolve-ImmichUrl Get-ImmichBatch Get-PexelsBatch Get-PixabayBatch Get-UnsplashBatch Get-ProviderBatch Get-QueueFile Test-QueueAllowed Read-Queue Write-Queue Initialize-NativeType Set-Wallpaper Get-NextFileName Move-LegacyDirFiles Write-AttributionLog Send-UnsplashDownloadPing Invoke-OwnFileCleanup Get-UnsplashImageUrl Save-RemoteImage Invoke-ProviderCycle Invoke-Cycle Install-ScriptCopy Install-SelfUpdate Get-AutostartCommand Set-Autostart Remove-Autostart Test-AutostartEnabled Get-BackgroundConfig Read-TrayState Write-TrayState Test-TrayRunning Send-TrayCommand Stop-Tray Start-Tray Initialize-Background Get-ShortPath Write-StatusRow Show-BackgroundStatus Wait-TrayState Remove-BackgroundSettings Invoke-BackgroundCommand Get-CurrentWallpaperLabel Get-CurrentWallpaperStats Get-LastChangeLabel Get-StoredImageCount Get-WallpaperFolder New-TrayIcon Invoke-TrayCycle Invoke-TrayDailyUpdateCheck Invoke-TrayCommandFile Invoke-TrayMode Get-SourceLabel Get-QueryLabel Write-CommandBlock Get-KeepLabel Show-ConfigSummary Get-RunProblem Show-CycleResult Show-RunInfo Stop-BackgroundForOnce Invoke-OnceInteractive Invoke-BackgroundSetupInteractive Invoke-Run Invoke-QuietRun Invoke-ManagementCommands Read-MenuChoice Show-BackgroundMenu Show-StartScreen Show-WizardScreen Write-WizardFooter Show-KeyTableNumbered Clear-ApiKeyEverywhere Read-ServiceKeyAndStore Edit-ApiKey Show-KeyManagementScreen Write-SourceRow Read-WizardSource Invoke-WizardCollect Invoke-Wizard Move-LegacyData

Dependencies

This script has no dependencies.

Release Notes

v2026.11.0001 - Initial release

FileList

Version History

Version Downloads Last updated
2026.11.1 (current version) 7 11/9/2026