ncurses PulseAudio Mixer

November 22, 2025 ยท View on GitHub

An ncurses mixer for PulseAudio inspired by pavucontrol.

demo

Config

Your configuration gets created on first run. If $XDG_CONFIG_HOME is defined then it will be created at $XDG_CONFIG_HOME/ncpamixer.conf otherwise $HOME/.ncpamixer.conf

Custom colors? Why not!

ncpamixer supports 256 colors. You can change them in ncpamixer.conf

Custom bindings? Sure!

You find them in ncpamixer.conf

Default bindings

EventDefaultDescription
switchtabCycle trought sinks, outputs, profile and ports
selectenterSelect option in dropdowns
quitescapeQuit
quitqQuit
dropdowncOpen dropdown for selecting sinks, outputs, profile and ports
mutemMute selected item
set_defaultdSet default sink/source
volume_uplIncrease volume on selected item
volume_downhDecrease volume on selected item
volume_uparrow rightIncrease volume on selected item
volume_downarrow leftDecrease volume on selected item
move_upkMove up
move_downjMove down
move_uparrow upMove up
move_downarrow downMove down
page_uppage upPrevious page in dropdown
page_downpage downNext page in dropdown
tab_nextLNext tab
tab_prevHPrevious tab
tab_playbackF1Jump to playback tab
tab_recordingF2Jump to recording tab
tab_outputF3Jump to output tab
tab_inputF4Jump to input tab
tab_configF5Jump to configuration tab
move_lastGMove to last item
move_firstgMove to first item
set_volume_00Set volume to 0%
set_volume_101Set volume to 10%
set_volume_202Set volume to 20%
set_volume_303Set volume to 30%
set_volume_404Set volume to 40%
set_volume_505Set volume to 50%
set_volume_606Set volume to 60%
set_volume_707Set volume to 70%
set_volume_808Set volume to 80%
set_volume_909Set volume to 90%
help?Pop up with keycode information
set_volume_100UnboundSet volume to 100%
toggle_staticUnboundToggle barmode static/none static

Dependencies

  • PulseAudio :alien:
  • ncurses

Build dependencies

  • CMake
  • C++14 compatible compiler
  • Pandoc for manpages

On Debian(-based) systems, you'd need libncurses-dev and libpulse-dev.

On Fedora system, you'd need ncurses-devel and pulseaudio-libs-devel.

Building

  • In the main directory, run make
  • On some systems (tested on Debian-stable), you may need to instead run make USE_WIDE=True
  • The above command is needed to get UTF-8 support; it will cause CMake to look for the ncursesw library, and it'll link to it with -lncursesw
  • (This also means you might have to first rm build/CMakeCache.txt if you ran make without using the USE_WIDE setting, so it'll re-generate the Makefile)

Install

Arch Linux

packer -S ncpamixer-git https://aur.archlinux.org/packages/ncpamixer-git/

Gentoo ebuild

https://github.com/fulhax/fulhax-overlay/tree/master/media-sound/ncpamixer

Tested on

  • Gentoo + cachyos-kernel 6.13.7, PipeWire 1.4.1 and ncurses 6.5_p20250308
  • Gentoo kernel 4.12.10, PulseAudio 11.0 and ncurses 6.0-r1
  • Gentoo kernel 4.6.2, PulseAudio 9.0 and ncurses 6.0-r1
  • Arch Linux 4.6.4-1 PulseAudio 9.0 and ncurses 6.0-4
  • Fedora kernel 4.18.10-200, PulseAudio 12.2 and ncurses 6.1-5

License

MIT