🦀 Zarumet 🦀
Introduction
Zarumet is an mpd client for the terminal written in Rust.


Dependencies
- mpd
- A NerdFont
- A terminal emulator that supports truecolor and UTF-8 encoding.
🦀 Installation
❄️ NixOS installation via flake
Add the zarumet repo as a flake input:
{
inputs = {
zarumet = {
url = "github:Immelancholy/zarumet";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}
Add the zarumet package to your system configuration:
{pkgs, inputs, ...}:
{
environment.systemPackages = with pkgs; [
inputs.zarumet.packages.${pkgs.stdenv.hostPlatform.system}.default
];
}
Add the zarumet repo as a flake input:
{
inputs = {
zarumet = {
url = "github:Immelancholy/zarumet";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}
Add the zarumet module to your homemanager config:
home-manager.users.your-user = {
imports = [
inputs.zarumet.homeModules.default
];
};
Enable the zarumet program and configure to your liking:
{
programs.zarumet = {
enable = true;
settings = {
mpd = {
address = "localhost:6600";
};
colors = {
album = "#fae280";
artist = "#fae280";
border = "#fae280";
status = "#fae280";
title = "#fae280";
};
};
};
}
Usage
A TUI MPD client with album art
Usage: zarumet [OPTIONS]
Options:
-c, --config <CONFIG> Path to config file
-a, --address <ADDRESS> MPD server address (overrides config)
-h, --help Print help
-V, --version Print version
Configuration
Configuration is stored in a TOML file. The default location is:
~/.config/zarumet/config.toml.
You can override this with the -c flag.
[]
= "localhost:6600"
= 5
= 1
[]
= "#fae280"
= "#fae280"
= "#26a0a1"
= "#d67751"
= "#8193af"
= "#26a0a1"
= "#1b1d0e"
= "#e16a7c"
= "#e16a7c"
= "#e16a7c"
= "#e16a7c"
= "#e16a7c"
= "#e16a7c"
= "#b18a4a"
= "#1b1d0e"
= "#26a0a1"
= "#fae280"
= "#d67751"
= "#e16a7c"
= "#e16a7c"
= "#e16a7c"
= "#26a0a1"
= "#1b1d0e"
= "fae280"
= "#e16a7c"
[]
= [
">",
"shift-j",
"shift-down",
]
= [
"<",
"shift-k",
"shift-up",
]
= [
"space",
"p",
]
= ["="]
= ["+"]
= ["-"]
= ["_"]
= ["m"]
= [
"ctrl-l",
"ctrl-right",
]
= [
"ctrl-h",
"ctrl-left",
]
= ["d d"]
= ["r"]
= ["z"]
= ["s"]
= ["c"]
= [
"esc",
"q",
"ctrl-c",
]
= ["u"]
= ["1"]
= ["2"]
= [
"shift-l",
"shift-right",
]
= [
"shift-h",
"shift-left",
]
= [
"k",
"up",
]
= [
"j",
"down",
]
= [
"enter",
"l",
"right",
]
= [
"x",
"backspace",
]
= [
"ctrl-k",
"ctrl-up",
]
= [
"ctrl-j",
"ctrl-down",
]
= [
"h",
"left",
]
= [
"l",
"right",
]
= [
"l",
"right",
]
= [
"a",
"enter",
]
= ["ctrl-u"]
= ["ctrl-d"]
= ["g g"]
= ["shift-g"]
Zarumet supports bit-perfect audio playback by automatically adjusting the PipeWire sample rate to match the current song's sample rate. This prevents resampling and ensures the highest quality audio output.
Requirements
- PipeWire audio server
- MPD configured to output through PipeWire
Configuration
To enable bit-perfect mode, add a [pipewire] section to your config file with the sample rates your DAC supports:
[]
= [44100, 48000, 88200, 96000]
The allowed_rates array should contain all sample rates supported by your audio hardware. Common values include:
44100- CD quality48000- DVD/common digital audio88200- 2x CD quality96000- High-resolution audio176400- 4x CD quality192000- High-resolution audio
Usage
Once configured, toggle bit-perfect mode on/off with b (default keybind). The mode indicator will appear in the UI when enabled.
When a song plays, Zarumet will:
- Use the song's native sample rate if it's in your
allowed_rates - Otherwise, select the highest compatible rate from your allowed rates
- Fall back to 44100 Hz if no compatible rate is found
CLI Option
You can also set the initial bit-perfect state via command line:
The state is persisted between sessions.