A TUI wrapper for yt-dlp written in Rust. Download videos and audio from YouTube and 1000+ other sites with style.
- Cool TUI - Clean, modern interface with ASCII art branding
- Smart Format Selection - Interactive format picker with audio-only toggle
- Queue Management - Add multiple downloads and track their progress
- Playlist Support - Preview and confirm playlists before downloading
- Real-time Progress - Live download stats with speed, ETA, and progress bars
- Lightning Fast - Event-driven rendering, smart caching, and parallel processing
- Cross-Platform - Works on Linux, macOS, and Windows
- 1000+ Sites - Powered by yt-dlp, supports YouTube, Vimeo, Twitter, and more
yt-dlpinstalled and in your PATH- Rust toolchain (for building from source)
# Install yt-dlp (if not already installed)
# Linux: sudo apt install yt-dlp # or your package manager
# macOS: brew install yt-dlp
# Clone and install
git clone https://github.com/2Yuri-afk/gorlock.git
cd gorlock
cargo install --path .
# Run
gorlock# Install yt-dlp (if not already installed)
pip install yt-dlp
# OR download from: https://github.com/yt-dlp/yt-dlp/releases
# Clone and install
git clone https://github.com/2Yuri-afk/gorlock.git
cd gorlock
cargo install --path .
# Run
gorlockNote for Windows users: Make sure yt-dlp is in your PATH. You can verify with:
yt-dlp --version| Key | Action | Context |
|---|---|---|
i |
Enter URL input mode | Normal |
Enter |
Add URL to queue | Input mode |
f |
Fetch formats | Queue item selected |
Enter |
Download with selected format | Format popup |
t |
Toggle audio-only filter | Format popup |
d |
Delete from queue | Queue item selected |
↑/↓ or j/k |
Navigate | Any list |
Tab |
Switch panels | Normal |
Esc |
Cancel/Back | Any popup |
q |
Quit | Normal |
Ctrl+C |
Force quit | Any time |
- Launch with
gl - Press
ito enter input mode - Paste URL and press
Enter - Press
fto see formats - Select format and press
Enter
- Add URL as above
- Press
ffor formats - Press
tto filter audio-only - Select format and download
- When you paste a playlist URL, Gorlock shows a preview
- Navigate through videos with
↑/↓ - Press
Enterto add all to queue - Press
Escto cancel
# Development build
cargo build
# Release build (optimized)
cargo build --release
# Run development version
cargo run
# Install globally
cargo install --path .src/
├── main.rs # Application entry & event loop
├── app_state/ # State management
│ ├── mod.rs # Core state structures
│ └── events.rs # Event definitions
├── ui/ # User interface
│ ├── app.rs # Main UI rendering
│ ├── events.rs # Input handling
│ └── components.rs # Reusable UI parts
└── commands/ # External commands
├── mod.rs # Command orchestration
└── yt_dlp.rs # yt-dlp integration
Contributions are welcome! Feel free to:
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Configuration file support
- Custom output directory per download
- Download history/log
- Concurrent downloads
- Resume interrupted downloads
- Subtitle download options
- Authentication support
- Bandwidth limiting
- Post-download actions
MIT License - see LICENSE file for details