5.6 KiB
arr-tui
A terminal UI to search for movies and series with Radarr and Sonarr, pick releases by hand, and follow the downloads in SABnzbd.
- Movies / Series: search as you type, add titles with a quality profile and root folder, optionally start the automatic search.
- Interactive search: list the releases Radarr/Sonarr find (approved or rejected, with reasons), sort and filter them (by approval, quality, x265 / x264 / AV1, HDR, Dolby Vision, audio format, language), and grab one. Series: pick a season or a single episode first.
- Posters: the detail panes show the poster at the top right; title, facts, path and plot
flow along its left side and continue at full width below it. It is drawn with colored block characters (works over SSH, needs a terminal
with colors). Library items use the copy stored in Radarr/Sonarr; search results are downloaded
from the metadata provider's image host (TMDb, TheTVDB). Turn it off with
"ui": {"covers": false}."ui": {"cover_style": ...}picks the characters:quadrant(2x2 pixels per cell, every font has them),sextant(2x3, sharper, needs a font with the Symbols for Legacy Computing block, e.g. kitty, WezTerm, foot, Ghostty) orauto(default: sextant on terminals known to support it, quadrant elsewhere). If you see boxes or question marks in the poster, setquadrant. - Library: browse movies (top) and series (below) with a details pane on the right, filter by status (missing / downloaded / monitored) and by file properties (quality, x265 / x264 / AV1, HDR, Dolby Vision, audio format, language), toggle monitoring, trigger searches, remove titles (the files stay on disk unless you tick "Delete files"). Series open into seasons and episodes with per-season and per-episode monitoring, automatic search and release search.
- Calendar: movie releases (cinemas, digital, physical) and airing episodes in one scrolling list grouped by day, starting at today, with poster and plot. More days load as you scroll; include unmonitored items, search for releases or start an automatic search from there.
- Downloads: SABnzbd queue and history plus the Radarr/Sonarr queues. Pause/resume, delete, retry failed downloads, remove from the arr queue and blocklist.
- Log (F6): actions report through popups that fade away; the log keeps the history.
- Download notifications: a popup (and a log entry) when a SABnzbd download finishes or fails,
whichever view is open. SABnzbd's history is checked every 15 seconds; downloads that finished
before arr-tui started are not announced.
"ui": {"notify_downloads": false}turns it off,"bell": truealso rings the terminal bell. - Connection indicators for all three services in the top right;
?shows every key.
Requires Radarr/Sonarr v3+ API (Radarr 5/6, Sonarr 4) and SABnzbd 4+. Only Usenet releases are shown for grabbing, torrents are hidden.
Install
go install git.stinnesbeck.com/nils/arr-tui/cmd/arr-tui@latest
or build from a checkout (make build), or make dist for cross-compiled binaries in dist/.
Configure
Copy config.example.json to $XDG_CONFIG_HOME/arr-tui/config.json (usually
~/.config/arr-tui/config.json), or pass --config path. API keys are in each app under
Settings → General.
{
"radarr": { "url": "http://localhost:7878", "apikey": "...", "default_quality_profile": "HD-1080p", "default_root_folder": "/movies" },
"sonarr": { "url": "http://localhost:8989", "apikey": "...", "default_quality_profile": "HD-1080p", "default_root_folder": "/tv" },
"sabnzbd": { "url": "http://localhost:8080", "apikey": "..." },
"ui": { "refresh_seconds": 3, "covers": true, "cover_style": "auto", "notify_downloads": true, "bell": false }
}
default_* are optional preselections in the add dialog. URL and key can also come from the
environment: ARR_TUI_{RADARR,SONARR,SABNZBD}_{URL,APIKEY}, which takes precedence over the file.
Keep the file private (chmod 600); it holds your API keys.
Keys
| Key | Action |
|---|---|
F1–F6 |
switch view (Movies, Series, Library, Downloads, Calendar, Log) |
Tab, Shift+Tab |
switch panel within a view |
? / F9 |
help |
/ |
focus search box |
Enter, a |
add selected title |
i |
interactive release search |
Tab, f, F, /, t, s, d, i/Enter, r (library) |
movies/series list, status filter, file-property filter, text filter, monitor, search, remove, releases/episodes, reload |
t, u, Enter, s (calendar) |
today, unmonitored, releases, search; scroll for more days |
Enter, i, s, t (episodes) |
expand season / releases, release search, search, monitor |
Enter/g, s, f, F (release list) |
grab, cycle sort, hide rejected, filter by properties |
p, d, t, b, r (downloads) |
pause, delete, retry, blocklist, refresh |
Esc |
back / close dialog |
q, Ctrl+C |
quit |
Development
dev/ has a compose file with pinned Radarr, Sonarr and SABnzbd containers plus a fake indexer;
see dev/README.md.
make test runs vet and the unit tests. The design and
milestone history are in SPECS.md.
Releases: tag and push, then scripts/release.sh (or make release) builds the binaries and publishes
them on Gitea with the matching CHANGELOG.md section. It needs an access token with write access
to the repository in $GITEA_TOKEN or ~/.config/arr-tui-release-token; --check verifies
everything without publishing, --dry-run builds without publishing.
License
MIT, see LICENSE.