dizi

Crates.iodizi
lib.rsdizi
version0.3.0
sourcesrc
created_at2024-03-15 02:05:25.696007
updated_at2024-03-15 02:05:25.696007
descriptionTerminal music player inspired by moc
homepagehttps://github.com/kamiyaa/dizi
repositoryhttps://github.com/kamiyaa/dizi
max_upload_size
id1174321
size4,642,444
Jeff Zhao (kamiyaa)

documentation

README

Linux build

MacOS build

dizi

Server-client music player written in Rust

The goal of this project is to create a modern version of mocp in Rust.

Alt text

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
  • 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
Commit count: 0

cargo fmt