IPTV TUI: M3U+EPG
  • Rust 96.5%
  • Shell 2.8%
  • Makefile 0.7%
Find a file
2026-03-09 01:55:32 -06:00
assets *Initially* 2026-03-09 01:55:32 -06:00
src *Initially* 2026-03-09 01:55:32 -06:00
.gitignore *Initially* 2026-03-09 01:55:32 -06:00
Cargo.lock *Initially* 2026-03-09 01:55:32 -06:00
Cargo.toml *Initially* 2026-03-09 01:55:32 -06:00
Makefile *Initially* 2026-03-09 01:55:32 -06:00
README.md *Initially* 2026-03-09 01:55:32 -06:00
TODO *Initially* 2026-03-09 01:55:32 -06:00

IPTV TUI RS

A terminal UI for IPTV with local + remote playback over SSH, built with ratatui in Rust.


Table of Contents

demo

Prerequisites

  • A media player in your PATH (mpv default)
  • (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/.