<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rsplayer/src/cli.rs, branch main</title>
<subtitle>Daemon focused CLI music player
</subtitle>
<id>https://git.2137697.xyz/rsplayer/atom?h=main</id>
<link rel='self' href='https://git.2137697.xyz/rsplayer/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/'/>
<updated>2026-11-02T12:35:56Z</updated>
<entry>
<title>ctl: interactive shell with history, editing and completion</title>
<updated>2026-11-02T12:35:56Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T12:35:56Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=5dfb5b4ce521a44eb4e9173d20c58e665c78e979'/>
<id>urn:sha1:5dfb5b4ce521a44eb4e9173d20c58e665c78e979</id>
<content type='text'>
`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 &lt;command&gt;` 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 &lt; commands` works without a terminal.
</content>
</entry>
<entry>
<title>seek: jump within the current track from the CLI and over MPRIS</title>
<updated>2026-11-02T12:19:49Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T12:19:49Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=50cd2a17734dee4c4739112261fc40974cce409a'/>
<id>urn:sha1:50cd2a17734dee4c4739112261fc40974cce409a</id>
<content type='text'>
`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.
</content>
</entry>
<entry>
<title>delete unused path for queue</title>
<updated>2026-08-12T00:17:19Z</updated>
<author>
<name>salmon</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-08-12T00:17:19Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=6f09ab1f647eea41a33643e16320b57eaf40e63c'/>
<id>urn:sha1:6f09ab1f647eea41a33643e16320b57eaf40e63c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Relative volume via prefixing/suffixing with +/-</title>
<updated>2026-07-30T17:28:23Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-30T17:28:23Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=cf0f408fb5d60d86c1141e859055f1decc3a1373'/>
<id>urn:sha1:cf0f408fb5d60d86c1141e859055f1decc3a1373</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix -a to work properly</title>
<updated>2026-06-25T12:57:00Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-25T12:57:00Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=7f42d61cf45d77b0162c60805393ccf56169efd0'/>
<id>urn:sha1:7f42d61cf45d77b0162c60805393ccf56169efd0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add shell path finding as a fallback.</title>
<updated>2026-06-23T12:52:27Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-23T12:52:27Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=1fd56ff980dd80a24a3d2c90b692dc7c9f346bdd'/>
<id>urn:sha1:1fd56ff980dd80a24a3d2c90b692dc7c9f346bdd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add lyrics support</title>
<updated>2026-06-07T18:19:46Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-07T18:19:46Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=45a1728ea4a3812120728562084fd416b35b074c'/>
<id>urn:sha1:45a1728ea4a3812120728562084fd416b35b074c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>correctly working auto completion for db</title>
<updated>2026-06-06T16:48:22Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-06T16:48:22Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=d347d89dfeef54d648ffdea054897617c0016509'/>
<id>urn:sha1:d347d89dfeef54d648ffdea054897617c0016509</id>
<content type='text'>
</content>
</entry>
<entry>
<title>dirty, broken commit</title>
<updated>2026-06-03T22:21:46Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-03T22:21:46Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=1e48765ab39a679abcc4eac6927ad3bb58f7b438'/>
<id>urn:sha1:1e48765ab39a679abcc4eac6927ad3bb58f7b438</id>
<content type='text'>
</content>
</entry>
<entry>
<title>play [track] [-a/--album] option</title>
<updated>2026-05-27T18:26:56Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-27T18:26:56Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=09c78a14cb7dc83c7711b6e58025d43272e9eaf7'/>
<id>urn:sha1:09c78a14cb7dc83c7711b6e58025d43272e9eaf7</id>
<content type='text'>
if supplied when a track is played, the rest of the album will be queued
after the track
</content>
</entry>
</feed>
