YTuff is a terminal music player designed to offer a seamless experience for both local files and YouTube Music. It provides a full Terminal User Interface (TUI) for intuitive navigation, ensuring users can manage their music efficiently without graphical clutter.
Key Features:
Full TUI Navigation: Enables smooth interaction within the terminal, allowing users to browse and control their music effortlessly.
Background Playback Daemon: Ensures uninterrupted music even when the terminal is closed or switched away.
Playlist Management: Offers robust tools for creating, editing, and playing playlists, enhancing organizational capabilities.
Lyrics and Artwork Support: Enhances the listening experience with integrated lyrics and artwork rendering via supported graphics formats.
Unified Library Integration: Seamlessly combines local music files with YouTube Music content, providing a cohesive interface for all your audio needs.
Audience & Benefit:
Ideal for tech-savvy users who prefer command-line interfaces yet seek a rich music experience. YTuff benefits those by offering efficient music management, integration of both local and online content, and a distraction-free environment, making it perfect for audiophiles and terminal enthusiasts alike.
Installation is straightforward with winget, ensuring quick setup without the need for additional download links or references.
README
YTuff
YTuff is a terminal music player for local files and YouTube Music. it has a full TUI, a background playback daemon, playlists, downloads, lyrics, artwork, media controls, and local library scanning.
first of all, shoutout @Metrolist. they made the API part of the project pretty easy. i personally hate kotlin, but i love what they made out of it. all my best wishes and prayers to you guys.
fun fact: this originally started out as a SoundCloud terminal client, almost an year ago, or atleast i started planning it at that time. because the SoundCloud API said "if your application streams or uses SoundCloud data, it has to have the powered by SoundCloud logo" . well, i can't pay 15usd a month for artist pro. i'm broke. so then, i shifted to YT and well, here we are.
previously named rustplayer, because made in rust and music player, but since the name was taken, ytuff it is.
Features
Terminal UI for local music and YouTube Music
Local library scanning
YouTube Music search
YouTube playlist, album, artist, and home/library support
If your distro does not package libwebkit2gtk-4.1, install the closest WebKitGTK 4.1 package available for your release.
Quick start
Start the TUI:
ytuff tui
Search YouTube Music:
ytuff search "daft punk" --limit 10
Play something:
ytuff play "never gonna give you up"
Pause, resume, skip, or stop:
ytuff pause
ytuff resume
ytuff next
ytuff stop
Check status:
ytuff status
Stop the background daemon:
ytuff shutdown
Terminal artwork
YTuff supports multiple artwork renderers.
Set one manually:
Windows PowerShell:
$env:YTUFF_ART="wimg"
.\ytuff.exe tui
Linux shell:
YTUFF_ART=kitty ./ytuff tui
Supported renderer values:
wimg
kitty
sixel
blocks
off
Recommended values:
Windows: wimg
Kitty terminal: kitty
Sixel terminal: sixel
Fallback: blocks
No artwork: off
The Windows release bundles wimg.exe and its DLLs. Linux builds do not need wimg; use kitty, sixel, or blocks.
To force a specific wimg.exe path on Windows:
$env:YTUFF_WIMG="C:\path\to\wimg.exe"
The packaged Windows release should not need this because wimg.exe is bundled beside ytuff.exe.
TUI controls
Press ? or h inside YTuff to open the built in help.
Key
Action
s
Switch local / YouTube mode
/
Search current mode
Enter
Play track, or open selected YouTube playlist or album
Tab
Accept selected YouTube live suggestion
a
Add selected track to queue
c
Clear queue
P
Play selected playlist or album
Q
Queue selected playlist or album
Space
Pause
r
Resume
n
Next track
p
Previous track
R
Cycle repeat off / all / one
z
Toggle shuffle
Left / Right
Seek 5 seconds
b / f
Seek 30 seconds
o
Open selected YouTube link
i
Preview artwork with wimg
S
Save the current playing song to Liked playlist
y
Open lyrics
D
Download selected track, playlist, or album
g
Load YouTube home
m
Load account playlists
u
Go back
A
Toggle autoplay
l
Open YouTube login window
L
Sign out
+ / -
Volume up / down
0
Mute
d
Audio devices
F
Local folders
v
Visualizer
j / k
Move selection
J / K
Move inside queue
M
Minimize to tray
q
Quit or close overlay
Esc
Close overlay or cancel input
Local library
Add a folder:
ytuff library add-path "/path/to/Music"
Windows example:
ytuff library add-path "D:\Music"
List folders:
ytuff library list-paths
Remove a folder by index:
ytuff library remove-path 0
You can also pass scan paths when starting the app:
ytuff --path "/path/to/Music" tui
Supported local file extensions include:
mp3, flac, wav, m4a, ogg, aac, opus, wma
YTuff uses FFmpeg as a fallback for formats that the native decoder does not handle cleanly.
YouTube Music auth
Guest playback works for many tracks, but YouTube can block or limit some requests. Signing in gives YTuff access to personalized home, account playlists, and more reliable playback.