System-wide GTK parametric equalizer for PipeWire using WirePlumber.
Project description
Mini EQ
Mini EQ is a small system-wide parametric equalizer for PipeWire desktops. It uses GTK/Libadwaita for the UI, WirePlumber for routing/default-output control, PipeWire filter-chain with builtin biquad filters for the equalizer, and the JACK API on PipeWire plus NumPy FFT analysis for the analyzer.
Install
Mini EQ depends on system desktop/audio packages that are not installed by Python packaging: GTK4/Libadwaita 1.4+ GI bindings, WirePlumber introspection, PipeWire, and PipeWire JACK compatibility.
Package names vary by distro release. Mini EQ prefers WirePlumber 0.5 introspection when available and falls back to WirePlumber 0.4, which is what Ubuntu 24.04 provides.
These are good starting points:
# Ubuntu / Debian
sudo apt install \
gir1.2-adw-1 \
gir1.2-gtk-4.0 \
gir1.2-wp-0.4 \
pipewire \
pipewire-jack \
python3-cairo \
python3-gi \
wireplumber
# Fedora
sudo dnf install \
gtk4 \
libadwaita \
pipewire \
pipewire-jack-audio-connection-kit \
python3-cairo \
python3-gobject \
wireplumber \
wireplumber-libs
# Arch Linux
sudo pacman -S \
gtk4 \
libadwaita \
libwireplumber \
pipewire \
pipewire-jack \
python-cairo \
python-gobject \
wireplumber
Use gir1.2-wp-0.5 instead of gir1.2-wp-0.4 on distro releases that package
WirePlumber 0.5 introspection.
Install the Python package after the system packages are present:
python3 -m pip install mini-eq
mini-eq --check-deps
mini-eq
For a source checkout:
python3 -m pip install -e .
mini-eq --check-deps
mini-eq
For a source checkout without installing the package:
PYTHONPATH=src python3 -m mini_eq --check-deps
PYTHONPATH=src python3 -m mini_eq
Install the desktop launcher and icon for the current user:
mini-eq --install-desktop
Screenshot
Test
python3 -m pip install -e '.[dev]'
python3 -m ruff check .
python3 -m ruff format --check .
python3 -m pytest -q
Some integration tests are skipped automatically when optional PipeWire runtime tools are not installed.
Check the Ubuntu 24.04 WirePlumber 0.4 GI compatibility surface in Docker:
docker build -f docker/ubuntu-24.04-wp04.Dockerfile -t mini-eq:wp04 .
docker run --rm mini-eq:wp04
Flatpak
The Flatpak manifest uses the GNOME runtime. It does not ship a full PipeWire daemon or session manager; it builds only the local PipeWire filter-chain module and SPA builtin filter-graph support that Mini EQ loads inside the app process. The analyzer uses the runtime JACK compatibility library with bundled Python JACK and NumPy dependencies.
Install the local build tools:
flatpak --user install flathub org.flatpak.Builder org.gnome.Sdk//50
Build and install the local Flatpak:
flatpak run org.flatpak.Builder --user --install --force-clean --install-deps-from=flathub \
flatpak-build io.github.bhack.mini-eq.json
flatpak run io.github.bhack.mini-eq --check-deps
flatpak run io.github.bhack.mini-eq
Notes
Runtime data is stored under ~/.config/mini-eq.
pip install mini-eq installs only the Python package. The system packages
above are still required for the app to connect to GTK, WirePlumber, PipeWire,
and PipeWire JACK.
Acknowledgements
Mini EQ is inspired in part by EasyEffects and the broader Linux PipeWire audio tooling ecosystem. Mini EQ is a separate project focused on a compact system-wide parametric EQ workflow.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mini_eq-0.1.1.tar.gz.
File metadata
- Download URL: mini_eq-0.1.1.tar.gz
- Upload date:
- Size: 3.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4877825276922915ecd7d64d9933c82855e48c849c4c4e8842f35b75075a84d4
|
|
| MD5 |
2c9120037cdcce1dddd51da4c2ff4d50
|
|
| BLAKE2b-256 |
610c7e342c47343db22867c634ec612924996a4ab028b5474065672720d48200
|
Provenance
The following attestation bundles were made for mini_eq-0.1.1.tar.gz:
Publisher:
release.yml on bhack/mini-eq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mini_eq-0.1.1.tar.gz -
Subject digest:
4877825276922915ecd7d64d9933c82855e48c849c4c4e8842f35b75075a84d4 - Sigstore transparency entry: 1391945250
- Sigstore integration time:
-
Permalink:
bhack/mini-eq@c7b043033163f3cb6afbe09ee8ddb4b04234066a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/bhack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c7b043033163f3cb6afbe09ee8ddb4b04234066a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file mini_eq-0.1.1-py3-none-any.whl.
File metadata
- Download URL: mini_eq-0.1.1-py3-none-any.whl
- Upload date:
- Size: 3.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fb7deddaed6d1e0e67daafcd7a9b0a0db0abed537a211913be22243b70bc788
|
|
| MD5 |
a19b211e30218cbb54d4e5c9aa971a62
|
|
| BLAKE2b-256 |
f5f0760d7e9b5268a0613b5d588274bec07e29e3107075474334bafee8ba5825
|
Provenance
The following attestation bundles were made for mini_eq-0.1.1-py3-none-any.whl:
Publisher:
release.yml on bhack/mini-eq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mini_eq-0.1.1-py3-none-any.whl -
Subject digest:
9fb7deddaed6d1e0e67daafcd7a9b0a0db0abed537a211913be22243b70bc788 - Sigstore transparency entry: 1391945291
- Sigstore integration time:
-
Permalink:
bhack/mini-eq@c7b043033163f3cb6afbe09ee8ddb4b04234066a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/bhack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c7b043033163f3cb6afbe09ee8ddb4b04234066a -
Trigger Event:
workflow_dispatch
-
Statement type: