Skip to content
fzf mpd user interface
Branch: master
Clone or download


fzf mpd user interface
Warning: FMUI will add every song to your queue by default.


Unofficial aur package


Required uncommon programs

  • toilet
  • fzf
  • mpc


General configuration

The config is a bash script called "config" located in "~/.config/fmui/".

Variable name Type Description Default value
fill_queue Boolean Add every song to the queue on starting FMUI true
clear_queue Boolean Clear queue on starting FMUI false
fzf_options Array fzf additional command line arguments '--cycle', '-i'
song_format String Default song format used by the song info screen, see man mpc '[[[%artist% - ]%title%]|[%file%]]'
song_list_format String Song format used for fzf, see man mpc '%time% [[[%artist% - ]%title%]|[%file%]]'
preview String fzf preview command 'mpc | tail -n 1'
prompt String fzf prompt '\xF0\x9D\x84\x9E '
seek_step String Seek time '00:00:10'
visualizer String Visualizer program, e.g. cava, vis 'cava || vis'
mod String Mod key 'ctrl'
cover_max_width Integer Max width of the extracted image which is used as cover image 500
cover_max_columns Integer Max amount of columns used to display the cover image 30
margin String fzf margin 0,0,0,0 or 0,0,0,cover_max_columns+1 if cover enabled
preview_box_size Integer size of fzf preview box 1 or 20 if cover enabled
DIR_MUSIC String The path to your music collection

Cover images

  1. Install:
    • Überzug
    • ffmpeg or avconv (should also include ffprobe or avprobe)
    • file likely already installed
  2. Assign the path of your music collection to DIR_MUSIC in your config.


Keybindings formatted with fzfs syntax are also configured with a bash script called "keybindings".
Commands starting with 'execute-silent' bound to a single char are useable in subscreens.

Default keybindings

Key Action Subscreens
q Quit fzf
u Update fzf preview window
v Start visualizer
i Show song info screen
j Go down
k Go up
down Go down
up Go up
return Play choice
mod-r Toggle repeat
mod-s Shuffle
mod-d Update mpd database, restart
left Seek backwards
right Seek forwards
h Seek backwards
l Seek forwards
p Toggle play
c Toggle consume
s Toggle single song
r Toggle random
< Play previous song
> Play next song

Keybindings example

readonly VOLUME_STEP=2
# format? see man fzf
readonly ACTION_VOLUME_UP="execute-silent:amixer set Master ${VOLUME_STEP}%+ unmute"
readonly ACTION_VOLUME_DOWN="execute-silent:amixer set Master ${VOLUME_STEP}%- unmute"



  • vis: Works out of the box
  • cava:
             if (strncmp(ttyname(0), "/dev/tty", 8) == 0 || strcmp(ttyname(0),
                   "/dev/console") == 0) inAtty = 1;
    needs to be replaced with
              if (ttyname(0) != NULL &&
                      (strncmp(ttyname(0), "/dev/tty", 8) == 0 ||
                       strcmp(ttyname(0), "/dev/console") == 0)) {
                  inAtty = 1;


fzf song list fzf song list with cover song info screen cava

You can’t perform that action at this time.