Stealth TUI YouTube audio player - stream music while looking productive
Project description
wrkmon
Stream YouTube audio from your terminal - a beautiful TUI music player that runs anywhere.
wrkmon is a keyboard-driven YouTube audio player built with Textual. Search, queue, and stream music without leaving your terminal. It looks like a developer tool, because it is one.
Features
- Search & Stream - Search YouTube and play audio instantly, no browser required
- Queue Management - Build playlists with shuffle, repeat (off/one/all), and drag-to-reorder
- Play History - Automatically tracks everything you've listened to
- Playlists - Create, import, and export playlists (JSON and M3U formats)
- Lyrics - Fetch and display lyrics for the current track (
l) - Download - Save tracks as MP3 for offline listening (
d) - Autoplay / Radio Mode - Automatically plays related tracks when queue ends (
a) - Playback Speed - Adjust speed from 0.25x to 3.0x (
]/[) - Focus Mode - Instantly switch to a clean terminal view (
b) - Themes - Multiple color themes including GitHub Dark, Dracula, Nord, Matrix (
t) - Sleep Timer - Set a timer to stop playback automatically
- Desktop Notifications - Get notified when tracks change
- Media Keys - MPRIS support on Linux, media key support on Windows/macOS
- Cross-Platform - Works on Windows, macOS, Linux, WSL, and FreeBSD
- Resume Playback - Saves queue and playback position between sessions
Installation
Quick Install (Recommended)
macOS / Linux / WSL:
curl -sSL https://raw.githubusercontent.com/Umar-Khan-Yousafzai/Wrkmon-TUI-Youtube/main/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/Umar-Khan-Yousafzai/Wrkmon-TUI-Youtube/main/install.ps1 | iex
The install script automatically detects your OS and package manager, installs mpv if missing, and sets up wrkmon.
pip
pip install wrkmon
You also need mpv installed:
| Platform | Command |
|---|---|
| Ubuntu/Debian | sudo apt install mpv |
| Fedora | sudo dnf install mpv |
| Arch | sudo pacman -S mpv |
| macOS | brew install mpv |
| Windows | winget install mpv |
Optional: JavaScript Runtime
For better YouTube compatibility, install deno or Node.js. The install script handles this automatically.
Usage
wrkmon # Launch the TUI
wrkmon update # Check for updates
wrkmon deps # Check dependencies
Keyboard Controls
Navigation
| Key | Action |
|---|---|
F1 |
Search view |
F2 |
Queue view |
F3 |
History view |
F4 |
Playlists view |
j / k |
Move up/down in lists |
g / G |
Jump to top/bottom |
Playback
| Key | Action |
|---|---|
F5 / Space |
Play / Pause |
F6 / - |
Volume down |
F7 / + |
Volume up |
F8 / n |
Next track |
p |
Previous track |
F9 / s |
Stop |
m |
Mute / Unmute |
r |
Cycle repeat (Off / One / All) |
] / [ |
Speed up / down |
Features
| Key | Action |
|---|---|
l |
Show lyrics |
d |
Download current track |
a |
Toggle autoplay / radio mode |
b |
Focus mode |
t |
Theme picker |
? |
Help screen |
F10 |
Add to queue |
Escape |
Close overlay / go back |
Ctrl+C |
Quit |
Configuration
wrkmon stores its config at:
- Linux/macOS:
~/.config/wrkmon/config.toml - Windows:
%APPDATA%\wrkmon\config.toml
Example config.toml:
[general]
volume = 80
shuffle = false
repeat_mode = "none"
autoplay = false
notifications = true
[player]
playback_speed = 1.0
prefetch_next = true
[ui]
theme = "github_dark"
show_thumbnails = true
[download]
directory = ""
format = "bestaudio"
Requirements
- Python 3.10+
- mpv media player
- Optional: deno or Node.js (for better YouTube support)
Development
git clone https://github.com/Umar-Khan-Yousafzai/Wrkmon-TUI-Youtube.git
cd Wrkmon-TUI-Youtube
pip install -e ".[dev]"
pytest -v
Tests run on Python 3.10, 3.11, and 3.12 across Linux, macOS, and Windows via GitHub Actions CI.
License
MIT License - see LICENSE for details.
Author
Umar Khan Yousafzai - GitHub
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wrkmon-1.3.1.tar.gz.
File metadata
- Download URL: wrkmon-1.3.1.tar.gz
- Upload date:
- Size: 88.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
995e3facde2202751a1bc82d68a587d029d92ba852d3c8ddf777419b1de7842c
|
|
| MD5 |
b96bd92e0561469a71567635294e3581
|
|
| BLAKE2b-256 |
9138eb3597cffcdb40d860e2a53230b4a0e01c54ab3a9fcf03b36edbbe7ad1ff
|
File details
Details for the file wrkmon-1.3.1-py3-none-any.whl.
File metadata
- Download URL: wrkmon-1.3.1-py3-none-any.whl
- Upload date:
- Size: 100.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7b6b03f7bcf32a87f095f68eba8f8e881a43e04fb616bfd8ccf386a5f60dfa5
|
|
| MD5 |
95f20133a85e17e576a40f31af8c944c
|
|
| BLAKE2b-256 |
5433e5b631d7233c4e5d52257c01665b08e5a2ebb86196e3ec799d079ff71034
|