CinnamonBg owns the Cinnamon desktop background model. It is a small GObject/GIO library (no GTK) shared by every component that reads or writes the background configuration, so they all agree on what the desktop should look like.
It is private to Cinnamon: the library and its typelib install to Cinnamon's own package directory rather than the system ones.
The configuration lives in two keys of the
org.cinnamon.desktop.background GSettings schema:
picture-uri-list (aa{sv}) — an
array of vardicts, one entry per monitor. Each entry is a
CinnamonBgItem: monitor identity (connector,
index) plus what to paint
(picture-uri, picture-options,
the color fields) and whether it rotates
(slideshow, slideshow-source).
background-mode — the model is reshaped for it:
independent holds one entry per connected monitor, mirror and spanned
hold exactly one. cinnamon_bg_list_save()
writes the model, so saving while in mirror or spanned collapses the
key to that single entry and the per-monitor picks are gone.
These two keys are the whole current model.