| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
`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.
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|