13

I tried to set a custom dynamic wallpaper in Catalina as I used to do in Mojave (that worked fine) but my dynamic wallpaper will display the following option as you can see the picture (bugged).

enter image description here

and when I want to change it the "Dynamic" option it's no there!

enter image description here

I tried to find the path of the dynamic default wallpapers and I couldn't paste the ".heic" files where catalina's wallpaper is. I also tried to set a default dynamic wallpaper first and in dynamic mode and then I switch to the custom one and didn't work.

Did dynamic wallpapers format changed in Catalina OS?

How can I set a custom wallpaper in Catalina?

link to the custom wallpaper

5
  • Can you just go to where the .heic file is stored, right-click, and select Set as Background? I think that will do it.
    – fsb
    Commented Dec 4, 2019 at 20:31
  • @fsb I tried that too and didn't work. It's always set to the darkest time and never changes Commented Dec 4, 2019 at 20:47
  • Does this happen for multiple files or just one? Dumb question but are you really sure the one file is dynamic and not just a static pic with an heic extension?
    – fsb
    Commented Dec 4, 2019 at 22:39
  • @fsb this happens with all the customs wallpapers i downloaded (from 2 different sources). Do you have one that works on you atm? Commented Dec 5, 2019 at 0:36
  • 1
    No, sorry, I don't use dynamic wallpaper anymore. I found it a bit annoying, honestly, so i removed them.
    – fsb
    Commented Dec 5, 2019 at 13:21

8 Answers 8

8

Copy your .heic file into /Library/Desktop Pictures. Then, you'll need to somehow get the list of pictures to repopulate. This seems to sometimes happen to me when unplugging displays, or just after waiting long enough, or, most reliably, after a restart. Then your new desktop should appear in the list of Dynamic Desktops under System Preferences:Desktop & Screen Saver:Apple/Desktop Pictures.

It seems like Apple prevents the Fill Screen/Fit Screen menu from showing up in the Apple folders, since they presume that all of them are already properly sized. This avoids the issue where they located those two menus on top of each other, which is what's preventing us from just loading the wallpapers directly.

13
  • 1
    This works for Mojave but not for Catalina Commented Jan 7, 2020 at 19:26
  • 1
    You're seeing the bugged overlapping dialogs under Apple/Desktop Pictures as well? Commented Jan 15, 2020 at 0:42
  • 1
    Its been working for me with the .heics I got from dynamicwallpaper.club, like this one: dynamicwallpaper.club/wallpaper/6la1i2jp3vj Commented Jan 15, 2020 at 0:43
  • 1
    Worked for me in Catalina. It had no problem refreshing after I closed out of the desktop window and re-opened it.
    – cbloss793
    Commented Aug 13, 2020 at 19:15
  • 1
    Worked for me in 12.0.1 Monterey. Just open Finder, press cmd+shift+G, enter "/Library", press Enter. Then create a new folder called "Destop Pictures" (authenticate to allow this when prompted) and place the heic file in the new folder. Without any reboot it showed up immediately in System Preferences as a dynamic wallpaper in "Apple/Desktop Pictures".
    – comfreak
    Commented Nov 7, 2021 at 15:11
9

There are 4 solutions to this problem.

  1. Easiest

    • select Catalina wallpaper (System Preferences->Desktop & Screen Saver)
    • make sure the popup button has selected Dynamic item
    • close the System Preferences
    • locate your wallpaper, right click on it and select Services->Set As Wallpaper enter image description here
  2. Mid (requires tools) Remove Still images from dynamic wallpaper

    • recreate dynamic wallpaper without still images (remove appearance metadata)
    • dynamic wallpapers without still images will cause only one menu item to be present and it will automatically get selected
    • Dynaper has the Remove Still Images Helper tool enter image description here
  3. Hardest (but best). Place dynamic wallpaper into System/Library/Desktop Pictures/

    • disable SIP
    • reboot
    • open terminal and make System partition writable sudo mount -uw /
    • copy wallpaper with root sudo cp path/to/wallpaper System/Library/Desktop\ Pictures/
    • OPTIONAL: copy custom thumbnail (same name as wallpaper) with root sudo cp path/to/wallpaper System/Library/Desktop\ Pictures/.thumbnails/
    • enable SIP
  4. Hardcore

    • use Xcode: attach to process com.apple.preference.desktopscreeneffect.desktop.remoteservice and Debug view hierarchy
    • find the incorrect popup button address
    • pause program execution
    • run command [0xaddress setHidden:YES]
    • resume program execution
    • modify wallpaper selection to Dynamic

Explanation:

Starting macOS Catalina the system prefers Dark still image on dark appearance. Due to bug 2 overlaping popup buttons are displayed. For images inside System/Library/Desktop Pictures/ the disableCustomPlacement is set to YES (this makes the other popup to be hidden) . All other locations will have this property set to NO (this causes 2 popups to be displayed).

 Derived Properties:
     pictureChangeIsActive:  0 
     canSetBackgroundColor:  0 
     disableCustomPlacement: 0 >

