{"id":50668758,"url":"https://github.com/JustRoccat/rs-pug","last_synced_at":"2026-06-25T06:00:32.118Z","repository":{"id":350708578,"uuid":"1207968230","full_name":"JustRoccat/rs-pug","owner":"JustRoccat","description":"Blazing fast, terminal music player (TUI) written in Rust. Extensible via Lua plugins, built on Ratatui, MPV, and YT-DLP. Listen to YouTube, SoundCloud, and local files directly from your terminal. Lightweight, headless, ads-free.","archived":false,"fork":false,"pushed_at":"2026-06-18T12:50:32.000Z","size":105212,"stargazers_count":58,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T13:15:01.488Z","etag":null,"topics":["cli","linux","lua","mpris","mpv","music","player","rust","scripting","terminal","tui"],"latest_commit_sha":null,"homepage":"https://justroccat.github.io/rspugsite/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JustRoccat.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-11T16:35:57.000Z","updated_at":"2026-06-18T12:50:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JustRoccat/rs-pug","commit_stats":null,"previous_names":["justroccat/rs-pug"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JustRoccat/rs-pug","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustRoccat%2Frs-pug","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustRoccat%2Frs-pug/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustRoccat%2Frs-pug/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustRoccat%2Frs-pug/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JustRoccat","download_url":"https://codeload.github.com/JustRoccat/rs-pug/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JustRoccat%2Frs-pug/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34761847,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","linux","lua","mpris","mpv","music","player","rust","scripting","terminal","tui"],"created_at":"2026-06-08T09:00:20.027Z","updated_at":"2026-06-25T06:00:32.112Z","avatar_url":"https://github.com/JustRoccat.png","language":"Rust","funding_links":[],"categories":["💻 Apps"],"sub_categories":["🎼 Music and Media"],"readme":"\n\n# Read\n\nIm not gonna maintain aur anymore, if you want to be an aur maintainer please create a issue.\n\nThis does not apply to crates.io, im gonna still maintain crates.io\n\n[![dependency status](https://deps.rs/repo/github/JustRoccat/rs-pug/status.svg)](https://deps.rs/repo/github/JustRoccat/rs-pug)\n\n# rs-pug\n\nNo browser, no ads, no Electron. Search YouTube and SoundCloud, queue tracks, play local files — all from your terminal.\n\nBuilt in Rust with `mpv`, `yt-dlp`, and `ratatui`. Requires `mpv` and `yt-dlp` installed.\n\nPlugins, themes and EQ presets from the community: [all-rspug](https://github.com/JustRoccat/all-rspug/) · [Discord](https://discord.gg/6FcBWwRQBX)\n\n![img](https://github.com/user-attachments/assets/d0ee7dcf-a751-4942-adeb-0d738d66095e)\n\n## Installation\n\n```bash\n# Arch\nyay -S rs-pug-git\n\n# crates.io\ncargo install rs-pug\n\n# manual\ngit clone https://github.com/JustRoccat/rs-pug \u0026\u0026 cd rs-pug\ncargo build --release \u0026\u0026 ./target/release/rs-pug\n```\n\n## Dependencies\n\nRequired:\n\n- `mpv`\n- `yt-dlp`\n\nOptional:\n\n- `mpv-mpris` (for media key / `playerctl` support)\n\n\n## Keybinds\n\n| Key | Action |\n|-----|--------|\n| `1`–`5` | Switch tabs |\n| `Tab` | Switch panel focus |\n| `j` / `k` | Move up / down |\n| `/` | Search |\n| `Enter` | Play |\n| `Space` | Pause / Resume |\n| `n` / `p` | Next / Previous |\n| `m` | Mute |\n| `r` | Cycle repeat mode |\n| `c` | Context menu |\n| `v` | Toggle flat/organized view (Local tab) |\n| `e` | Edit ID3 tags for selected local file (Local tab) |\n| `s` | Cycle local sort mode: title, artist, album, year, date added (Local tab) |\n| `g` / `a` / `b` | Filter local library by selected genre / artist / album |\n| `F` | Clear local library filters |\n| `q` | Quit |\n\n\n## Contri-pug-ting\n\n1. Fork the repo\n2. Install dependencies\n3. Smash your head against the keyboard (Rust can be like that)\n4. Open a pull request\n\nLua plugin PRs especially welcome — API reference in [`docs.md`](./docs.md).\n\n## Mouse Support\n\n- **Scroll Wheel**: Scroll through search results, playlists, and the queue.\n- **Left Click**: Click on tab icons at the top to switch between views.\n\n## Smart Queue\n\nIn the **Options** tab, you can trigger the **Smart Queue**. This feature analyzes the currently playing song and automatically finds similar tracks from the same uploader or with similar titles to keep the music flowing.\n\n## Customization\n\n### Themes\n\n`rs-pug` comes with several built-in themes: `dark` (default), `light`, `nord`, `gruvbox`, and `mono`.\n\nYou can add your own themes by creating `.json` files in `~/.config/rs-pug/themes/`.\n\nExample `mytheme.json`:\n```json\n{\n  \"text\": [255, 255, 255],\n  \"dim\": [100, 100, 100],\n  \"muted\": [150, 150, 150],\n  \"info\": [0, 255, 255],\n  \"warn\": [255, 255, 0],\n  \"ok\": [0, 255, 0],\n  \"primary\": [255, 0, 255],\n  \"accent2\": [200, 0, 200],\n  \"accent3\": [100, 0, 100]\n}\n```\n\n### EQ Presets\n\nYour custom EQ presets are stored as `.json` files in `~/.config/rs-pug/eqpresets/`.\n\n## Local Music\n\nBy default, `rs-pug` scans `~/.config/rs-pug/music-local/`. You can change this or add more directories in the **Options** tab. The app supports natural sorting and metadata extraction.\n\n## Playlists \u0026 Storage\n\nData is stored in a SQLite database at `~/.config/rs-pug/pug.db`. Legacy JSON files are automatically migrated on first run.\n\n- **Import path**: `~/.config/rs-pug/import_playlist.json`\n- **Export path**: `~/.config/rs-pug/exports/\u003cplaylist_name\u003e.json`\n\n## Plugins (Lua)\n\nDrop Lua scripts into `~/.config/rs-pug/plugins/`. They are loaded automatically and can react to keys, search queries, and playback events. See `docs.md` for the full API reference.\n\nLua plugins that change the stock UI are opt-in. Add this to `~/.config/rs-pug/config.toml` to enable the new UI hooks (`on_ui_config`, `on_ui_sections`, `on_ui_update`, and `on_ui_inject`):\n\n```toml\n[lua]\nallow-lua-ui-changes = true\n```\n\nThe default is `false`, so legacy plugins using `on_key`, `on_event`, `on_tabs`, or `on_ui_panels` continue to work unchanged. When UI customization is enabled, plugin load/hook/layout issues are captured as non-fatal warnings and shown in the statusbar instead of crashing the app.\n\n## Configuration\n\nConfig file path: `~/.config/rs-pug/config.toml`.\n\n\n## License\n\nMIT\n\n![gif](https://github.com/user-attachments/assets/43e4fc61-cd06-43a3-872c-632059467259)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJustRoccat%2Frs-pug","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJustRoccat%2Frs-pug","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJustRoccat%2Frs-pug/lists"}