A TypeScript web app for LG webOS TVs (webOS 5 / Chromium 68 and newer), driven by the remote: Movies and Series search with the Trakt lists, Library with status, title and file-property filters and download marks, seasons and episodes, release search and grab, Downloads, Calendar, Settings and Log. It talks to Radarr, Sonarr, SABnzbd and Trakt directly (they answer cross-origin requests); the arr-tui config is baked in at build time and can be changed on the TV. dev/screenshots/server.py answers cross-origin requests and accepts writes for it; webos/dev/drive.mjs drives the app in Chromium for screenshots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.8 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, 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.