Files
DarkRoom/tools/manual
dtourolle d790961b28
Benchmarks / CPU and I/O (per commit) (push) Failing after 30s
Benchmarks / Frame budget (on demand) (push) Skipped
Build and test / Desktop (Linux) (push) Failing after 47s
Build and test / Layer separation (push) Successful in 27s
🐳 Android image / Build and push (push) Successful in 3s
Build and test / android-image (push) Successful in 4s
🐳 Windows image / Build and push (push) Successful in 1s
Build and test / windows-image (push) Successful in 1s
Traceability / Requirement traces (push) Failing after 38s
Build and test / Android (aarch64) (push) Failing after 2m24s
Build and test / Windows (x86_64, cross) (push) Failing after 3m21s
Add the manual: every feature pictured from the application itself
docs/manual/README.md is a tour for a photographer opening DarkRoom for
the first time — one picture per thing, moving where movement is the
point. tools/manual/ is how the pictures are made: drive.py puppeteers the
desktop build on a private Xvfb (launch, click, drag, type, screenshot,
record), scenes.py is each picture as a script, and record.sh runs them
all over a folder and writes the results into docs/manual/media/.

The media is in LFS, with the CI pulls excluding it as they exclude the
fixtures; a screenshot changes wholesale when the interface does.

Nothing in the pictures shows a person, by design: the demo library is
seventy urban and alpine frames, chosen from the catalog's rows that face
detection found nobody in.

The traceability matrix is regenerated here after the rebase that
brought this branch up to master.
2026-09-20 00:26:00 +02:00
..

tools/manual — the pictures in docs/manual

record.sh <library> drives the desktop build on a private X server and records every scene in scenes.py into docs/manual/media/. drive.py is the puppeteer underneath — launch, click, drag, type, screenshot, record — and is usable on its own to look at a panel after changing it:

DR_HOME=/var/tmp/x tools/manual/drive.py launch /some/folder
tools/manual/drive.py click 1543 22        # Settings
tools/manual/drive.py shot /tmp/settings.png
tools/manual/drive.py stop

The demo library is the author's: seventy frames with no people in them, the fixtures/pano set among them. The scenes' cell coordinates are for that grid, at 1600×1100; the panel coordinates hold for any library.

Two things the scripts know that are not obvious: a Slint TouchArea wants a held press, not xdotool's click; and the app is driven on Xvfb rather than the desktop because under XWayland at scale 2 a pointer warp lands at twice the coordinate asked for.