melors
Keyboard-first terminal MP3 player written in Rust.
Highlights
- Local-only MP3 library scanning
- Fast keyboard workflow (no mouse)
- Search + playlists + now playing + visualizer layout
- Persistent playback state and queue
- Theme presets and visualizer modes
- Tag editing (title/artist/album) from TUI
Quick Start
Install
After the crate is published on crates.io:
Install directly from GitHub:
Linux build prerequisite (for audio backend):
If your distro is not Debian/Ubuntu (for example Defora), install equivalent ALSA development packages using your system package manager.
Runtime Paths
Created automatically on first run:
- Config:
~/.config/melors/config.toml - Database:
~/.local/share/melors/db.sqlite - Cache:
~/.cache/melors/ - Default music dir:
~/Music/melors/
Drop .mp3 files in your music dir and press r to rescan anytime.
Configuration
~/.config/melors/config.toml
= "/home/you/Music/melors"
Keybindings
App and Navigation
q: quitUp/Down: move selectionEnter: play selected track
Playback
Space: play/pausen: next trackp: previous trackLeft/Right: seek -5s / +5sShift+Left/Shift+Right: seek -10s / +10s[/]: volume down/up
Library
s: search moder: rescan music directoryf: toggle favorite on selected tracka: open playlist picker to add selected (or currently playing) track
Metadata Editing
t: edit selected track metadata (title/artist/album). Saving will also rename filename usingArtist - Title(orTitlewhen artist is empty).
Tag editor:
Tab: next fieldEnter: saveEsc: cancel
Playlist Quick Flow
- Press
lto open playlist mode. Playlist appears inline in the left pane, replacing Library while keeping Now Playing and Visualizer visible. On narrow terminals, playlist view auto-switches to stacked mode for better readability. - Use
Up/Downto choose playlist or item. - Press
Enteron a playlist to open it; pressEnteron+ New playlistto name it first, then pressEnteragain to create it. - Press
ain Library to open playlist picker, thenEnteron a playlist to add the track. If you choose+ New playlist, melors asks for the playlist name first. - Press
din items view to remove the selected track from that playlist. - Press
rin playlists view to rename the selected playlist, thenEnterto save. - Press
xin playlists view to open a delete confirmation, thenEnterorxagain to confirm. - Press
Escin items view to go back to playlists; pressEscagain to close. - Press
Enterin items view to play. - Once a playlist is opened for playback, it becomes the current
Up Nextlist in the main UI.
Playback Modes and Visualizer
Alt+0: visualizerOff(low-power mode)e: cycle repeat (Off -> One -> All)u: toggle shuffleAlt+1: visualizerDemo Bars(lightweight example)Alt+2: visualizerClockAlt+3: visualizerCMatrixAlt+T: cycle UI theme (Neon -> Forest -> Ocean -> Rose -> Cyber -> Lava -> Aurora -> Candy -> Prism -> Scanline)
Project Structure
src/
app/
actions/
boot.rs
playback.rs
queue.rs
library.rs
rename.rs
session.rs
mod.rs
state.rs
core/
config/
mod.rs
load.rs
paths.rs
model.rs
features/
player/
mod.rs
control.rs
analysis.rs
search.rs
services/
scanner/
mod.rs
io.rs
validate.rs
watcher.rs
storage/
mod.rs
migrations.rs
tracks.rs
playback.rs
queue.rs
metadata.rs
ui/
input/
dispatch.rs
normal.rs
modes.rs
selection.rs
render/
chrome.rs
lists.rs
playback.rs
visualizer.rs
theme.rs
state/
model.rs
mode.rs
cache.rs
Development
Notes
-
Visualizer
Alt+1is currently a deterministic demo-bars mode, not FFT-driven spectrum analysis. -
Playlist items support play and remove; adding always starts from Library with
a. -
artifacts/release/checksums-<candidate-id>.txt -
artifacts/release/release-summary-<candidate-id>.md -
artifacts/release/approval-events.log
Release gate inputs:
config/release-policy.tomlconfig/docs-sync-checklist.md- Release notes reference path (
RELEASE_NOTES_PATH, defaults todocs/README.md)
License
MIT. See LICENSE.