Rust theme chooser: paired QEMU touch checkpoint
On 2026-09-24, tests/rust_theme_chooser_qemu.py drove actual Wayland touch
through the cross-built Sway compositor and corrected Rust frontend under
headless QEMU. The theme command was a local synthetic fixture that logged
argv and returned the installed command’s schema-1 JSON shape. It never called
the production theme transaction or changed user themes.
Exact artifacts:
- Rust frontend source
f80eedcd19e563d2804fe682ed9d75deac9a3adb, target/nix/store/rlb1kr180g8khgnqx83kfynl5lyvv0h5-k230-shell-rust-riscv64-unknown-linux-gnu-0.1.0/bin/k230-shell-rust. - Sway target
/nix/store/6jx6nlxxc2hy5viidq7msnlpshidd5w6-sway-unwrapped-riscv64-unknown-linux-gnu-1.12/bin/sway, from the direct-drag package/nix/store/j4cq3c28dnk6jybi66k32a1ydzx80ffr-k230-card-shell.
python3 tests/rust_theme_chooser_qemu.py \
--sway /nix/store/6jx6nlxxc2hy5viidq7msnlpshidd5w6-sway-unwrapped-riscv64-unknown-linux-gnu-1.12/bin/sway \
--rust /nix/store/rlb1kr180g8khgnqx83kfynl5lyvv0h5-k230-shell-rust-riscv64-unknown-linux-gnu-0.1.0/bin/k230-shell-rust \
--output /tmp/k230-theme-chooser-qemu-f80-2
# PASS paired Sway/Rust theme chooser QEMU touch, synthetic backend; no physical touch
The test injected Settings → Themes, a 300 px list scroll, a row preview,
selection of a different still background, Cancel, a second preview, and
Apply. It compared screenshot pixels at each scene transition; the preview
and selected-background images were opened and visually inspected. The
fixture’s complete command sequence was list, preview, preview --background, list, preview, activate --expected-generation --background.
Only the final explicit Apply produced activate; its generation matched the
reviewed preview. Both theme identities and images were synthetic, and no
private app screenshot or secret was recorded.
This proves the cross-built chooser’s route, touch hit areas, scroll rendering, selection feedback, and command dispatch in QEMU. It does not prove a production theme transaction, installed image, real panel response, physical touch, video background playback, or all-theme compatibility. Those gates remain UNVERIFIED.