I wrote a simple command line tool which can read and set the desktop picture. Neil Martin had the brilliant idea to call it desktoppr
.
You can read the current desktop picture with:
$ desktoppr
/Library/Desktop Pictures/Sierra.jpg
and set the desktop picture with
$ desktoppr "/Library/Desktop Pictures/BoringBlueDesktop.png"
When you have multiple displays, desktoppr
will list all desktop pictures:
$ desktoppr
/Library/Desktop Pictures/HotStepper.jpg
/Library/Desktop Pictures/LyricalGangster.jpg
/Library/Desktop Pictures/MrOfficer.jpg
When you pass a file desktoppr
will set it as the desktop picture for all screens:
$ desktoppr /Library/Desktop Pictures/NaahNananah.jpg
$ desktoppr
/Library/Desktop Pictures/NaahNananah.jpg
/Library/Desktop Pictures/NaahNananah.jpg
/Library/Desktop Pictures/NaahNananah.jpg
You can also set the desktop for a specific screen: (index starts at zero)
$ desktoppr 0 /Library/Desktop Pictures/HotStepper.jpg
$ desktoppr 1 /Library/Desktop Pictures/LyricalGangster.jpg
$ desktoppr 2 /Library/Desktop Pictures/MrOfficer.jpg
You can get the code for desktoppr
on my Github page and an installer here. The installer pkg will install the tool in /usr/local/bin
. Alternatively, a brew casks exists, so you could install it using brew cask install desktoppr
if you have Homebrew installed.
When you want to run it from a management script it is safest to include the entire path:
/usr/local/bin/desktoppr "/Library/Desktop Pictures/BoringBlueDesktop.png"
Since the desktoppr
tool also sets user preferences, you still need to pay attention that it runs as the user. A LaunchAgent or a solution like outset
is a good choice to manage this. Alternatively, you can run the command as the current user from a root script.
The tool requires the Swift 5 Runtime support for command line tools when you install it on versions of macOS older than 10.14.4.
I have written a few blog posts that describe different use strategies for setting a desktop picture: