For reference, the systemd solution would look something like this. The systemd timer essentially replaces the cron job:
~/.config/systemd/user/update-desktop.timer
:
[Unit]
Description=Periodically update the desktop background
[Timer]
# Trigger when hour and minute are 0 (i.e. midnight)
OnCalendar=0 0 * * *
[Install]
WantedBy=timers.target
~/.config/systemd/user/update-desktop.service
:
[Unit]
Description=Update the desktop background with the latest image from somewhere
[Service]
Type=oneshot
# Your script that fetches the image and sets it
ExecStart=/path/to/update-desktop.sh
Once you’ve created these two files, you just need to run
systemctl --user enable update-desktop.timer
to enable it.