pulsemixer - CLI and curses mixer for PulseAudio
Project description
pulsemixer
CLI and curses mixer for PulseAudio
Requirements
Python
>= 3.3PulseAudio
>= 1.0
Installation
Pulsemixer is a self-sufficient single-file python app that doesn't require any extra libraries. You can simply download pulsemixer manually, do chmod +x ./pulsemixer
and put it anywhere you want.
Below are some more convenient ways to install pulsemixer:
curl
curl https://raw.githubusercontent.com/GeorgeFilipkin/pulsemixer/master/pulsemixer > pulsemixer && chmod +x ./pulsemixer
pip
pip install pulsemixer
Interactive mode
Interactive mode is used if no arguments are given (except --color
and --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 Quit
Via context menu it is possible to set-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
. See man pactl
for details on these features.
CLI
Usage 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 file
CLI examples
Pulsemixer 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-in Stereo, Mute: 0, Channels: 2, Volumes: ['60%', '60%'], Default
Sink: ID: sink-3, Name: HDMI Audio (HDMI 2), Mute: 0, Channels: 2, Volumes: ['50%', '50%']
Sink input: ID: sink-input-663, Name: Firefox, Mute: 0, Channels: 2, Volumes: ['60%', '60%']
Sink input: ID: sink-input-686, Name: mocp, Mute: 0, Channels: 2, Volumes: ['60%', '60%']
Source: ID: source-1, Name: HDMI Audio (HDMI 2), Mute: 0, Channels: 2, Volumes: ['100%', '100%']
Source: ID: source-2, Name: Built-in Stereo, Mute: 0, Channels: 2, Volumes: ['40%', '40%'], Default
Source output: 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-volume
60 60
55 55
Toggle mute of source-1
, print mute status:
$ pulsemixer --id source-1 --toggle-mute --get-mute
1
Set volume of sink-input-663
to 50, then set volume of sink-3
to 10 (left channel) and 30 (right channel):
$ pulsemixer --id sink-input-663 --set-volume 50 --id sink-3 --set-volume-all 10:30
Increase volume of sink-input-686
by 10 but don't get past 100:
$ pulsemixer --id sink-input-686 --change-volume +10 --max-volume 100
Configuration
Optional.
The config file will not be created automatically. Do pulsemixer --create-config
or 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 = 1
step-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 variable PULSEMIXER_BAR_STYLE
is still supported.
To change the volume bar's appearance in (e.g.) zsh without creating the config file:
export PULSEMIXER_BAR_STYLE="╭╶╮╴╰╯◆◇· ──"
See also
python-pulse-control - Python high-level interface and ctypes-based bindings for PulseAudio.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pulsemixer-1.5.1.tar.gz
.
File metadata
- Download URL: pulsemixer-1.5.1.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11dad404a3a658d5741169194e438177061ee6e4fcb9b0ed2c9c248caacdadd5 |
|
MD5 | 23f73341d78b9fe52e1f1410fa70d468 |
|
BLAKE2b-256 | 2e0dc29d2f97691b85e7b59dc66f3fdced0df2e581b73220a89cfe881d743b4b |
File details
Details for the file pulsemixer-1.5.1-py3-none-any.whl
.
File metadata
- Download URL: pulsemixer-1.5.1-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5537b5f52717325ebc5358a95db965bbc2c1ae1e4e240c25e2d920acf8e0e160 |
|
MD5 | af0b1a2e2db49990d90adebef1e47d57 |
|
BLAKE2b-256 | 7044c52c47954e43dd70b226c552553b8788262b2a82741a9a3ae778a588173a |