While the workaround explained by Mox works really fine —I however recommend using the Keyboard Preferences, Shortcuts tab checkbox to "Use keyboard navigation to move focus between controls" rather than VoiceOver— this technique sadly does not work for secondary monitors.
If you're feeling a bit adventurous but are not comfortable with disabling SIP, you can edit the desktop pictures database using free tools like https://sqlitebrowser.org to enable the Dynamic mode for your favourite wallpaper. Still interested? Follow the guide!
This process is totally safe and does not disable system security mechanisms. In case things go south and you make a change you shouldn't, the system will reset the desktop pictures to the default.
The database is located at ~/Library/Application Support/Dock/desktoppicture.db
. Once opened, browse data and display the preferences
table.
There you'll find a bunch of numbers. I've not figured out exactly what they all mean, but they are essentially linking pictures with spaces/monitors and with their settings (scale and dynamic).
I've found out that if you set the data_id
to 9
for the key 20
of the row containing the picture ID that matches the picture you're trying to update (figuring which picture ID is the hardest part), this will set the wallpaper to Dynamic. To be honest I just updated every 20
line without paying attention to the picture_id
column.
Here's an example with my dual screen setup. Pictures 3
and 4
were my desktop pictures that needed the Dynamic mode enabled:
Once you're done, save the DB (write changes) then log out/log in, restart, or (quicker) type killall Dock
in Terminal.app.
Your wallpaper should be instantly updated with no further actions from your part. If you used the killall Dock
command while System Preferences was open, make sure you quit completely System Preferences before making any changes.
In case you mess things up, no worries. You can always use System Preferences to "reset" your setup. You could even delete the desktoppicture.db
entirely and the system would create a new one with the default wallpaper setup, so there's no real danger here.