Wallpaper
Material You seed colour → derived ColorScheme, computed by the same
algorithm Android uses for system wallpaper-driven theming
(material-kolor / dynamic-color-utilities).
At a glance
| Kind | compose/wallpaper |
| Schema version | 1 |
| Modules | :data-wallpaper-core (published) · :data-wallpaper-connector |
| Render mode | default |
| Cost | low |
| Token usage | Inline JSON, not yet benchmarked. See token usage. |
| Transport | inline |
| Platforms | Android · Wear |
What it answers
- Given a seed colour and palette style, what Material 3
ColorSchemedoes the system derive? - How does the scheme change across
TonalSpot,Vibrant,Expressive,Monochrome, etc.? - What does the same composable look like for three different wallpaper seeds without booting an emulator?
The connector primes a WallpaperOverride so consumer code that
reads the dynamic colour scheme sees the requested seed and palette
style.
What it does NOT answer
- It does not extract a seed from a real wallpaper bitmap — you supply the seed; that is upstream of this product.
- It does not opine on contrast accessibility — pair with
a11y/atfunder the chosen scheme. - The schema of
derivedColorSchemematchescompose/theme’scolorScheme; for which composables consumed which token, fetchcompose/themeinstead.
Use cases
- Render Material You previews of a “what does this app look like for users with different wallpapers” PR review.
- Catch seeds that produce inaccessible contrast pairings on a critical CTA before they ship.
- Build a marketing screenshot set across the standard Material You palette styles.
Payload shape
Material3WallpaperProduct.KIND / WallpaperPayload in
:data-wallpaper-core.
// compose/wallpaper
{
"seedColor": "#FF6750A4",
"isDark": false,
"paletteStyle": "TONAL_SPOT",
"contrastLevel": 0.0,
"derivedColorScheme": {
"primary": "#FF6750A4",
"onPrimary": "#FFFFFFFF",
"surface": "#FFFFFBFE"
// …
}
}
Enabling
Pass a WallpaperOverride on renderNow.overrides.wallpaper (MCP)
to drive the seed / style / contrast / dark mode.