1 个不稳定版本

0.3.0 2024 年 3 月 15 日

#1417 in 命令行工具

LGPL-3.0

4.5MB
10K SLoC

Linux build

MacOS build

dizi

用 Rust 编写的服务器-客户端音乐播放器

本项目目标是创建一个 Rust 语言的 mocp 的现代版本。

Alt text

动机

mocp 目前通过 ALSA 接口播放音频。这和 pipewire 的 pipewire-alsa 插件不兼容;每当 mocp 播放音乐时,其他音频/视频应用程序就会停止工作,反之亦然。

依赖项

  • 支持 UNIX 套接字系统的系统
  • cargo
  • rustc
  • Jack 或 Alsa 或任何其他 cpal 支持的音频系统
  • file 命令用于音频文件检测

构建

~$ cargo build

安装

针对单个用户

~$ cargo install --path=. --force

系统范围

~# cargo install --path=. --force --root=/usr/local     # /usr also works

使用方法

~ $ 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

配置

有关详细信息,请参阅 文档,有关示例,请参阅 配置

client.toml

  • 客户端配置

keymap.toml

  • 客户端的键绑定

theme.toml

  • 客户端的颜色定制

server.toml

  • 服务器配置

贡献

请参阅 文档

功能/错误

请创建一个问题 :)

待办事项

服务器端

  • 播放/暂停支持
  • 获取音频时长(需要 rodio 和 symphonia 一起工作)
  • 音量支持
  • 快进/快退
  • 目录播放
    • 随机播放
    • 重复
    • 下一曲
    • 排序
  • 播放列表支持
    • 添加/删除/更新歌曲
    • 递归添加目录中的歌曲
    • 随机播放
    • 重复
    • 下一曲
    • 加载
    • 清除
    • 退出时保存
  • 显示音乐进度
  • 可配置的音频系统
  • 查询
    • 文件名
    • 文件路径
    • 显示音频元数据(标题、艺术家、流派、专辑等)
    • 播放列表索引和长度
  • 歌曲更改钩子

客户端

  • 显示隐藏文件
  • 搜索
    • glob 搜索
    • 不区分大小写的搜索
    • 快速搜索(fzf)
  • 显示玩家进度
  • 播放列表支持
    • 显示播放列表
    • 添加/删除/更新歌曲
    • 随机播放
    • 重复
    • 下一曲
    • 清除
  • 显示音频元数据(艺术家、流派、专辑等)
  • 主题支持
  • 自定义布局支持

依赖项

~19–52MB
~1M SLoC