Skip to content
/ hum Public

ncmpcpp but better (eventually), also in Haskell for some reason

License

Notifications You must be signed in to change notification settings

iyefrat/hum

Repository files navigation

Hum: a Haskell Music Manager

Status

This project is on indefinite hiatus. It might see more development in the future, but I'll likely pivot to writing an Emacs mpd client instead.

Haskell is wonderful, but imo Emacs is a better enviornment for text based UI than the terminal.

Introduction

A TUI mpd client, currently usable, but missing some features.

The plan is to basically reimplement ncmpcpp in haskell (at least featurewise). The reasons are as follows:

  • Haskell is much more fun than C++
  • I find the tag editor of ncmpcpp to be lacking and want to change it
  • Generally, I want to change some stuff with the UI
  • It's faster (try scrolling down the artists in the library in both programs)
  • I wanted to design the program around vim style bindings
  • I don't know C++

Installation

As this is an MPD client, you will need to install mpd from your favorite package manager.

You can install hum directly from Hackage, or by cloning the repo and running cabal install.

Nix support will be available in the near future, but in the meantime you can run nix-build release.nix and then launch hum with ./result/bin/hum to try it out, but this requires an up to date nixpkgs-unstable.

Features

Current

  • playback keys
  • Viewing the Queue, Library, and Playlists screens
  • Editing the Queue with vim like cut copy and paste
  • adding and bulk adding songs from the Library and Play nlists
  • vim style search
  • a help command
  • playlist editing

Planned

  • better documentation
  • tag info and editing
  • mpdish file browser and more advanced search
  • visualizer because why not
  • having a random mode when you can see what the next song is
  • making the UI nicer
  • more commands
  • more vimmy keybindings (e.g. 10j, perhaps making y and d verbs)
  • doing stuff with album art using uegerzug
  • config file

For a list of all the keybindings and ex style commands, type :help and press RET.