13 releases

new 0.2.2 Apr 13, 2024
0.2.1 Mar 22, 2024
0.1.10 Mar 3, 2024
0.1.9 Dec 26, 2023
0.1.6 Sep 28, 2023

#20 in Audio

Download history 10/week @ 2023-12-21 13/week @ 2024-02-08 6/week @ 2024-02-22 129/week @ 2024-02-29 27/week @ 2024-03-07 58/week @ 2024-03-14 331/week @ 2024-03-21 28/week @ 2024-03-28 10/week @ 2024-04-04

431 downloads per month

MIT license

1.5K SLoC


Crates.io License: MIT

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.

Preview - Vertical Preview


Usage: mixxc [-w <width>] [-h <height>] [-s <spacing>] [-a <anchor...>] [-m <margin...>] [-b <bar>] [-u <userstyle>] [-k] [-i] [-x <max-volume>] [-v]

Minimalistic volume mixer.

  -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
  -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)
  -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.


If you have enabled the Sass feature, it will also look for *.scss and *.sass files.



Mixxc is developed and tested with:

  • Wayland
  • Hyprland
  • PipeWire

If your setup is different and you experience issues, feel free to file a bug report.


Startup Time

If startup seems a bit slow, try this:


Manual Closing

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

Toggle Window

If you want to toggle window with a click of a button, Unix way is the way:

pkill mixxc | mixxc



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...


~646K SLoC