Skip to content

Repository files navigation

twui

Release CI Go version Downloads License

Anonymous Twitch TUI for browsing and watching live streams.

No Twitch account, no OAuth, no tracking. Plays through Twitch ad breaks with live HLS-session bypass — the player never stalls on a midroll. Runs mpv or vlc under the hood.

twui demo

Features

  • Browse live streams by category or search channels by name
  • Favorites (WatchList tab) with live status, viewer count, uptime
  • Ignore list — hide channels everywhere with x
  • Ad-break bypass — segment-level ad filtering plus a live HLS-session swap under the running player, so midrolls turn into a short glitch instead of a silent pause. MPEG-TS PCR/PTS/DTS and continuity counters are rewritten at the swap boundary to keep the player's demuxer happy.
  • Quality picker (i) or auto-best
  • Theme picker (t) with 11 presets; honors NO_COLOR
  • Auto-refresh at a configurable interval
  • ASCII fallback for terminals without Unicode (--ascii, TERM=linux)
  • Live chat pane per playing stream (anonymous, read-only); opens on demand with C or automatically via [chat] auto-open. Pause on scroll-back, cycle with c, hide with C

Install

Binary release (recommended): download the archive for your platform from Releases, extract, move twui to somewhere on your $PATH.

# example for linux/amd64
curl -LO https://github.com/Stoica-Mihai/twui/releases/latest/download/twui_<version>_linux_amd64.tar.gz
tar -xzf twui_<version>_linux_amd64.tar.gz
sudo mv twui /usr/local/bin/

From source:

git clone https://github.com/Stoica-Mihai/twui
cd twui
make build
./twui

Requires Go 1.25+ and one of mpv (default) or vlc on your $PATH.

Usage

twui                 # launch the TUI
twui 1080p60         # launch with a default quality hint
twui --ascii         # 7-bit safe glyphs
twui --refresh 1m    # auto-refresh the current view every 60s

Keys (see ? in the TUI for the full list):

Key Action
j / k Navigate
Tab / Shift+Tab Switch view
Enter Launch stream / open category
/ Search
f Toggle favorite
x Toggle ignore
i Quality picker
t Theme picker
r Related / host channels
? Help overlay
q / Ctrl+C Quit

Related overlay (opened with r):

Key Action
j / k Navigate
Enter Launch the selected stream
f Toggle favorite on the selected channel
x Ignore the selected channel (drops from the overlay)
Esc / r Close

Chat pane (appears when a stream is playing):

Key Action
c Cycle focus between live sessions
C Toggle chat pane visibility
[ / ] Scroll chat back / forward one line (back auto-pauses)
{ / } Scroll chat back / forward one page
Mouse wheel over pane Scroll (auto-pauses)
Space Resume autoscroll, jump to newest
Esc Hide pane

Config

Lives at ~/.config/twui/config.toml and is written in place on favorite / ignore / theme changes.

[twitch]
channels    = ["streamer1", "streamer2"]   # favorites
ignored     = ["channelX"]
low-latency = false

[general]
player      = "mpv"          # or "vlc"
player-args = []             # extra player args
refresh     = "30s"          # auto-refresh interval; 0 or empty = disabled

[theming]
theme = "catppuccin"         # or: default, dracula, nord, solarized-dark,
                             # gruvbox, tokyo-night, rose-pine, kanagawa,
                             # everforest, one-dark
# Optional per-field hex overrides:
# border = "#..."
# text   = "#..."
# live   = "#..."

[chat]
enabled     = true           # set false to never open IRC connections
max-backlog = 500            # per-session message cap
auto-open   = false          # true: connect + show pane on stream launch
                             # false (default): connect lazily when you press C

Environment variables:

Variable Effect
NO_COLOR Disable all ANSI color output
TWUI_ASCII Force ASCII glyphs (same as --ascii)
TWUI_* Override any config key (Viper convention)

Development

make test            # go test ./...
make test-race       # with -race
make test-live       # network required; Twitch API canary
make coverage        # coverage.out + summary
make lint            # requires golangci-lint installed
make fmt             # gofmt + goimports

About

Anonymous Twitch TUI — browse live streams, watch with mpv/vlc, read chat. No account, no OAuth, built-in ad blocking.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages