nix develop: Go, gopls, shellcheck, make, curl, jq, Python, Node.js, oxipng and ImageMagick; on Linux also Ghostty, Xvfb, xdotool, DejaVu fonts and Chromium for the README screenshots and the webOS app. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
# with Nix, everything from the flake's dev shell:
nix develop --command 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, Trakt 19894 (take.sh points arr-tui there with ARR_TUI_TRAKT_URL). Library, search, lists, releases, queues, history, calendar, posters. Like the real services it answers cross-origin requests, and it accepts writes without changing anything, for the webOS app (webos/, npm run demo). |
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.