Background fit modes: host renders
Evidence class: host render (headless Cairo/image pixels from the
production placement code). Not a QEMU run, not a native grim capture and not
a panel photograph; task 3.2 of
openspec/changes/the-background-chooser-supports-fill-solid-and-video stays
open until the same five modes are captured on the board.
Base revision: 0785fc711838 (master), candidate: the commit that adds this
directory on branch bg-fill-solid.
Sources (pinned built-in themes, omacom/omarchy revision
28ceaae70ebac3a0edcc21f2faa77a90dc6d404c, as packaged by
nix/handheld-theme-default; see ../bundled-backgrounds-host.md):
| Theme | Mode | Source image | background role |
|---|---|---|---|
catppuccin | dark | backgrounds/2-waves.webp (landscape) | #1e1e2e |
catppuccin-latte | light | backgrounds/1-color-fade.webp (1536x1024) | #eff1f5 |
Command (from the repository root, host cargo, store path of the packaged
default):
T=/nix/store/1aq21qmfshf527fy6r62h39crfkpi1px-handheld-theme-default-28ceaae7/share/omarchy/themes
cargo run --offline --manifest-path nix/rust-shell-client/Cargo.toml \
--example render_background_fit_evidence -- \
docs/evidence/omarchy-themes/background-fit-modes-host \
dark-catppuccin $T/catppuccin/backgrounds/2-waves.webp '#1e1e2e' \
light-catppuccin-latte $T/catppuccin-latte/backgrounds/1-color-fade.webp '#eff1f5'
Each PNG is 284x616 (the 568x1232 panel at half size, to keep committed bytes
small; the placement is scale-invariant). The harness writes a generation
report.json carrying fit_mode and the palette’s background, reads it with
appearance::generation_wallpaper_fit (the function the shell uses) and renders
through BackgroundCache::render, so the colour and mode come through the real
resolution path.
What each image shows for a landscape source on a portrait canvas:
crop: aspect-preserving cover, centred; the sides are trimmed.fit: aspect-preserving, whole image visible, black bars above and below (the pre-existing letterbox colour).center: native pixels, centred, no scaling; black outside the source.fill: stretched to the full canvas, no bars and no crop; the picture is distorted (new in this change).solid: no image at all, the theme’s ownbackgroundrole (new in this change).
Limits: panel colour, gamma and AMOLED appearance are not represented; no
touch interaction, no chooser rendering and no helper round trip is exercised
here. The chooser control (tapping the “Backgrounds” heading) is covered by
theme_ui unit tests only.