GitHub

Terminal music player written in C, using ncurses and GStreamer.

tmuzika is designed for fast and simple music playback directly in the terminal, with full keyboard control. User configuration and data are stored in ~/.tmuzika.


Screenshots

tmuzika

English

tmuzika English

Serbian Latin

tmuzika Latin

Serbian Cyrillic

tmuzika Cyrillic

tmuzika-radio

English

tmuzika-radio English

Serbian Latin

tmuzika-radio Latin

Serbian Cyrillic

tmuzika-radio Cyrillic

tmuzika-fm

English

tmuzika-fm English

Serbian Latin

tmuzika-fm Latin

Serbian Cyrillic

tmuzika-fm Cyrillic


Features

  • Terminal music playback (ncurses UI)
  • Terminal radio station playback (ncurses UI)
  • Integrated file manager (copy, cut, paste, rename, delete, undo, bookmarks)
  • Add files or entire folders (recursive)
  • Save / Load .m3u playlists
  • Search songs / radio stations
  • Remember last played song / radio station
  • Scroll through lists with keyboard or scroll wheel
  • Customizable color themes (full UI color configuration)
  • Global configuration access (o key in all modes: player, radio, file manager)

Supported audio formats: mp3, wav, flac, ogg, m4a, aac, opus


Key Bindings

Global

Key Action
o Open configuration (colors / key bindings)
b Reset color
? Help
k Exit program

Playback

Key Action
ENTER Play selected song
SPACE Pause / Continue
[ / ] Scroll left/right
z Stop playback
> / < Next / Previous song
+ / - Volume up / down
<- / -> Jump ±10s
HOME / END First / Last song
p Repeat song
l Repeat playlist
e Shuffle
s Search
m File Manager (tmuzika-fm)
q Save playlist (.m3u)
u Load playlist
v Go to current song
x Delete song from playlist
DELETE Delete all songs from playlist

Playback Radio

Key Action
ENTER Play radio station
SPACE Pause / Continue
z Stop playback
> / < Next / Previous
+ / - Volume up / down
d Add radio station
HOME / END First / Last radio station
s Search
m File Manager (tmuzika-fm)
q Save playlist (.m3u)
u Load playlist
v Go to current radio station
x Delete radio station from playlist
DELETE Delete all radio station from playlist
BACKSPACE Quit Radio

File Manager

Key Action
ENTER Enter directory / add song / add .m3u
ESC Parent folder
ctrl+h Toggle hidden files
f / F Add folder / add current folder
m Select files / folders
ctrl+a Select all files
d Add multiple files
s Search
ctrl+n Create new folder
ctrl+t Create new file
F2 Rename file / folder
c Copy
x Cut
v Paste
u Undo last action
DELETE Remove file / folder
ctrl+b Add bookmark
ctrl+d Remove bookmark
1-9 Go to bookmark 1–9
BACKSPACE Quit file manager

Configuration

tmuzika provides a built-in configuration system:

  • Change UI colors

Press o to open configuration from any mode:

  • tmuzika (music player)
  • tmuzika-radio
  • tmuzika-fm (file manager)

Each mode also provides its own help screen (?).


CLI Usage

Play a song or playlist directly from terminal:

tmuzika -p song.mp3
tmuzika --play song.mp3
tmuzika -p playlist.m3u
tmuzika --play playlist.m3u
tmuzika -p folder/
tmuzika --play folder/

Play a radio station or radio playlist directly from terminal:

tmuzika -r radio.mp3
tmuzika --radio radio.mp3
tmuzika -r http://radiostation
tmuzika --radio http://radiostation

Help:

tmuzika -h
tmuzika --help

Conky Integration

tmuzika Conky desktop

Example desktop with Conky displaying tmuzika playback information.

tmuzika writes current playback information to temporary files in /tmp. Files are temporary and exist only while tmuzika is running (they may be removed after system reboot). This allows external tools like Conky to display Now Playing info.

Requirements:

  • Conky must be installed and running
  • tmuzika must be playing audio

What tmuzika exports:

/tmp/tmuzika_status
/tmp/tmuzika_title
/tmp/tmuzika_artist
/tmp/tmuzika_album
/tmp/tmuzika_track
/tmp/tmuzika_elapsed
/tmp/tmuzika_length

Example Conky snippet:

TEXT
${if_running tmuzika}
${if_match "${env LANG}" "sr_RS.UTF-8"}
• Слушам: ${execi 3 grep -m1 . /tmp/tmuzika_status} ${execi 2 grep -m1 . /tmp/tmuzika_title}
Извођач: ${execi 3 grep -m1 . /tmp/tmuzika_artist}
Албум: ${execi 3 grep -m1 . /tmp/tmuzika_album}
Трака бр.: ${execi 3 grep -m1 . /tmp/tmuzika_track}
Преостало: ${execi 3 grep -m1 . /tmp/tmuzika_elapsed} | ${execi 2 grep -m1 . /tmp/tmuzika_length}
${else}${if_match "${env LANG}" "sr_RS@latin.UTF-8"}
• Slušam: ${execi 3 grep -m1 . /tmp/tmuzika_status} ${execi 2 grep -m1 . /tmp/tmuzika_title}
Izvođač: ${execi 3 grep -m1 . /tmp/tmuzika_artist}
Album: ${execi 3 grep -m1 . /tmp/tmuzika_album}
Numera: ${execi 3 grep -m1 . /tmp/tmuzika_track}
Vreme: ${execi 3 grep -m1 . /tmp/tmuzika_elapsed} | ${execi 2 grep -m1 . /tmp/tmuzika_length}
${else}
• Now playing: ${execi 3 grep -m1 . /tmp/tmuzika_status} ${execi 2 grep -m1 . /tmp/tmuzika_title}
Artist: ${execi 3 grep -m1 . /tmp/tmuzika_artist}
Album: ${execi 3 grep -m1 . /tmp/tmuzika_album}
Track: ${execi 3 grep -m1 . /tmp/tmuzika_track}
Time: ${execi 3 grep -m1 . /tmp/tmuzika_elapsed} | ${execi 2 grep -m1 . /tmp/tmuzika_length}
${endif}
${endif}
${else}
${endif}

Troubleshooting

If nothing is displayed:

  • make sure tmuzika is running
  • check that /tmp/tmuzika_* files exist
  • verify Conky update interval

Author and License

Ivan Janković — ivan.jankovic.unix@gmail.com

License: GPL v3 or later

Read the original on github.com ↗