<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rsplayer/src/ctl.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:46:43Z</updated>
<entry>
<title>ctl: show the candidates when completion is ambiguous</title>
<updated>2026-11-02T12:46:43Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T12:46:43Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=90114cb5a3cb9ddf67b75f5a5c3c16841a6019ad'/>
<id>urn:sha1:90114cb5a3cb9ddf67b75f5a5c3c16841a6019ad</id>
<content type='text'>
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.
</content>
</entry>
<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>
</feed>
