pacmixer is an alsamixer alike for PulseAudio.
I started this, because I've found no full-blown, terminal based mixers available for PA. All there are are either CLI or some kinds of GNOME/KDE applets. That's not what I wanted, so in the end I decided to go for it myself.
It was also a good starting point to finally learn myself some ObjC :).
Back in the old days, there were a good mixer for ALSA (alsamixer), so I thought about taking some of their ideas, mix it with mine, and see what happens.
Updating past 0.5: Configuration mechanism has been reworked to be more flexible and integrate better with GNU/Linux environment. It means that:
- Pacmixer configuration is no longer available through settings tab (it is reserved for PA options).
- Settings are now configured using configuration file.
- Settings configured with version <= 0.5 will be reset to defaults after update.
- Settings storage follows XDG => No more creepy "GNUStep" directory.
- gcc-objc (for compilation)
- ninja (for compilation)
# ./mk install
Note: There is also an introductory video available here, thanks to @gotbletu.
man pacmixer is your friend now as well.
pacmixer comes with built-in help, but here's the shortcuts reference, just in case.
h (or Left): Moves to the previous control. l (or Right): Moves to the next control. k (or Up): Increases the volume standardly. K (or Shift+Up): Increases the volume fastly. j (or Down): Decreases the volume standardly. J (or Shift+Down): Decreases the volume fastly. m: Mutes the volume. d: Sets as default. i: Enters inside mode. s: Enters settings mode. q (or Esc): Exits settings/inside mode or exit the application. F1-F5 (or 1-5): Switches to All/Playback/Recording/Outputs/Inputs view, respectively. F12 (or 0): Switches to Settings view.
Used to change card wise settings (e.g. profiles).
h (or Left): Moves to the previous group of settings. l (or Right): Moves to the next group of settings. k (or Up): Moves to the previous setting within group. j (or Down): Moves to the next setting within group. space: (Un)checks highlighted setting. q (or Esc): Exits the application.
Used to adjust specific channel's volume.
All shortcuts (besides
q) work the same, except that they affect single channel instead of the whole sink/source.
Used to change controls settings (e.g. ports).
Shortcuts work like in outside mode, except that:
spaceis used to check setting.
literate only over controls which actually have settings.
Pacmixer uses toml based configuration file stored in either
When run for the first time, it will create a new file with all configuration options set to their defaults. You can use this file as a basis and/or checkout the reference below.
StartScreen (string) - Sets which screen should be visible when starting pacmixer. Available values are "All", "Playback", "Recording", "Outputs", "Inputs" and "Settings".
UpSpeed (integer) - Sets the speed of the standard volume up command.
FastUpSpeed (integer) - Sets the speed of the fast volume up command.
DownSpeed (integer) - Sets the speed of the standard volume down command.
FastDownSpeed (integer) - Sets the speed of the standard volume down command.
Monitors (boolean) - Filters out Monitor controls.
Internals (boolean) - Filters out PA internal controls.
Options (boolean) - Filters out Options part of the controls.
Dir (string) - Directory where log file(s) will be stored. Leave empty string to disable logging.
Please include the log file (
$HOME/.local/share/pacmixer/pacmixer.log by default) with your bug report.
If it crashes hard (i.e. SEGFAULTS), it might also be useful to compile in debug mode and run through
gdb to retrieve stacktrace.
$ ./mk debug $ gdb ./pacmixer gdb$ run gdb$ bt
That will make it easier to identify the problem.
$ ./mk tests $ ./pacmixer_run_tests