Mixxc is a minimalistic and customizable volume mixer, created to seamlessly complement desktop widgets.
Currently, it supports only pulseaudio
and pipewire
(through the pulseaudio interface) by utilizing libpulseaudio
to receive audio events.
Usage: mixxc [-w <width>] [-h <height>] [-s <spacing>] [-a <anchor...>] [-A] [-m <margin...>] [-M] [-b <bar>] [-u <userstyle>] [-k] [-i] [-x <max-volume>] [-P] [-v]
Minimalistic volume mixer.
Options:
-w, --width window height
-h, --height window width
-s, --spacing spacing between clients
-a, --anchor screen anchor point: (t)op, (b)ottom, (l)eft, (r)ight
-A, --active show only active sinks
-m, --margin margin distance for each anchor point
-M, --master enable master volume slider
-b, --bar volume slider orientation: (h)orizontal, (v)ertical
-u, --userstyle path to the userstyle
-k, --keep keep window open
-i, --icon enable client icons
-x, --max-volume max volume level in percent (default: 100; 1-255)
-P, --per-process use only one volume slider for each system process
-v, --version print version
--help display usage information
It is often desirable to be able to position widgets relatively to a screen side.
Two flags will help with this: -a --anchor
and -m --margin
.
Each margin value provided will match every anchor point respectively.
mixxc --anchor left --anchor bottom --margin 20 --margin 30
Mixxc is built with GTK4 and uses CSS to define its appearance.
You will find the style sheet in your config directory after the first launch.
${XDG_CONFIG_HOME:-$HOME/.config}/mixxc/style.css
If you have enabled the Sass feature, it will also look for *.scss and *.sass files.
${XDG_CONFIG_HOME:-$HOME/.config}/mixxc/style.sass
${XDG_CONFIG_HOME:-$HOME/.config}/mixxc/style.scss
Mixxc is developed and tested with:
- Wayland (Hyprland):
0.44.1
- PipeWire:
1.2.5
If your setup is different and you experience issues, feel free to file a bug report.
If startup seems a bit slow or memory usage seems a bit too high try this:
GSK_RENDERER=cairo GTK_USE_PORTAL=0 mixxc
By default window will be closed after it looses focus.
This is a workaround for WM's that don't send close
request to layer-shells under Wayland.
If this behavior is not desirable, you can disable it:
mixxc --keep
If you want to toggle window with a click of a button, Unix way is the way:
pkill mixxc | mixxc
To get GTK related messages a specific environment variable must be non empty.
GTK_DEBUG=1 mixxc
- GTK4
- gtk4-layer-shell (Feature: Wayland)
- libpulseaudio
- libxcb (Feature: X11)
Some features can be enabled at compile time.
- Sass - Allows you to use SCSS instead of CSS.
- Wayland - Uses wlr-layer-shell to imitate window positioning.
- X11 - Sets WM hints and properties, and repositions the window.
Can be installed from crates.io with cargo
:
cargo install mixxc --locked --features Sass,Wayland...
To build this little thing, you'll need some Rust.
git clone --depth 1 https://github.com/Elvyria/mixxc
cd mixxc
cargo build --locked --release --features Sass,Wayland...