Skip to content

m4rcel-lol/TermiTune

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TermiTune ๐ŸŽต

  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
     โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•
     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  
     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•”โ•โ•โ•  โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•  
     โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
     โ•šโ•โ•   โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•     โ•šโ•โ•โ•šโ•โ•   โ•šโ•โ•    โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•  โ•šโ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•

A beautiful, fast, fully customizable TUI music player built natively for Arch Linux.


โœจ Features

  • 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

๐Ÿ“ธ UI Preview

โ•ญโ”€ 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

๐Ÿš€ Installation (Arch Linux)

Prerequisites

sudo pacman -S rust alsa-lib pkgconf

Build & Run

git 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/bin

Or with Make

make install        # build + install
make run            # debug run
make help           # show all targets

โŒจ๏ธ Keybindings

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

๐ŸŽจ Theming

Themes live in ~/.config/termitune/themes/ as JSON files.

Built-in themes: default, dark, neon

Theme format

{
  "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.


โš™๏ธ Configuration

Config file: ~/.config/termitune/config.json

{
  "music_dir": "~/Music",
  "theme": "default",
  "volume": 0.7,
  "visualizer_mode": "bars",
  "visualizer_sensitivity": 1.0,
  "restore_session": true
}

๐Ÿ— Architecture

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

Why Rust?

  • Memory safety without GC โ€” zero-cost abstractions at 60fps
  • ratatui is the most mature Rust TUI library
  • rodio wraps CPAL/ALSA natively โ€” no external daemon needed
  • rustfft gives us proper FFT for the visualizer without C bindings
  • lofty reads MP3/FLAC/OGG tags natively
  • Compile to a single static-ish binary โ€” no runtime deps beyond ALSA

๐Ÿ“ฆ Building Manually (PKGBUILD)

A PKGBUILD template is included for future AUR submission:

makepkg -si

๐Ÿ“„ License

Nice ยฉ m4rcel-lol

About

TermiTune is a TUI Local Music Player written in Rust and built for the people. Currently only for Arch Linux.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors