An ncurses mp3 player written in Haskell

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

GPL licensed by Don Stewart
Maintained by

hmp3 : an ncurses mp3 player written in Haskell


$ chmod +x configure Setup.hs
$ ./Setup.hs configure --prefix=/home/dons
$ ./Setup.hs build
$ ./Setup.hs install

This assumes you have Cabal installed. Cabal is installed by default
with newer GHCs. If your Cabal version is too old (v1.0 that comes with
GHC 6.4.1 is too old), or if you see:
dist/build/hmp3-tmp/cbits/utils.o: No such file or directory
errors, then you need to download a newer Cabal version first.

To populate a playlist, and start:

$ hmp3 ~/mp3/dir/
$ hmp3 a.mp3 b.mp3

From then on this playlist is saved in ~/.hmp3db, and is reloaded
automatically, if you restart hmp3 with no arguments.

$ hmp3

Type 'h' to display the help page. The other commands are explained
on the help screen, which can be accessed by typing 'h'. Quit with


Colours may be configured at runtime by editing the "~/.hmp3" file.
An example would be:

Config {
hmp3_window = ("brightwhite", "black")
, hmp3_helpscreen = ("black", "cyan")
, hmp3_titlebar = ("green", "blue")
, hmp3_selected = ("brightwhite", "black")
, hmp3_cursors = ("black", "cyan")
, hmp3_combined = ("black", "cyan")
, hmp3_warnings = ("brightwhite", "red")
, hmp3_blockcursor = ("black", "darkred")
, hmp3_progress = ("cyan", "white")

After editing this file, hit 'l' to have the changes used by hmp3.

The keymaps are configurable by adding your own bindings to
Config.hs (as are the colours). Edit this file before compilation.

Alternatively, you can switch between dark and light settings without
recompiling. If you have a light xterm, set HMP_HAS_LIGHT_BG=true in
your shell, and hmp3 will use the light color settings by default.

It only plays mp3 files (and variants supported by mpg{321,123}.
So no ogg files for now. This is on the todo list though.

It is possible to use mpg123, however it appears to be more error
prone, and less stable than mpg321.

Platforms and portability:
hmp3 has been confirmed to work on:

* You need -threaded.

* On platforms without a native code generator, you should remove the
reference to -fasm in the hmp3.cabal file


Don Stewart, Tue Jan 15 15:16:55 PST 2008

Samuel Bronson
Stefan Wehr
Tomasz Zielonka
David Himmelstrup
comments powered byDisqus