The wallpaper sources include:
- A solid colour (the "no wallpaper" option)
- A specific or random picture from a directory
- A Google Image search
The Text Overlay feature provides optional BGInfo style text directly onto the wallpaper image with control over the content, font, size, colour and position.
The script can be run manually, at logon or even repeatedly via a scheduled task to update the wallpaper regularly.
Wallpaper example showing the text overlay
UsageThe Shell syntax is very straight forward
.\Set-Wallpaper.ps1 MyPics *
.\Set-Wallpaper.ps1 MyPics coolpic.jpg
.\Set-Wallpaper.ps1 Web 'Ayers Rock'
.\Set-Wallpaper.ps1 Colour Blue
Please note, Powershell v3 or later is required due to the invoke-webrequest cmdlet in the Web module.
Setup OptionsAll of the options in the script can be set via the Wallpaper Variables section.
# MyPics Options [STRING]$PicturesPath = [environment]::getfolderpath("MyPictures")+"\wallpaper" [BOOLEAN]$ResizeMyPics = $False # Web Options [INT]$MaxResults = 10 [INT]$DaysBetweenSearches = 7 [BOOLEAN]$ResizeWebPics = $True [STRING]$WebProxyServer = "proxy1.mydomain.com.au" # Text Overlay Options [BOOLEAN]$TextOverlay = $True [STRING]$TextColour = "White" [STRING]$FontName = "Arial" [INT]$FontSize = 14 [BOOLEAN]$ApplyHeader = $True [STRING]$TextAlign = "Right" [STRING]$Position = "High" # Wallpaper Style Options [STRING]$Style = "Fit" # Available Colours $Grey = @(192,192,192) $Black = @(0,0,0) $White = @(255,255,255) $Red = @(220,20,60) $Green = @(0,128,0) $Yellow = @(255,255,0) $Blue = @(0,0,255) $CornflourBlue = @(100,149,237)
My Pictures Wallaper
The 'MyPics' option will source pictures from a nominated folder ('My Pictures\Wallpaper' by default). You can either choose a specific picture or a wildcard *. Using the wildcard with a scheduled task allows the wallpaper to change regularly.
Pictures can optionally be re-sized proportionately to match the screen resolution.
Google Images Wallpaper
The 'Web' option will perform a Google image search based on your search term and automatically download a number of high resolution pictures. These are then randomly chosen as the desktop wallpaper. Again the script can be run again manually or via a scheduled task to rotate between the downloaded pictures.
To avoid repeated downloads each time the script runs with the same search term, simply adjust the $DaysBetweenSearches variable. By default, the script will only repeat a search after a week.
As the images can vary greatly in size, using the re-size variable is recommended here as it will keep the image (and any text overlays) consistent.
Typical download results using the syntax: set-wallpaper Web 'mountains'
The solid colour wallpaper is the most straight forward and is essentially a "no wallpaper" option. The result is a plain background as the script simply draws a rectangle in the colour of your choice, at the same resolution of the screen. Extra colours can be added by updating a new variable with the relevant RGB values.
Mudos for the text overlay proof of concept found on this post, which combines text and your chosen desktop. The text can be anything you like, including dynamic data sourced through powershell and wmi queries such as the computer name, OS or boot time.
There are a number of variables that control the font and where about's on the image the text is placed.
There are a number of included functions that tie all of this together.
- Get-MyImages chooses pictures for the 'MyPics' option
- Set-WebProxy allows the Google search connection through a web proxy
- Get-GoogleImages downloads and chooses pictures for the 'Web' option
- Set-ImageSize optionally re-sizes pictures proportionately to match screen resolution
- New-Wallpaper creates the actual bitmap (colour or picture) and combines the text overlay
- Update-Wallpaper applies the actual wallpaper to your desktop
- Set-Wallpaper validates the pipeline input and initiates all of the other sub-functions as required
Here's the full script as posted on Git Hub (select the 'Raw' option at the bottom to copy/paste)
/ | ||