A Terminal UI (TUI) YouTube Music player written in Go.
yutemal is a terminal-based YouTube Music client that allows you to browse, search, and play music directly from your terminal.
- 🎵 Stream YouTube Music directly in your terminal
- 🔍 Search for songs, albums, and playlists
- 📋 Browse your YouTube Music library and playlists
- ⌨️ Vim-style keyboard navigation
- 🖱️ Mouse support (click to select/play, wheel scroll, seek via progress bar)
- 🎨 Customizable themes with multiple presets
- Go 1.24.3 or later (managed via mise)
- yt-dlp (for downloading audio)
- ffprobe (part of FFmpeg, for audio analysis)
- Linux:
libasound2-dev libdbus-1-dev pkg-config - macOS: No additional requirements
go install github.com/haryoiro/yutemal@latest# Clone the repository
git clone https://github.com/haryoiro/yutemal
cd yutemal
# Build the binary
./build.sh
# Or manually
go build -o yutemal main.goyutemal requires YouTube Music cookies for authentication:
- Install a browser extension to export cookies (e.g., "Get cookies.txt LOCALLY" for Chrome/Firefox)
- Visit music.youtube.com and log in
- Export cookies in Netscape format
- Save as
~/.config/yutemal/headers.txtor./header.txt
Copy the example configuration to get started:
cp config.example.toml ~/.config/yutemal/config.tomlKey configuration options:
audio_quality: Set download quality (low/medium/high/best)theme: Choose from built-in themes (Tokyo Night Storm, Catppuccin Mocha, Dracula, Nord, Gruvbox Dark)progress_bar_style: Progress bar style (line/block/gradient)key_bindings: Customize keyboard shortcuts
# Run yutemal
./yutemal
# Show help and keyboard shortcuts
./yutemal --help
# Show version
./yutemal --version
# Show file locations
./yutemal --files
# Enable debug logging
./yutemal --debug
# Clear all cache data
./yutemal --clear-cache
# Fix database issues
./yutemal --fix-dbSpace: Play/Pause←/→: Seek backward/forward+/=: Volume up-/_: Volume downCtrl+CorCtrl+D: Quit application
↑/k: Move up↓/j: Move downPgUp/PgDn: Page scrollEnter/l: Select/PlayEsc/Backspace: Go back
Tab: Next sectionShift+Tab: Previous sectionf: Open searchh: Return to homer: Remove track from playlist
- Left Click: Select and play items
- Progress Bar Click: Seek to position
- Wheel Scroll: Navigate through lists
yutemal follows the XDG Base Directory specification:
Configuration: ~/.config/yutemal/
Cache: ~/.cache/yutemal/
Data: ~/.local/share/yutemal/
If you see errors about missing yt-dlp or ffprobe:
# macOS
brew install yt-dlp ffmpeg
# Linux
sudo apt install yt-dlp ffmpeg
# Or via pip
pip install yt-dlp- Make sure
headers.txtexists in the correct location - Check that cookies are in Netscape format
- Ensure cookies are from a logged-in session
Run with --debug flag to enable detailed logging:
./yutemal --debugLogs are saved to ~/.local/share/yutemal/yutemal.log
If you experience issues, try clearing the cache:
./yutemal --clear-cacheThis project is licensed under the Apache License 2.0 - see the LICENSE file for details.