1 unstable release
0.3.0 | Mar 15, 2024 |
---|
#28 in #audio-player
59 downloads per month
4.5MB
10K
SLoC
dizi
Server-client music player written in Rust
The goal of this project is to create a modern version of mocp in Rust.
Motivation
mocp currently interfaces with ALSA to play audio. This doesn't play well with pipewire's pipewire-alsa plugin; whenever mocp is playing music, other audio/video apps stop working and vice versa.
Dependencies
- A system supporting UNIX sockets
- cargo
- rustc
- Jack or Alsa or any other audio system cpal supports
file
command for audio file detection
Building
~$ cargo build
Installation
For single user
~$ cargo install --path=. --force
System wide
~# cargo install --path=. --force --root=/usr/local # /usr also works
Usage
~ $ dizi-server # starts server
~ $ RUST_LOG=debug dizi-server # starts server with debug messages enabled
~ $ dizi # starts server if not already started, then starts frontend
Configuration
Check out docs for details and config for examples
client.toml
- client configurations
keymap.toml
- for keybindings for client
theme.toml
- color customizations for client
server.toml
- server configurations
Contributing
See docs
Features/Bugs
Please create an issue :)
TODOs
Server-side
- play/pause support
- get audio duration (requires rodio and symphonia to work together on this)
- volume support
- fast forward/rewind
- directory playing
- shuffle
- repeat
- next
- sorting
- playlist support
- add/delete/update songs
- recursively add songs in a directory
- shuffle
- repeat
- next
- loading
- clearing
- save on exit
- show music progress
- configurable audio system
- ALSA support (current default)
- JACK support
- Pulseaudio support (issue https://github.com/RustAudio/cpal/issues/259)
- Pipewire support (issue https://github.com/RustAudio/cpal/issues/554)
- querying
- file name
- file path
- show audio metadata (title, artists, genre, album, etc)
- playlist index and length
- on song change hook
Client-side
- show hidden files
- searching
- glob search
- case-insensitive search
- skim search (fzf)
- show player progression
- playlist support
- show playlist
- add/delete/update songs
- shuffle
- repeat
- next
- clearing
- show audio metadata (artists, genre, album, etc)
- theming support
- custom layout support
Dependencies
~28–61MB
~1M SLoC