aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ctl: show the candidates when completion is ambiguousmainsalmonik5 days1-20/+39
| | | | | | | | | | Tab now behaves like bash: it extends the word to the longest common prefix and prints every candidate as a column list, instead of quietly cycling through them one per press. Above completion_prompt_limit (100) it asks before dumping the list. Candidates are inserted with their spaces escaped, so a completed track name stays one argument after Enter; the list itself shows the plain name.
* todo: config caching is donesalmonik5 days1-1/+1
|
* ctl: interactive shell with history, editing and completionsalmonik5 days7-0/+450
| | | | | | | | | | | `rsp ctl` opens a prompt in the spirit of bluetoothctl. Lines are parsed with the same clap definitions as the one-shot CLI, so every command and flag works exactly as it does from a terminal, `help <command>` included. Tab completes subcommands, and track/album/artist paths for `play` through `db-complete` (run out of process, keeping its 100 ms timeout away from the input loop). History lives in the state directory. Piped input falls back to a plain line loop, so `rsp ctl < commands` works without a terminal.
* audio: open the output at the track's rate instead of pw-alsa's 44100salmonik5 days5-28/+211
| | | | | | | | | | | | cpal asks the ALSA "default" PCM for its default config and pipewire-alsa answers 44.1 kHz no matter what the graph runs at, so 48 kHz material was resampled down to 44.1 in our linear resampler and then back up to 48 by PipeWire. The stream now opens at the track's own rate (when the device supports it), which keeps our resampler out of the path and leaves the conversion to PipeWire's polyphase one. The new `sample_rate` setting forces a fixed rate instead ("auto" by default), for anyone who would rather match the graph exactly.
* config: parse the config once and reuse it until the file changessalmonik5 days3-49/+124
| | | | | | | | | | | Every command, status line and notification went through Config::load, which reads *and* rewrites config.toml, so `rsp status` alone touched the file on each call. The daemon now keeps a parsed copy and only stats the file to notice outside edits, so `rsp settings set` still takes effect immediately. Config::save refreshes the cached copy too, and Config::config_path is shared by the loader and the cache.
* seek: jump within the current track from the CLI and over MPRISsalmonik5 days5-34/+245
| | | | | | | | | | | | | | `rsp seek 1:30`, `rsp seek +15`, `rsp seek -30` and `rsp seek` (print the position) drive a new AudioCommand that seeks the format reader, resets the decoder and drops the buffered samples, so the cpal stream keeps running and playback continues from the new spot. MPRIS gets a working Seek/SetPosition, reports CanSeek, and the state watcher now emits Seeked when the playhead jumps (not just on track changes), which is what clients need to move their progress bar after an external seek. `rsp status` also reports the position (and duration when known) and says Paused instead of Stopped when a track is loaded but not playing.
* state: persist the queue and pick up where playback stoppedsalmonik5 days7-12/+355
| | | | | | | | | | | The queue, its shuffle order and whether playback was running are written to ~/.local/state/rsplayer/state.json whenever they change, and on shutdown, then restored at daemon start. Tracks that disappeared from disk are dropped instead of failing on play. `rsp resume`/`rsp toggle` now start the restored track when nothing is loaded into the engine yet, which is the state right after a restart with a queue that was paused.
* queue: use let chains and tidy importssalmonik5 days2-8/+11
|
* install.sh: only install the systemd service on linuxsalmonik5 days1-3/+4
|
* mpris: report trackid as an object path, drop artUrl, track loop statussalmonik5 days1-22/+203
| | | | | | An empty artUrl is not a valid URI and makes some clients render a broken image, and the repeat button snapped back to "None" because LoopStatus was not stored.
* lyrics: cache lrclib results, redraw cleanly and show a now playing headersalmonik5 days1-36/+145
| | | | | | Plain and unavailable lyrics now wait for a track change instead of exiting, synced frames erase the previous region so shrinking frames do not leave stale text, and lrclib lookups are cached next to the track.
* audio: http streaming, opus/mkv support and stream recoverysalmonik5 days3-243/+761
| | | | | | | | | | | | | | - read http(s) urls through a MediaSourceStream instead of failing - register the libopus decoder and enable mkv/aac/isomp4 in symphonia - resample to the device rate with linear interpolation - rebuild the output stream when the backend dies instead of leaving playback silent while the daemon still reports "Playing" A dead pcm makes cpal call the error callback hundreds of thousands of times per second, so errors are only counted there and reported once when the stream is dropped. The first failure of a healthy stream is retried immediately, consecutive failures back off, and a stream that played long enough clears the failure budget.
* fix a bug where adding track using `now` when shuffle is on does not work as ↵salmon2026-08-123-29/+149
| | | | expected
* clean up readme and make install.sh activate rc.d servicesalmon2026-08-122-42/+16
|
* delete unused path for queuesalmon2026-08-122-18/+6
|
* queue logic fixessalmon2026-08-122-29/+117
|
* rc service: create state dir and log before daemon(8) startssalmon2026-08-091-0/+8
|
* Make daemon socket/PID paths environment-independent; fix rc service HOMEsalmon2026-08-094-31/+68
|
* Make install.sh POSIX sh so it runs without bashsalmon2026-08-091-3/+3
|
* Add FreeBSD rc.d service, install completions only for installed shellssalmon2026-08-093-42/+147
|
* Document FreeBSD requirements in READMEsalmon2026-08-091-1/+32
|
* Actual message when daemon could not be foundsalmon2026-08-091-1/+22
|
* Relative volume via prefixing/suffixing with +/-salmonik2026-07-304-14/+175
|
* Fix synchronous HTTP callssalmonik2026-07-304-103/+122
|
* Merge pull request 'mpris merge' (#2) from mpris into mainsalmonik2026-07-0610-29/+536
|\ | | | | | | Reviewed-on: https://codeberg.org/salmonik/RSPlayer/pulls/2
| * add track index to MPRISsalmonik2026-07-066-3/+12
| |
| * add MPRIS support and non-blocking notifssalmonik2026-07-067-29/+527
|/
* fix -a to work properlysalmonik2026-06-252-75/+113
|
* I love \rsalmonik2026-06-251-1/+1
|
* Add shell path finding as a fallback.salmonik2026-06-236-46/+159
|
* last autocompletion fixessalmonik2026-06-121-1/+5
|
* fix autocompletion scriptsalmonik2026-06-121-2/+0
|
* improved ZSH autocompletion scriptsalmonik2026-06-122-5/+13
|
* limit completions to LIMITsalmonik2026-06-091-14/+36
|
* change lrc lyrics display.salmonik2026-06-073-27/+44
|
* Add lyrics supportsalmonik2026-06-075-15/+143
|
* Merge pull request 'autocompletion' (#1) from autocompletion into mainsalmonik2026-06-0614-150/+1127
|\ | | | | | | Reviewed-on: https://codeberg.org/salmonik/RSPlayer/pulls/1
| * delete not needed md filesalmonik2026-06-061-135/+0
| |
| * correctly working auto completion for dbsalmonik2026-06-0612-262/+488
| |
| * dirty, broken commitsalmonik2026-06-049-30/+916
| |
* | add verbosity to `rsp scan`salmonik2026-06-041-3/+13
|/
* fix no metadata songs handlingsalmonik2026-05-272-1/+12
| | | | format string is no longer used to represent songs that have insufficient metadata to fullfill the format string
* Add internet streams supportsalmonik2026-05-276-73/+310
|
* play [track] [-a/--album] optionsalmonik2026-05-273-2/+224
| | | | | if supplied when a track is played, the rest of the album will be queued after the track
* add licensingsalmonik2026-05-2621-79/+802
|
* no need to ship completions anymore!salmonik2026-05-265-1606/+20
|
* bin size optimizations and queue stopping at the end of itsalmonik2026-05-264-112/+20
|
* Fix metadata extraction for symphonia 0.6 and add Albums shuffle modesalmonik2026-05-2210-28/+227
|
* fix for new symphony API and less debug info in releasesalmonik2026-05-189-354/+306
|
* first public release.salmonik2026-05-1612-611/+115
|