Fast and professional audio metering/visualization for Linux.
Rust
212
768 commits
updated Sep 21, 2026
Professional, fast, and open-source audio meters for Linux.
Capture any PipeWire application or device, inspect loudness, frequency, waveform, and stereo image in one comprehensive suite.
Everything below describes behavior implemented thus far. If you have ideas for the next thing OpenMeters should do, please feel free to open an issue or pull request.
zwlr_layer_shell_v1, anchored to the top or bottom of a given
monitor.none channel traces.none channel lanes.OpenMeters requires:
glibc >=
v2.39. The release workflow builds these artifacts in Ubuntu 24.04.Normal application windows are available on both X11 and Wayland. Bar
mode additionally requires a Wayland compositor that exposes
zwlr_layer_shell_v1.
Install the openmeters-git package from the AUR:
yay -S openmeters-git
Download the latest .deb package from GitHub
Releases.
Download the latest .rpm package from GitHub
Releases.
OpenMeters is available in nixpkgs thanks to
@magnetophon and
@bitbloxhub. Add it to your nix
config with:
nix profile add nixpkgs#openmeters
Tarballs are available under tagged releases, or you can build OpenMeters from source. I cannot guarantee OpenMeters will work on every distribution, although it is designed to stay fairly distro-agnostic. If you have trouble getting it running, please open an issue and I will try to help.
Install a Rust toolchain, a C toolchain, pkg-config, libclang,
and native development packages for PipeWire, Wayland/X11,
xkbcommon, fontconfig/freetype, and the Vulkan loader/development
headers. PipeWire/SPA development headers must be from PipeWire
0.3.77 or newer. The recommended way to install Rust is
rustup. OpenMeters currently requires the
Rust version declared in Cargo.toml or newer.
Clone the repository:
git clone https://github.com/httpsworldview/openmeters/
cd openmeters
Build and run the release binary:
cargo build --release
./target/release/openmeters
Or run it directly through Cargo:
cargo run --release
See packaging/ for instructions on building Debian,
Fedora, and tarball artifacts.
| Binding | Action |
|---|---|
ctrl+shift+h | Show/hide the configuration window; while open, drag visuals to rearrange them. |
| right click on a visual | Open that visual's settings window. |
p | Pause or resume meter updates. |
q twice | Quit the application. |
ctrl+space | Pop out the hovered visual, or dock the focused pop-out. |
| Binding | Action |
|---|---|
| left click+hold | Show the crosshair and frequency/note/time tooltip; highlight the corresponding piano key in yellow. |
ctrl+scroll up/down | Zoom the frequency axis. |
middle click+drag | Pan the frequency axis. |
On first launch, all six visuals are enabled and docked in this order: spectrogram, spectrum analyzer, waveform, oscilloscope, stereometer, and loudness. Refresh follows the main display. Bar mode defaults to 100px high at the bottom edge on supported Wayland compositors; other desktops use a normal window. Saved settings, including disabled visuals, take precedence over these defaults.
Application settings are saved to
$XDG_CONFIG_HOME/openmeters/settings.json, or to:
~/.config/openmeters/settings.json
when XDG_CONFIG_HOME is unset.
settings.json is intentionally editable. GUI ranges are not hard
limits; processors normalize only the bare minimum necessary for
runtime. Unsupported keys or structurally invalid values are logged
and ignored at the narrowest practical scope.
Invalid JSON syntax is ignored and default settings are used for that run. Your configuration file will not be overwritten unless you explicitly change settings in the GUI. Window resize notifications and device discovery alone do not authorize replacing that file. Other read errors receive the same protection; a missing file can be created normally. Unknown keys are not preserved when the file is next written.
If a bug causes OpenMeters to misbehave, you can reset application
settings by deleting settings.json. Please consider reporting the
bug if you run into this.
Themes are saved as separate JSON files in
$XDG_CONFIG_HOME/openmeters/themes/, or in:
~/.config/openmeters/themes/
when XDG_CONFIG_HOME is unset. Theme files own palettes and
background color; settings.json stores the selected theme name and
non-palette module settings.
You can create and switch between themes in the Appearance section of the configuration page. Saving a theme refreshes the list of available themes, including any files that appeared in the theme directory while OpenMeters was running. The built-in theme is read-only in the UI and cannot be overwritten. Feel free to share custom themes by sharing the corresponding JSON files.
Q: Can I build upon OpenMeters or use it in a commercial application?
A: Yes, as long as you abide by the terms of the GPL. My primary focus is keeping OpenMeters free and open source, not profiting from it.
Q: Will you support Windows or macOS?
A: Maybe, but probably not. I'm a Linux user and have been for most of my life. I am not currently confident in my ability to maintain reliable support for either platform. That said, I aim to keep things modular and platform-agnostic where possible. The DSP code at the core of this project will run anywhere; the GUI, persistence, and audio backend code will not.
Q: Why is OpenMeters' FFT size about twice the value shown in MiniMeters or Wave Candy?
A: OpenMeters labels FFT/window size by the number of input samples used. MiniMeters and Wave Candy instead label the visible positive-frequency bins, which represent roughly half the FFT for real-valued audio. To match settings, use approximately twice their displayed band count (for example, 2048 in MiniMeters corresponds to 4096 in OpenMeters).
Please see CONTRIBUTING.md for guidelines on how to contribute and how to get started. No matter what you have to offer, I greatly appreciate your interest in the project. Every bit helps.
OpenMeters is GPL-3.0-or-later software. You may reuse code under the GPL's terms. If you want to discuss other arrangements or have licensing questions, feel free to email me at httpworldview@gmail.com. You are also free to draw inspiration from the ideas and methods used here, provided you respect the GPL.
It would be unfair to ask for attribution over ideas alone when this project exists thanks to the countless researchers and open-source contributors who came before me.
Thank you for checking out OpenMeters. If you think it is useful, please consider starring the repository and sharing it with others. I appreciate criticism, bug reports, and feedback, so feel free to reach out.
OpenMeters is licensed under the GNU General Public License v3.0 or later. See LICENSE for more details.
767 commits
1 commits
Rust
97.9%
WGSL
1.6%
Fast and professional audio metering/visualization for Linux.
Rust
212
768 commits
updated Sep 21, 2026
Professional, fast, and open-source audio meters for Linux.
Capture any PipeWire application or device, inspect loudness, frequency, waveform, and stereo image in one comprehensive suite.
Everything below describes behavior implemented thus far. If you have ideas for the next thing OpenMeters should do, please feel free to open an issue or pull request.
zwlr_layer_shell_v1, anchored to the top or bottom of a given
monitor.none channel traces.none channel lanes.OpenMeters requires:
glibc >=
v2.39. The release workflow builds these artifacts in Ubuntu 24.04.Normal application windows are available on both X11 and Wayland. Bar
mode additionally requires a Wayland compositor that exposes
zwlr_layer_shell_v1.
Install the openmeters-git package from the AUR:
yay -S openmeters-git
Download the latest .deb package from GitHub
Releases.
Download the latest .rpm package from GitHub
Releases.
OpenMeters is available in nixpkgs thanks to
@magnetophon and
@bitbloxhub. Add it to your nix
config with:
nix profile add nixpkgs#openmeters
Tarballs are available under tagged releases, or you can build OpenMeters from source. I cannot guarantee OpenMeters will work on every distribution, although it is designed to stay fairly distro-agnostic. If you have trouble getting it running, please open an issue and I will try to help.
Install a Rust toolchain, a C toolchain, pkg-config, libclang,
and native development packages for PipeWire, Wayland/X11,
xkbcommon, fontconfig/freetype, and the Vulkan loader/development
headers. PipeWire/SPA development headers must be from PipeWire
0.3.77 or newer. The recommended way to install Rust is
rustup. OpenMeters currently requires the
Rust version declared in Cargo.toml or newer.
Clone the repository:
git clone https://github.com/httpsworldview/openmeters/
cd openmeters
Build and run the release binary:
cargo build --release
./target/release/openmeters
Or run it directly through Cargo:
cargo run --release
See packaging/ for instructions on building Debian,
Fedora, and tarball artifacts.
| Binding | Action |
|---|---|
ctrl+shift+h | Show/hide the configuration window; while open, drag visuals to rearrange them. |
| right click on a visual | Open that visual's settings window. |
p | Pause or resume meter updates. |
q twice | Quit the application. |
ctrl+space | Pop out the hovered visual, or dock the focused pop-out. |
| Binding | Action |
|---|---|
| left click+hold | Show the crosshair and frequency/note/time tooltip; highlight the corresponding piano key in yellow. |
ctrl+scroll up/down | Zoom the frequency axis. |
middle click+drag | Pan the frequency axis. |
On first launch, all six visuals are enabled and docked in this order: spectrogram, spectrum analyzer, waveform, oscilloscope, stereometer, and loudness. Refresh follows the main display. Bar mode defaults to 100px high at the bottom edge on supported Wayland compositors; other desktops use a normal window. Saved settings, including disabled visuals, take precedence over these defaults.
Application settings are saved to
$XDG_CONFIG_HOME/openmeters/settings.json, or to:
~/.config/openmeters/settings.json
when XDG_CONFIG_HOME is unset.
settings.json is intentionally editable. GUI ranges are not hard
limits; processors normalize only the bare minimum necessary for
runtime. Unsupported keys or structurally invalid values are logged
and ignored at the narrowest practical scope.
Invalid JSON syntax is ignored and default settings are used for that run. Your configuration file will not be overwritten unless you explicitly change settings in the GUI. Window resize notifications and device discovery alone do not authorize replacing that file. Other read errors receive the same protection; a missing file can be created normally. Unknown keys are not preserved when the file is next written.
If a bug causes OpenMeters to misbehave, you can reset application
settings by deleting settings.json. Please consider reporting the
bug if you run into this.
Themes are saved as separate JSON files in
$XDG_CONFIG_HOME/openmeters/themes/, or in:
~/.config/openmeters/themes/
when XDG_CONFIG_HOME is unset. Theme files own palettes and
background color; settings.json stores the selected theme name and
non-palette module settings.
You can create and switch between themes in the Appearance section of the configuration page. Saving a theme refreshes the list of available themes, including any files that appeared in the theme directory while OpenMeters was running. The built-in theme is read-only in the UI and cannot be overwritten. Feel free to share custom themes by sharing the corresponding JSON files.
Q: Can I build upon OpenMeters or use it in a commercial application?
A: Yes, as long as you abide by the terms of the GPL. My primary focus is keeping OpenMeters free and open source, not profiting from it.
Q: Will you support Windows or macOS?
A: Maybe, but probably not. I'm a Linux user and have been for most of my life. I am not currently confident in my ability to maintain reliable support for either platform. That said, I aim to keep things modular and platform-agnostic where possible. The DSP code at the core of this project will run anywhere; the GUI, persistence, and audio backend code will not.
Q: Why is OpenMeters' FFT size about twice the value shown in MiniMeters or Wave Candy?
A: OpenMeters labels FFT/window size by the number of input samples used. MiniMeters and Wave Candy instead label the visible positive-frequency bins, which represent roughly half the FFT for real-valued audio. To match settings, use approximately twice their displayed band count (for example, 2048 in MiniMeters corresponds to 4096 in OpenMeters).
Please see CONTRIBUTING.md for guidelines on how to contribute and how to get started. No matter what you have to offer, I greatly appreciate your interest in the project. Every bit helps.
OpenMeters is GPL-3.0-or-later software. You may reuse code under the GPL's terms. If you want to discuss other arrangements or have licensing questions, feel free to email me at httpworldview@gmail.com. You are also free to draw inspiration from the ideas and methods used here, provided you respect the GPL.
It would be unfair to ask for attribution over ideas alone when this project exists thanks to the countless researchers and open-source contributors who came before me.
Thank you for checking out OpenMeters. If you think it is useful, please consider starring the repository and sharing it with others. I appreciate criticism, bug reports, and feedback, so feel free to reach out.
OpenMeters is licensed under the GNU General Public License v3.0 or later. See LICENSE for more details.
767 commits
1 commits
Rust
97.9%
WGSL
1.6%