youtube tui
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
bivashy 200737dd89
All checks were successful
ci/woodpecker/tag/release Pipeline was successful
feat(player): list related videos beside the player
Videos opened from anywhere but a playlist now show YouTube's related
videos (from video_details) in the sidebar instead of the page they
came from. n plays the top related video, p returns to the previous
one, and autoplay: all follows the related list, also in the
background. Playlists keep their own list. If related videos can't be
loaded, the source list is used as before, without an error.
2026-11-04 18:09:26 +05:00
.woodpecker build: fetch the rustypipe fork from github 2026-10-30 15:22:02 +05:00
assets/thumbnails feat: add media browser with navigation, config and mpv player 2026-10-29 23:58:11 +05:00
src feat(player): list related videos beside the player 2026-11-04 18:09:26 +05:00
.gitignore docs: add readme with preview gifs 2026-10-30 02:53:26 +05:00
Cargo.lock feat(home): show item info and hide its home section from ytp 2026-11-04 17:54:44 +05:00
Cargo.toml chore(release): bump version to 0.2.3 2026-10-31 00:30:50 +05:00
README.md build: fetch the rustypipe fork from github 2026-10-30 15:22:02 +05:00

ytp

A keyboard-driven YouTube client for the terminal. Browse, search and watch videos without leaving it: real thumbnails, vim-style navigation, and mpv playback right inside the terminal.

Browsing Playing

Features

  • Grid or list view with real thumbnails (kitty graphics protocol)
  • Search for videos, playlists and channels, with endless scrolling
  • Playlists and mixes you can open, with autoplay through the whole list
  • Built-in player: mpv draws into the terminal (or its own window), with an up-next sidebar, fullscreen and volume that sticks between sessions
  • YouTube login via a TV code: your home feed, subscriptions and account history
  • Watch history that resumes where you stopped
  • Back and forward through everything you opened, like a browser
  • Configurable keys, layout and player in one YAML file

Requirements

  • A terminal with the kitty graphics protocol (kitty, Ghostty, WezTerm). Others fall back to block-character thumbnails and a separate mpv window.
  • mpv and yt-dlp
  • To build: Rust 1.85+, plus cmake, clang, go, perl and nasm for the TLS library

Build

ytp uses a fork of rustypipe, which Cargo fetches automatically.

cargo build --release
./target/release/ytp

Without YouTube support (offline demo data only, no extra build tools):

cargo build --release --no-default-features

Keys

Key Action
h j k l / arrows move
⏎ open
/ search
v switch grid / list
Esc H / L back / forward
1 2 3 4 home, subscriptions, account, history
f subscription feed (on Subscriptions)
d remove from history (on History)
q quit

In the player:

Key Action
space pause, or replay after the end
h l / J K seek 5 s / 30 s
j k, ⏎ move in the sidebar, play selected
n p next / previous video
+ - volume
f fullscreen
a autoplay on/off

Logging in

Press 3, then ⏎. Open the address shown on another device, enter the code, and ytp logs in by itself.

Configuration

On first start ytp writes ~/.config/ytp/config.yaml with every option and its default. Edit any of them, for example:

default_view: list
player:
  strategy: auto        # auto | integrated | window
  autoplay: playlists   # playlists | all | off
  keybindings:
    fullscreen: ["f", "F"]

Files

Path Contents
~/.config/ytp/config.yaml configuration
~/.local/state/ytp/ytp.db volume and watch history
~/.local/state/ytp/ytp.log error log
~/.local/share/ytp/rustypipe/ YouTube login
~/.cache/ytp/ thumbnails and cached responses (safe to delete)