Daemon-focused CLI music player in rust, for GNU/Linux only.
  • Rust 99.2%
  • Shell 0.8%
Find a file
2026-07-06 15:59:34 +02:00
.zed improved ZSH autocompletion script 2026-06-12 13:32:40 +03:00
completions Add shell path finding as a fallback. 2026-06-23 14:52:27 +02:00
src add track index to MPRIS 2026-07-06 15:58:01 +02:00
tests add track index to MPRIS 2026-07-06 15:58:01 +02:00
.gitignore fix(daemon): robust auto-advance; ensure next track starts even if playback fails 2026-05-05 21:12:32 +02:00
AGENTS.md Add shell path finding as a fallback. 2026-06-23 14:52:27 +02:00
Cargo.lock add track index to MPRIS 2026-07-06 15:58:01 +02:00
Cargo.toml add track index to MPRIS 2026-07-06 15:58:01 +02:00
install.sh correctly working auto completion for db 2026-06-06 19:48:22 +03:00
LICENSE add licensing 2026-05-26 16:54:47 +02:00
README.md fix for new symphony API and less debug info in release 2026-05-18 21:46:26 +02:00
rsplayer.service Add display_format config, fix restart command, clean up config code 2026-05-11 16:25:49 +02:00
TODO.md dirty, broken commit 2026-06-04 00:21:46 +02:00

RSPlayer is a daemon driven CLI music player with scrobbling written in rust

Installation

git clone https://codeberg.org/salmonik/RSPlayer.git
cd RSPlayer
./install.sh

install.sh will:

  • compile RSP (make sure you have rust properly installed!)
  • install shell autocompletions (zsh, bash and fish supported)
  • install user systemd service and activate it

Usage

configuration is generated at startup in $XDG_CONFIG_HOME/rsplayer/config.toml

  • most important values there are:
  • listenbrainz_token (last.fm scrobbling not yet tested)
  • display_format (supports $ARTIST $ALBUM and $TRACK)
  • music_paths (for DB usage, still WIP)
  • scan_interval (same as above)

all other values can be changed in runtime using commands

as for commands:
RSP will be installed as rsp, in this fragment, rsp will be ommited

these commands should only be used in testing or by systemd service:

  • start-daemon Start the daemon
  • stop-daemon Stop the daemon
  • restart Restart the daemon (kill existing and start new)

these are normal commands:

  • play Play a track, album, or artist
  • pause Pause playback
  • resume Resume playback
  • toggle Toggle play/pause
  • stop Stop playback
  • next Skip to next track
  • previous Skip to previous track
  • volume Set volume (0-100)
  • shuffle Shuffle mode
  • queue Queue management
  • status Show player status
  • scan Scan music paths to populate database
  • settings Settings management
  • help Print this message or the help of the given subcommand(s)

Technical stuff

The main culprit of this player is lack of integration with programs such as playerctl
this is due to the daemon not being asynchronous