I can manage my own wallpaper on the RPI3 in Raspbian Lite by writing an image directly to the framebuffer with..
convert /path/to/image.jpg -write bgra:/dev/fb0 null:
Running fbset
I get the following framebuffer info on the RPI3 for my television connected via HDMI..
mode "1920x1080"
geometry 1920 1080 1920 1080 32
timings 0 0 0 0 0 0 0
rgba 8/16,8/8,8/0,8/24
endmode
However, this doesn't work on the RPI4. I get a semblance of the image with distorted greens so I imagine it requires a different format or something.
Running fbset
on the same television connected via hdmi I get the following framebuffer info on the RPI4..
mode "3840x2160"
geometry 3840 2160 3840 2160 16
timings 0 0 0 0 0 0 0
accel true
rgba 5/11,6/5,5/0,0/0
endmode
I tried..
convert /path/to/image.jpg -depth 16 -write bgra:/dev/fb0 null:
but similar result.
I was trying different color depths and..
convert /path/to/image.jpg -depth 4 -write bgra:/dev/fb0 null:
gave me the correct sized image on the screen but the colors were all mostly green and distorted.
I've tried using FBI and FIM but they don't allow me to manage my own wallpaper. I can't call FBI with an image and then call it again to change the image.