>_ rs-pug usage

docs / usage

Usage guide

Everything that did not fit on the landing page. Config file is ~/.config/rs-pug/config.toml and it hot reloads. Sonum client config needs a restart.

Key Action
1 - 5 Discover, Albums, Library, Local, Options tabs
Tab Switch panel focus
j / k Move down / up
/ Search
enter Play, or queue all marked songs
space Pause / resume
n / p Next / previous track
m Mute
r Cycle repeat mode
c Context menu
v Flat / organized view in Local
ctrl+v Real FFT spectrum toggle, needs parec
shift+z Minimal mode
e Edit ID3 tags for local file
s Cycle local sort mode
g / a Filter local by genre / artist
b Filter by album, or mark for bulk queue
F Clear local filters
: Command palette
? Full command reference
q Quit

keybinds

Remapping keys

Rebind playback and view toggles in config.toml. Modifiers use C for Ctrl, M for Alt, S for Shift. Sequences use a space, for example g g with 1.5s window.

[keybinds]
next = "n"
prev = "p"
mute = "m"
repeat = "r"
shuffle = "z"
seek_back = "["
seek_forward = "]"
fft_toggle = "C-v"
minimal_toggle = "S-Z"

Icons use Nerd Fonts glyphs. If your terminal lacks them, set icons to false under general or run icons from the palette for ASCII fallback.

queue

Multi-select bulk queue

Mark then queue

Press b on songs in Discover or Local flat view, move with j and k, press Enter to queue in list order. Playback starts only if idle. Esc clears marks. Marks follow songs, not rows, so scrolling is safe.

Palette and speed

Press : for fuzzy playback, volume, repeat, shuffle, seek, speed and EQ actions. Arrow keys pick, Enter runs. Speed row in Options covers 0.25x to 2.00x with h and l steps of 0.05x, Enter resets. Non 1.00x speed shows a Now Playing badge.

sound

Equalizer and visualizer

10-band EQ

Select the graph in Options. h and l move bands, plus and minus set gain from -12 to +12 dB, p cycles presets, s saves all settings to config.toml. Custom presets are JSON files in ~/.config/rs-pug/eqpresets. Community presets in all-rspug.

FFT spectrum

Default is a synthetic wave. Ctrl+V switches to real capture. Order tried: parec with pactl, then pw-cat raw monitor, then pw-record monitor. No tool means silent fallback. Set fft_visualizer_default to true under general to start real on boot.

focus

Minimal mode

Shift+Z hides tabs, lists and labels, leaving pixelated cover art as terminal halfblocks, title, thin FFT strip and progress. Real embedded art for local files, stream thumbnails for YouTube and SoundCloud. Allowed keys: Shift+Z or Esc to leave, Space pause, n and p skip, arrows seek, 9 and 0 volume, : palette, ? help, q quit.

[general]
image_background = true  # tint bg from cover hues

Toggle Image background row in Options or from palette. Blends three most vivid cover hues into a dark readable vertical gradient.

cli

CLI and IPC for status bars

Flags control a running instance over a Unix socket. Useful for i3status, waybar or global hotkeys. If no instance runs, you get an error instead of a new player.

rs-pug --toggle-pause
rs-pug --next
rs-pug --prev
rs-pug --play ~/music/mix.flac
rs-pug --debug    # log to rs-pug.log
rs-pug --validate # check config, exit 1 on warns
rs-pug --source sonum

look

Themes and storage

Built in dark, light, nord, gruvbox and mono. Set theme under general. Custom themes are JSON files in ~/.config/rs-pug/themes with r,g,b triples. All nine base colors required, spectrum optional.

{
  "text": [255, 255, 255],
  "primary": [255, 0, 255],
  "spectrum": [[255, 0, 255], [0, 255, 255]]
}

Local scan roots default to ~/.config/rs-pug/music-local, add more in Options. Data in SQLite pug.db with auto JSON migration. Import from import_playlist.json, export to exports folder. Smart Playlist refreshes each boot with most played, recent and unheard tracks, cap near 50. Disable with smart_playlists_enabled = false.

server

Sonum self hosted server

Sonum is a small Rust Axum server that scans a folder and serves tracks, lyrics and art over HTTP JSON with auto rescan. Point rs-pug at it, then set Search source to Sonum in Options.

# ~/.config/rs-pug/sonumclient.toml, restart after edit
host = "127.0.0.1"
port = 8420
# api_token = "your-secret-token"

Search hits GET tracks with query and limit, playback streams from tracks id stream endpoint, art from tracks id art. Albums view groups client side, so raise limit for large libraries. Token sent as Bearer when set.

sources

Custom search sources

Besides YouTube, SoundCloud and Sonum you can add ytdlp prefixes or command scripts. They join Options cycle and --source. Hot reload applies.

[search]
source = "youtube"
[[search.custom_sources]]
name = "YouTube (newest)"
type = "ytdlp"
prefix = "ytsearchdate"
[[search.custom_sources]]
name = "Audius"
type = "command"
command = ["/home/you/.config/rs-pug/scripts/audius-search.py", "{query}", "{limit}"]

Command scripts run directly without shell and must print a JSON array with id, title, webpage_url plus optional uploader and duration seconds. Limit stdout to 8 MiB, non zero exit or timeout shows a named error. Names match case insensitive, duplicates or built in clashes skipped with warning. Test prefixes first with yt-dlp flat playlist dump. Only trust scripts from sources you trust, they run with your user rights.

install

Install checklist

1

Deps

mpv required, yt-dlp recommended. Check both are latest before filing bugs.

2

Install

cargo install rs-pug or git clone plus cargo build --release. AUR needs a new maintainer.

3

Run

Run rs-pug, add music dirs in Options, try : palette and ? reference.