Debug panel enter image description here

1
  • The first one looks like it worked for me (or at least it's not showing the night picture like it did when selected through the preferences menu...we'll see if it updates automatically or not) Thanks!! Commented Aug 18, 2020 at 0:52
6

What worked for me on Catalina 10.15.7 was to simply create a Desktop Pictures folder in the root Library folder at the same path, rather than trying to modify System/Library. In other words, instead of /System/Library/Desktop\ Pictures which is restricted, place your custom pictures at /Library/Desktop\ Pictures, and you should find they show up correctly in the control panel.

3
  • Solution still works on Big Sur 11.2.1!
    – Picard
    Commented Mar 4, 2021 at 18:10
  • Can confirm this still works on Big Sur 11.6 Commented Sep 24, 2021 at 5:07
  • Still works in Monterey 12.0.1 👍
    – comfreak
    Commented Nov 7, 2021 at 15:09
5

As the Library/Desktop Pictures/ is located under /System/ (which is protected by SIP), users don't have write access in there. To workaround this, you can boot into Recovery Mode, disable SIP, restart, move pictures into the default folder, boot back into Recovery Mode, enable SIP and then restart. But all of this seems like overkill just to change a wallpaper.

There's another way to change your custom dynamic wallpaper to "dynamic". Do the following instead:

  1. Go to sys prefs > desktop & screen saver and choose the default dynamic Catalina wallpaper. Set it to "dynamic" and exit sys prefs.

  2. Open Finder and navigate to the folder where your custom wallpaper lies. Right click your custom wallpaper and choose Set desktop picture. This will change the wallpaper while also preserving the dynamic setting.

Tested on macOS Catalina 10.15.2

3
  • This is the easiest workaround that doesn't require SIP disabling.
    – Marek H
    Commented Feb 18, 2020 at 8:04
  • 2
    Works great for the primary monitor. Anyway to get this to work for multiple monitors? Commented Apr 7, 2020 at 0:49
  • This also worked for me in Monterey, but placing it in "/Library/Desktop Pictures" enables the usual dynamic wallpaper settings (light, dark, dynamic).
    – comfreak
    Commented Nov 7, 2021 at 15:13
4

Update!

I found a solution that works on Catalina and should work on Big Sur too (although this hasn't been tested).

Your custom dynamic wallpapers can be stored anywhere and should be added to the Desktop & Screen Saver prefpane using the plus button in the bottom left.

Once you have your custom wallpapers imported, navigated to Accessibility settings and enable VoiceOver. Using VoiceOver, you can navigate (using tab) down to the dropdown menu for selection of screen fill preference or the dropdown menu for selection of dynamic preference (Dark, Light, or Dynamic).

You can toggle through these options using arrow keys and select Dynamic to enable your custom .heic file to dynamically change throughout the day (if the data is there).

enter image description here

This method requires no disabling of SIP or any modification of permissions.

Enjoy!

2
  • Very nice answer!
    – Marek H
    Commented Nov 13, 2020 at 3:43
  • I'd like to point out you don't need to enable VoiceOver to do this. You can simply check the "Use keyboard navigation to move focus between controls" under the Keyboard → Shortcuts tab in the system preferences. You can leave this on as I find it pretty useful and not as intrusive as VoiceOver. Same technique though. Edit: and sadly, this technique won't work for setting the wallpaper on an other monitor than the primary display.
    – Habovh
    Commented Nov 17, 2020 at 10:46
3
  • download fancy dynamic wallpapers(.heic files) from this website
  • put the .heic files under /Library/Desktop Pictures (P.S. before Mac OS Catalina, it allows you to put the pictures anywhere. But in Catalina, putting the files under this specific folder is required, otherwise, you could only see dark still wallpaper even if you set it to dynamic.)
  • system settings: enter image description here
1
  • 1
    Works on Monterey 12.0.1 👍
    – comfreak
    Commented Nov 7, 2021 at 15:14
2

The issue is that the menus are overlapping each other, and you can't click on the underneath menu to select Dynamic.

You can work around this by clicking on the preview image next to the dropdown menu to highlight it, and then press Tab. This selects the correct dropdown. You can then press down arrow to open the menu, and select Dynamic.

2

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:

Screenshot from DB browser for SQLite on the "Browse data" tab showing the "preferences" table

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.

2
  • On Big Sur and all my "data_id" are larger than 100
    – Marek H
    Commented Sep 24, 2021 at 8:29
  • There might be some new modes from recent updates. What you can do is use the System Preferences to set a stock wallpaper to dynamic, try to figure out which picture_id represents this stock wallpaper, note the data_id for the associated key 20 and then apply the same data_id value to your custom wallpaper. That's basically how I came up with the 9 value in my original post.
    – Habovh
    Commented Sep 27, 2021 at 9:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .