โโโโโโโโโโโโโโโโโโโโโโโโ โโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโ โโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโ โโโโโโโโโโโ
โโโ โโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโ โโโ โโโโโโโโโ โโโโโโโโโ
โโโ โโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโ โโโ โโโโโโโโโโโโโโโโโโโ
โโโ โโโโโโโโโโโ โโโโโโ โโโ โโโโโโ โโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโ
โโโ โโโโโโโโโโโ โโโโโโ โโโโโโ โโโ โโโโโโโ โโโ โโโโโโโโโโโโโ
A beautiful, fast, fully customizable TUI music player built natively for Arch Linux.
- Real-time audio visualizer โ FFT-powered bars, waveform, and spectrum modes
- JSON theme system โ 3 built-in themes + custom theme support
- Full playlist management โ scan folders, shuffle, loop, search, save/load
- Vim-style navigation โ keyboard-driven with intuitive controls
- Session restore โ remembers last playlist and position
- Modular Rust architecture โ fast, memory-safe, 60fps TUI
โญโ File Browser โโโโโโโโโโโโโโโโโโโฎโญโ โถ Now Playing โโโโโโโโโโโโโโโโโโโโโฎ
โ ๐ ~/Music โโ โถ PLAYING โ
โ ๓ฐ Albums โโ โช Midnight City โ
โ ๓ฐ Singles โโ M83 โ Hurry Up, We're Dreaming โ
โ โช 01-midnight-city.mp3 โโ 2011 โ
โ โช 02-reunion.mp3 โโ โโโโโโโโโโโโโโโโโโโโโ 2:34 / 4:03 โ
โ โช 03-soon.mp3 โโ Volume: 70% โฒ ALL โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏโฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญโ Queue (12 tracks) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โถ M83 - Midnight City 4:03 โ
โ M83 - Reunion 3:55 โ
โ M83 - Soon 4:38 โ
โ Boards of Canada - Roygbiv 2:27 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โถ M83 โ Midnight City [โโโโโโโโโโโโโโโ] 2:34 / 4:03 vol: 70% โฒ ALL
[Tab] Switch panel [Enter] Select [Space] Play/Pause [n/p] Next/Prev [q] Quit
sudo pacman -S rust alsa-lib pkgconfgit clone https://github.com/m4rcel-lol/termitune
cd termitune
chmod +x build.sh
./build.sh # builds release binary
./build.sh install # installs to /usr/local/binmake install # build + install
make run # debug run
make help # show all targets| Key | Action |
|---|---|
Space |
Play / Pause |
n |
Next track |
p |
Previous track |
l |
Cycle loop mode (off/one/all) |
s |
Toggle shuffle |
v |
Cycle visualizer mode |
t |
Cycle theme |
/ |
Search playlist |
+ / - |
Volume up / down |
m |
Mute toggle |
f / b |
Seek forward / backward |
j / k |
Navigate down / up |
h / l |
Browser: go up / enter dir |
Tab |
Switch panel focus |
Enter |
Select / play item |
a |
Add current folder to queue |
d / Del |
Remove track from playlist |
w |
Save playlist to file |
c |
Clear playlist |
1 |
Home page |
2 |
Now Playing page |
3 |
Settings page |
4 |
Credits page |
q |
Quit |
Themes live in ~/.config/termitune/themes/ as JSON files.
Built-in themes: default, dark, neon
{
"name": "my-theme",
"description": "My custom theme",
"border_type": "rounded",
"colors": {
"fg": "#d8dee9",
"bg": "#2e3440",
"accent": "#88c0d0",
"progress_bar": "#5e81ac",
"visualizer": ["#88c0d0", "#81a1c1", "#5e81ac", "#8fbcbb"],
"highlight_fg": "#2e3440",
"highlight_bg": "#88c0d0",
"border": "#4c566a",
"title": "#eceff4",
"subtitle": "#88c0d0",
"muted": "#4c566a"
}
}border_type options: "rounded", "plain", "double", "thick"
Press t in-app to cycle through available themes. Reload without restart: press t multiple times.
Config file: ~/.config/termitune/config.json
{
"music_dir": "~/Music",
"theme": "default",
"volume": 0.7,
"visualizer_mode": "bars",
"visualizer_sensitivity": 1.0,
"restore_session": true
}src/
โโโ main.rs โ entry, terminal init, run loop (~60fps)
โโโ app.rs โ AppState, event routing, session
โโโ audio.rs โ rodio wrapper + CaptureSource for FFT
โโโ visualizer.rs โ FFT analysis (rustfft), bars/waveform/spectrum
โโโ ui/
โ โโโ mod.rs โ page dispatcher
โ โโโ home.rs โ 3-panel home layout
โ โโโ player.rs โ full player + visualizer page
โ โโโ browser.rs โ full-screen file browser
โ โโโ settings.rs โ settings page
โ โโโ credits.rs โ credits page
โ โโโ widgets.rs โ shared widgets (status bar, key hints)
โโโ theme/mod.rs โ theme system (JSON + built-ins)
โโโ playlist/mod.rs โ Track, Playlist, PlaylistManager
โโโ config/mod.rs โ Config (JSON persist)
โโโ utils/mod.rs โ format helpers
- Memory safety without GC โ zero-cost abstractions at 60fps
ratatuiis the most mature Rust TUI libraryrodiowraps CPAL/ALSA natively โ no external daemon neededrustfftgives us proper FFT for the visualizer without C bindingsloftyreads MP3/FLAC/OGG tags natively- Compile to a single static-ish binary โ no runtime deps beyond ALSA
A PKGBUILD template is included for future AUR submission:
makepkg -siNice ยฉ m4rcel-lol