Skip to content
Replicating macOS Mojave's dynamic wallpaper feature
Branch: master
Clone or download
Kushagra Agrawal Kushagra Agrawal
Latest commit f4f909a Jun 16, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
Dynamic_Walls_plistGenerator.command plist-fix Jun 17, 2018
LocateMe Add files Jun 8, 2018 Update Jun 15, 2018 v1.8-beta Jun 15, 2018


Same script avialable in a simple App format here

Beta See Changelog

Experimental script to replicate macOS Mojave's dynamic wallpapers feature, also sets system theme to dark/light accordingly

Uses Sunrise-Sunset api to get the sunrise and sunset times of current location retrieved by the LocateMe command line tool

LocateMe is a Public Domain command-line tool that lets you find your location (latitude, longitude, etc) using Apple's geolocation services.

The wallpapers were extracted from the HEIC file from the Mojave beta

A only to be run once terminal command file is used to generate and place a plist file in it's appropriate location and load it the plist ensures the script continues to run every 5 minutes ensuring the wallpaper is kept up-to-date

The plist file can be found by the name of Dynamic_Walls.scheduler.plist in the /Users//Library/LaunchAgents/

Set Up

  1. Download and extract the zip containing all the wallpaper files extract it directly or copy the extracted folder to the directory /Users/<Username>/Pictures/Wallpapers create the Wallpapers directory if it doesn't exist, confirm that the pictures are in the mojave_dynamic directory

(You can now from beta 1.8 and above use any directory but all script files should be in the same directory and the directory must contain the mojave_dynamic folder containing all the images)

  1. Download the latest release (or the github repo as zip) and place all enclosed files in the above Wallpapers directory

just for reference the Wallpapers folder in the end should look something like this Imgur

  1. (Use the third step in your file for releases 1.7.3 and earlier)

Just right click and open the Dynamic_Walls_plistGenerator file (Double clicking to open won't usually work) and we're all set up and done

Advantage of this is with minor tweaking we can use custom wallpapers too which Apple being Apple won't give us the option to.

You can now use custom wallpapers, check the changelog for 1.8-beta below will be working on making it so that even the minor tweaking is not needed for customisability

P.S: To disable auto switching to dark/light theme based on time if you prefer system theme to be always dark or light open the Dynamic_Walls.scpt file and set useDark to false in the first line

P.P.S1: one can also use a software like GeekTool instead of the 3rd step



Lets you use custom images as well, had to fix the image order to make it possible please download the images again in fixed order here or rename the image files you currently have as shown here

Combined the scripts into a proper app, also open source, please beta test here ❤️, lets you use images from any folder anywhere

Directories aren't hardcoded anymore, just needs the mojave_dynamic folder to be in the same directory as script

To use custom wallpapers just make sure the images are in the mojave_dynamic folder and are formatted like this


Replaced cron jobs by something far better ie plists. Thanks @john2691 for the hard work


New fixed image order

Fixed an overlapping times issue


Move to beta

Better sunrise matching by using twilight begin instead of actual sunrise time (make sure you download the file if downloading files individually)

Minor logic fix


Added noon time matching

Added useDark? switch

Minor logic fix


Added auto switching OS Appearance to Dark according to time. Thanks @katernet

Added multi-monitor support. Thanks @eclair4151


Removed version name from file name to make updates easier

Some fixes for 24 hour clock setting

Important : One time set up change for old users, open nano as in step 3 and change the line to as seen now in third step and save and close as before

You can’t perform that action at this time.