IPTV TUI: M3U+EPG
- Rust 96.5%
- Shell 2.8%
- Makefile 0.7%
| assets | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Makefile | ||
| README.md | ||
| TODO | ||
IPTV TUI RS
A terminal UI for IPTV with local + remote playback over SSH, built with ratatui in Rust.
Table of Contents
Prerequisites
- A media player in your
PATH(mpvdefault) - (optional) SSH key-based auth for remote playback
Installation
cargo install --git https://git.kvndl.xyz/kvndl/iptv-tui-rs.git
Or from local source:
git clone https://git.kvndl.xyz/kvndl/iptv-tui-rs.git
cd iptv-tui-rs
cargo install --path .
Configuration
Config is created at ~/.config/iptv-tui-rs/config.toml on first run:
m3u_url = "https://example.com/playlist.m3u"
epg_url = "https://example.com/epg.xml"
# player = "mpv"
# player_args = "--fullscreen"
# cache_timeout_minutes = 30
Remote Playback
Play streams on a remote machine (e.g. a Raspberry Pi) over SSH.
- Deploys a helper daemon over SSH on first use
- Persistent SSH channel — no per-command overhead
- Auto-reconnects if the player crashes
- Toggle local/remote with
Ctrl+R
remote_host = "pihost" # SSH host alias from ~/.ssh/config
# remote_player = "mpv"
# remote_player_args = "--vo=drm --hwdec=auto"
Keybinds
| Key | Action |
|---|---|
Enter |
Play selected stream |
s |
Stop player |
/ |
Search channels |
Esc |
Clear search/filter |
r |
Refresh M3U/EPG data |
Ctrl+R |
Toggle local/remote playback |
a |
Show all channels |
w |
Show channels with EPG programs |
↑/↓ |
Navigate channels |
←/→ |
Skip 5 channels |
J/K |
Skip 10 channels |
PgUp/PgDn |
Skip 20 channels |
q |
Quit |
M3U and EPG data are cached in ~/.cache/iptv-tui-rs/.