Enhancement: Wallpaper could be improved with symlinks
I really love shotwell. I'm using 0.30.10 – “Celle” on Ubuntu 20.04. Shotwell is how I tag and manage the pictures I post to my blog. They're almost all jpegs stored locally as well as being uploaded to "Blogger".
Please forgive me when I say that the wallpaper feature is not very good. I have thousands of pictures, and when I asked shotwell to turn them into a changing wallpaper, it takes every picture I have selected and copies them to ~/.local/shotwell/wallpaper, and generates the xml file there. This takes a long time, and wastes a lot of storage space. This may be a minor problem to you, but to me it matters.
So I wrote a little program in C++ which navigates to all the directories where I keep pictures, and create symlinks to them in the directory ~/Pictures/wallpaper. I generate a wallpaper.xml file there. Then I used the program Gnome Tweaks to select that xml file for the wallpaper. I figured there might be file name collisions so I make the name of each symlink unique by numbering them sequentially. The program ignores pictures that are not jpegs.
I didn't know it would work, but it did. The only feature I've added is to create the symlinks in a random order so that it shuffles the pictures.
I don't know anything about Vala, and I know just enough about C++ to get into trouble. But it looks like Vala has a POSIX library with a symlink method. And GLib.FileUtils has that functionality too.
As I wrote this I decided to browse your source code. I only have a hazy understanding, but it looks like the wallpaper stuff is in "DesktopIntegration.vala", and it calls "photo.export", which would explain the file duplication. Now perhaps your target user doesn't keep all their pictures in jpegs, so you figure that you have to export the files, whether they are already jpegs or not. Maybe I'm just an edge case weirdo. But it would be nice to not have to write a little hack and use your program instead. Maybe there are other jpeg weirdos out there too.