A fast terminal browser for discovering and managing movies and TV series. Pulls top-rated and popular lists from TMDB, keeps your own wish and dump lists, renders posters inline. Rust feature port of IMDB-terminal, built on crust and glow.
"Cut down the time spent searching in favor of time spent watching and cuddling."
Movie browser with genre filter, wishlist/dump pane, and poster preview.
# Prebuilt binaries (Linux x86_64/aarch64, macOS Intel/Apple Silicon):
# https://github.com/isene/watchit/releases
# Or build from source:
git clone https://github.com/isene/watchit
cd watchit
cargo build --release
./target/release/watchit- kitty, wezterm, foot, or iTerm2 for inline poster rendering (via glow)
- ImageMagick + w3m-img if your terminal only supports w3m-style images
- No Ruby, no node, no pip. One static binary.
watchit requires a free TMDB API key. Get one at https://www.themoviedb.org/settings/api (signup → "Create" under API → choose "Developer" → fill in the form, any plausible app description works). Save the v3 key.
Then either:
- Launch watchit and press K to enter the key (or
Rto set the streaming region, ISO code likeUS,NO,GB). - Or edit
~/.watchit/config.ymldirectly:tmdb_key: "your-v3-api-key-here" region: "US"
Press I to fetch the top-rated movies and TV from TMDB. Press L to additionally pull the popular-now lists.
If you used the Ruby IMDB-terminal gem, watchit auto-imports its config and cached posters:
~/.imdb.yml→~/.watchit/config.yml~/.imdb/data/list.json,details.json,tt*.jpgposters →~/.watchit/data/
Note: the imported list/details use IMDB tconst IDs (tt1234567),
which watchit no longer queries against (IMDB now blocks plain
HTTP). Re-press I to refetch with TMDB IDs; the wish/dump
lists' tconst entries will be stale until re-added via search (/).
- Top-rated and popular lists for movies and series, pulled from TMDB
- Load additional lists — popular movies and TV (press
L) - Per-title details: plot, cast, directors, runtime, genres, release date, seasons/episodes for series, content rating
- Streaming info — shows where each title is available in your region (TMDB watch/providers)
- Five panes: list, genre filter, wish, dump, detail with poster
- Focus-based borders — the active pane highlights itself
- Poster display inline in the detail pane (kitty/sixel/w3m via glow)
- Genre filtering: include (
+), exclude (-), or clear (Space) on the highlighted genre - Rating / year filters, sort by rating or alphabetical
- Wish and dump lists separate for movies and series
- Multi-search (
/) across TMDB movies and TV - Background threads for fetch — UI never blocks
- Verify (
v) — fetch missing details; Refetch (f) — re-pull current item - Duplicate removal (
D) across all lists
| Key | Action |
|---|---|
TAB / S-TAB |
Cycle focus between list / genres / wish / dump |
UP / DOWN, j / k |
Move within focused pane |
PgUP / PgDOWN |
Page |
HOME / END |
First / last |
+ |
Add to Wish (list) / Include genre (genres) |
- |
Dump (list) / Exclude genre / Remove (wish+dump) |
Space |
Clear genre filter on highlighted genre |
l |
Toggle Movies / Series view |
o |
Toggle sort (rating / alphabetical) |
r |
Set minimum rating |
y / Y |
Set min / max year |
/ |
Search TMDB for new titles |
I |
Fetch top-rated movies + TV (background) |
i |
Incremental fetch of missing details |
f |
Re-fetch current item |
v |
Verify data integrity |
L |
Load popular movies + TV (background, no duplicates) |
D |
Remove duplicate entries |
K |
Set TMDB v3 API key |
R |
Set streaming region (ISO code) |
W |
Save config now |
? / q |
Help / Quit |
~/.watchit/config.yml (auto-created / auto-imported on first run):
tmdb_key: ""
region: US
rating_min: 7.5
year_min: 0 # 0 = no filter
year_max: 0
sort: rating # "rating" or "alpha"
view: movies # "movies" or "series"
show_posters: true
movie_limit: 250
series_limit: 250
wish_movies: []
wish_series: []
dump_movies: []
dump_series: []
genres_include: []
genres_exclude: []A TMDB API key is required (see "First Run" above). After the key is set, pick the region for streaming-availability lookups:
- Press
Rand enter an ISO country code (e.g.US,GB,NO) - Press
ito refetch details; streaming providers appear in the detail pane for titles available in that region
~/.watchit/
├── config.yml # Your preferences (incl. tmdb_key, region)
└── data/
├── list.json # Movie + series metadata (title, rating, year, genres)
├── details.json # Per-title details cache
└── *.jpg # Poster images (TMDB IDs)
All data comes from a single backbone:
- Lists: TMDB top-rated and popular endpoints
(
/movie/top_rated,/tv/top_rated,/movie/popular,/tv/popular) - Per-title details: TMDB
/{movie|tv}/{id}withappend_to_response=credits,external_ids,watch/providers,release_dates— one request returns plot, cast, crew, streaming providers, region-specific content rating, and IMDB cross-reference id - Search: TMDB
/search/multi(movies + TV in one query)
The detail pane shows two click-through links per title: TMDB (the data source) and IMDB (when TMDB has the external id on file — most films from the last ~50 years).
Why TMDB and not IMDB scraping: IMDB now sits behind a CloudFront WAF that serves a JavaScript challenge to plain HTTP, so the old JSON-LD scrape returns nothing. TMDB has a free, well-documented REST API and the same metadata for the same titles.
See the Fe₂O₃ suite overview and the landing page for the full list of projects.
- rush — shell
- pointer — file manager
- kastrup — messaging hub
- scroll — web browser
- tock — calendar
- nova — astronomy panel
- watchit — TMDB browser
All Fe2O3 tools share crust for the TUI and are installed as single static binaries. Fast startup, no runtime dependencies.
Unlicense (public domain). Borrow or steal whatever you want.