Files
arr-tui/dev/screenshots/README.md
T
nilsandClaude Opus 5.5 b71659b357 dev/screenshots: the tooling for the README screenshots
take.sh builds arr-tui, starts a fake Radarr, Sonarr and SABnzbd with a
made-up library (catalog.py, server.py, generated posters), and runs the
scene scripts in Ghostty under Xvfb, writing docs/screenshots/. Run on the
same day it reproduces the committed pictures byte for byte. make test
also shellchecks the scripts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019reK4DUGYqDUjniWYJvwUW
2026-10-21 17:05:01 +02:00

1.5 KiB

README screenshots

take.sh makes the pictures in docs/screenshots/: it builds arr-tui, starts a fake Radarr, Sonarr and SABnzbd with a made-up library, and runs arr-tui in Ghostty on a virtual X display, following the scene scripts. Nothing real is shown: invented titles, generated posters, dummy API keys (masked in the Config view anyway).

dev/screenshots/take.sh
# on NixOS, with the tools from nixpkgs:
nix-shell -p xvfb-run xorg-server xdotool imagemagick oxipng --run dev/screenshots/take.sh

Needs Go, Python 3, Ghostty, xvfb-run (Xvfb), xdotool, ImageMagick 7 and fontconfig with the DejaVu fonts; oxipng (optional) compresses the PNGs losslessly. It takes about a minute.

File What it is
catalog.py The made-up library: movies (with file details) and series (with seasons).
posters.sh Draws a poster per title into posters/ (gradient, title, year); run by take.sh when posters/ is missing.
server.py The fake services on 127.0.0.1: Radarr 19891, Sonarr 19892, SABnzbd 19893. Library, search, releases, queues, history, calendar, posters.
xshot.sh Runs a command in Ghostty under Xvfb and follows a scene script.
scenes/*.txt What to press and when to take a picture: key, type, sleep, shot <name>.

To change a picture, edit its scene (the key presses depend on the order of catalog.py, e.g. "The Long Orbit" is the 13th movie alphabetically) and run take.sh again. Some views show today's date (Calendar, Downloads), so every run changes those pictures a little.