Package: pulsemixer
pulsemixerCLI and curses mixer for PulseAudioRequirementsPython>= 3.3PulseAudio>= 1.0InstallationPulsemixer is a self-sufficient single-file python app that doesn't require any extra libraries. You can simply downloadpulsemixermanually, dochmod +x ./pulsemixerand put it anywhere you want.Below are some more convenient ways to install pulsemixer:curlcurlhttps://raw.githubusercontent.com/GeorgeFilipkin/pulsemixer/master/pulsemixer>pulsemixer&&chmod+x./pulsemixerpippip install pulsemixerInteractive modeInteractive mode is used if no arguments are given (except--colorand--server)Interactive controls:j k   ↑ ↓               Navigation
 h l   ← →               Change volume
 H L   Shift←  Shift→    Change volume by 10
 1 2 3 .. 8 9 0          Set volume to 10%-100%
 m                       Mute/Unmute
 Space                   Lock/Unlock channels
 Enter                   Context menu
 F1 F2 F3                Change modes
 Tab   Shift Tab         Next/Previous mode
 Mouse click             Select device or mode
 Mouse wheel             Volume change
 Esc q                   QuitVia context menu it is possible toset-default-sink,set-default-source,move-sink-input,move-source-output,suspend-sink,suspend-source,set-sink-port,set-source-port,kill-client,kill-sink-input,kill-source-output,set-card-profile. Seeman pactlfor details on these features.CLIUsage of pulsemixer:
  -h, --help            show this help message and exit
  -v, --version         print version
  -l, --list            list everything
  --list-sources        list sources
  --list-sinks          list sinks
  --id ID               specify ID, default sink is used if no ID specified
  --get-volume          get volume for ID
  --set-volume n        set volume for ID
  --set-volume-all n:n  set volume for ID, for every channel
  --change-volume +-n   change volume for ID
  --max-volume n        set volume to n if volume is higher than n
  --get-mute            get mute for ID
  --mute                mute ID
  --unmute              unmute ID
  --toggle-mute         toggle mute for ID
  --server              choose the server to connect to
  --color n             0 no color, 1 color currently selected, 2 full-color
  --no-mouse            disable mouse support
  --create-config       generate configuration fileCLI examplesPulsemixer follows PulseAudio's terminology:Sink - an output device.Source - an input device.Sink input - a stream that is connected to an output device, i.e. an input for a sink.Source output - a stream that is connected to an input device, i.e. an output of a source.$pulsemixer--list
Sink:ID:sink-1,Name:Built-inStereo,Mute:0,Channels:2,Volumes:['60%','60%'],Default
Sink:ID:sink-3,Name:HDMIAudio(HDMI2),Mute:0,Channels:2,Volumes:['50%','50%']Sinkinput:ID:sink-input-663,Name:Firefox,Mute:0,Channels:2,Volumes:['60%','60%']Sinkinput:ID:sink-input-686,Name:mocp,Mute:0,Channels:2,Volumes:['60%','60%']Source:ID:source-1,Name:HDMIAudio(HDMI2),Mute:0,Channels:2,Volumes:['100%','100%']Source:ID:source-2,Name:Built-inStereo,Mute:0,Channels:2,Volumes:['40%','40%'],Default
Sourceoutput:ID:source-output-7,Name:arecord,Mute:0,Channels:1,Volumes:['40%]Print volume of the default sink, decrease by 5, print new volume:$pulsemixer--get-volume--change-volume-5--get-volume60605555Toggle mute ofsource-1, print mute status:$pulsemixer--idsource-1--toggle-mute--get-mute1Set volume ofsink-input-663to 50, then set volume ofsink-3to 10 (left channel) and 30 (right channel):$pulsemixer--idsink-input-663--set-volume50--idsink-3--set-volume-all10:30Increase volume ofsink-input-686by 10 but don't get past 100:$pulsemixer--idsink-input-686--change-volume+10--max-volume100ConfigurationOptional.
The config file will not be created automatically. Dopulsemixer --create-configor copy-paste it from here.;; Goes into ~/.config/pulsemixer.cfg, $XDG_CONFIG_HOME respected;; Everything that starts with "#" or ";" is a comment;; For the option to take effect simply uncomment it[general]step=1step-big=10; server =[keys];; To bind "special keys" such as arrows see "Key constant" table in;; https://docs.python.org/3/library/curses.html#constants; up        = k, KEY_UP, KEY_PPAGE; down      = j, KEY_DOWN, KEY_NPAGE; left      = h, KEY_LEFT; right     = l, KEY_RIGHT; left-big  = H, KEY_SLEFT; right-big = L, KEY_SRIGHT; top       = g, KEY_HOME; bottom    = G, KEY_END; mode1     = KEY_F1; mode2     = KEY_F2; mode3     = KEY_F3; next-mode = KEY_TAB; prev-mode = KEY_BTAB; mute      = m; lock      = ' '  ; 'space', quotes are stripped; quit      = q, KEY_ESC[ui]; hide-unavailable-profiles = no; hide-unavailable-ports = no; color = 2    ; same as --color, 0 no color, 1 color currently selected, 2 full-color; mouse = yes[style];; Pulsemixer will use these characters to draw interface;; Single characters only; bar-top-left       = ┌; bar-left-mono      = ╶; bar-top-right      = ┐; bar-right-mono     = ╴; bar-bottom-left    = └; bar-bottom-right   = ┘; bar-on             = ▮; bar-on-muted       = ▯; bar-off            = -; arrow              = ' '; arrow-focused      = ─; arrow-locked       = ─; default-stream     = *; info-locked        = L; info-unlocked      = U; info-muted         = M  ; 🔇; info-unmuted       = M  ; 🔉[renames];; Changes stream names in interactive mode, regular expression are supported;; https://docs.python.org/3/library/re.html#regular-expression-syntax; 'default name example' = 'new name'; '(?i)built-in .* audio' = 'Audio Controller'; 'AudioIPC Server' = 'Firefox'The old environment variablePULSEMIXER_BAR_STYLEis still supported.
To change the volume bar's appearance in (e.g.) zsh without creating the config file:exportPULSEMIXER_BAR_STYLE="╭╶╮╴╰╯◆◇· ──"See alsopython-pulse-control- Python high-level interface and ctypes-based bindings for PulseAudio.