plex-tui
plex-tui is a terminal Plex client for browsing and watching media.
It is built around a quiet three-pane interface: libraries on the left, artwork and media selection in the center, and playback context on the right. The app is keyboard-first, media-first, and designed for choosing something to watch without leaving the terminal.
Plex, from the terminal.
Watch the showcase or install from your package channel:
brew trust --tap so1omon563/plex-tui
brew tap so1omon563/plex-tui
brew install plex-tui
plex-tui --smoke
What It Feels Like
plex-tui is not a server administration tool and it is not a retro terminal novelty. It treats the terminal as a modern application surface: structured, calm, and direct.
Real media gets real artwork. Details unfold only when they help the decision. The footer keeps common actions close, while the full keyboard reference stays in Help.
Screenshots
Three surfaces carry the shape of the app: the main movie grid, personalized Continue Watching state, and first-class TV browsing.
Movies: the primary browsing surface
Poster artwork carries the page. The selected item gains just enough metadata and action context to make the next choice clear.
Continue Watching: Plex state at the front
In-progress media opens from Plex playback state, with resume progress and direct playback actions visible without changing modes.
TV Shows: shows, seasons, and episodes
TV libraries use the same browsing rhythm as movies while keeping show context clear as you move into seasons and episodes.
What It Does
- Browse Plex libraries through a focused terminal interface.
- Navigate with explicit keyboard flows.
- Launch playback through
mpvwhile Plex remains the source. - Keep diagnostics near the running app.
- Fit macOS and Linux terminal habits.
Install
plex-tui requires Python 3.11 or newer, a Plex account/server, and mpv for
playback.
Homebrew
brew trust --tap so1omon563/plex-tui
brew tap so1omon563/plex-tui
brew install plex-tui
plex-tui --smoke
The Homebrew formula installs mpv automatically.
PyPI
pipx install plex-tui
plex-tui --smoke
plex-tui
This is the recommended cross-platform Python install path. Install mpv
separately with your platform package manager.
Arch Linux
paru -S plex-tui
plex-tui --smoke
Any AUR helper can be used; paru is only an example.
From GitHub
pipx install "git+https://github.com/so1omon563/plex-tui.git"
pipx install "git+https://github.com/so1omon563/plex-tui.git@v0.13.6"
Use this path when testing main or a tagged release before it reaches your
preferred package channel.
First Run
Launch plex-tui and follow the Plex browser login. The app saves the selected
server connection and token in the platform config directory.
Useful checks:
plex-tui --version
plex-tui --smoke
plex-tui --diagnostics
plex-tui --config-path
Read the User Guide for configuration, playback, keyboard shortcuts, artwork modes, diagnostics, and CLI helper commands.
Current Surface
- Plex browser login, server selection, and Plex Home profile switching.
- Library-first sidebar with Continue Watching, Playlists, normal library browsing, and a Plex Services row for optional Discover, On Plex, and categorized non-DRM Live TV features.
- Movie, show, season, episode, collection, category, hub, and playlist views.
- Poster artwork in grid view, with Kitty/Ghostty native image support when available and block art elsewhere.
- Current-library search, global Plex search, and read-only CLI helpers.
- External
mpvplayback with play-from-start, resume, optimized transcode, progress reporting, watched state, and active pause/seek/stop controls. - Audio and subtitle preference pickers with saved defaults.
- Settings for stream preferences, playback display, artwork, grid density, library visibility/order, optional sidebar entries, and diagnostics.
Documentation
- User Guide: configuration, playback, key bindings, artwork, diagnostics, and CLI helpers.
- Documentation Index: the full user-to-maintainer path.
- Design: the product and visual principles behind the app.
- Architecture: runtime shape and source map.
- Packaging: PyPI, Homebrew, AUR, and packaging automation.
- Release Checklist: release prep, validation, and publishing.
- Roadmap: planned follow-up work.
- Contributing: local development and PR expectations.
Development
git clone https://github.com/so1omon563/plex-tui.git
cd plex-tui
python3 -m venv .venv
source .venv/bin/activate
make install-dev
make check
Common commands are documented in Contributing. Public release and package maintenance lives in Release Checklist and Packaging.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plex_tui-0.16.3.tar.gz.
File metadata
- Download URL: plex_tui-0.16.3.tar.gz
- Upload date:
- Size: 11.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18f9e8889b1a26ee58762a856e5d2ed52e07fe2f898bc2ce9eadcb6980142a2e
|
|
| MD5 |
4e1b5752ca2b556019558767c4873598
|
|
| BLAKE2b-256 |
80ab893cfc95fcf84e67a9cc2f851569fd81aaa4a3cb06f2bf359244216ba46a
|
Provenance
The following attestation bundles were made for plex_tui-0.16.3.tar.gz:
Publisher:
bump.yml on so1omon563/plex-tui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plex_tui-0.16.3.tar.gz -
Subject digest:
18f9e8889b1a26ee58762a856e5d2ed52e07fe2f898bc2ce9eadcb6980142a2e - Sigstore transparency entry: 2086284864
- Sigstore integration time:
-
Permalink:
so1omon563/plex-tui@6c8d38c646db887eec2b49388a6529cd5db9cc57 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/so1omon563
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
bump.yml@6c8d38c646db887eec2b49388a6529cd5db9cc57 -
Trigger Event:
pull_request
-
Statement type:
File details
Details for the file plex_tui-0.16.3-py3-none-any.whl.
File metadata
- Download URL: plex_tui-0.16.3-py3-none-any.whl
- Upload date:
- Size: 96.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
482a12d397a2f7804948b71091529e9a6d41409abb118e13a67d035e630af120
|
|
| MD5 |
d50bb4840254a1013afff9cf0217037d
|
|
| BLAKE2b-256 |
d5d9895bd33acf9bb8bf8df644bc1eff77936d838b2b642f04ff6e0170c8b611
|
Provenance
The following attestation bundles were made for plex_tui-0.16.3-py3-none-any.whl:
Publisher:
bump.yml on so1omon563/plex-tui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plex_tui-0.16.3-py3-none-any.whl -
Subject digest:
482a12d397a2f7804948b71091529e9a6d41409abb118e13a67d035e630af120 - Sigstore transparency entry: 2086285000
- Sigstore integration time:
-
Permalink:
so1omon563/plex-tui@6c8d38c646db887eec2b49388a6529cd5db9cc57 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/so1omon563
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
bump.yml@6c8d38c646db887eec2b49388a6529cd5db9cc57 -
Trigger Event:
pull_request
-
Statement type: