LIBPIPEWIRE-MODULE-EXAMPLE-FILTER(7)
π libpipewire-module-example-filter(7) π
okay so bestie, this is a page from the Miscellaneous Information Manual, section 7 β the whole title-and-section situation is libpipewire-module-example-filter(7). Let's get into it π«Ά
β¨ NAME β¨
libpipewire-module-example-filter β the Example Filter, aka your lil starter pack π¦
πΈ DESCRIPTION πΈ
The example filter is genuinely the bestie-approved starting point if you wanna write a custom filter. it's giving template, it's giving blueprint, it's giving "copy me and make me yours" π
ngl though, for the real tea you gotta go read the source code. we point you there for more info, periodt. π
π MODULE NAME π
libpipewire-module-example-filter
yes bestie, the name is literally the same as the page. iconic behavior. π
π MODULE OPTIONS π
node.descriptionβ a human readable name for the filter streams. so like, the cute name instead of thefilter-PID-MODULEIDgoblin string β¨capture.props = {}β the properties you wanna pass to the input stream π§playback.props = {}β the properties you wanna pass to the output stream π
π₯ GENERAL OPTIONS π₯
These ones have well-known behavior, no mystery no cap. and the best part? most of these can go in the global configuration or on the individual streams. pick your lane, both slay π¦
remote.nameaudio.rateaudio.channelsaudio.layoutaudio.positionmedia.namenode.latencynode.descriptionnode.groupnode.link.groupnode.virtualnode.nameβ see the notes down below π if you don't specify it, it defaults tofilter-PID-MODULEID. so if you see that in your graph, that's why bestie π
π Stream only properties π
media.classnode.nameβ if you don't give it per stream, the globalnode.namegets prefixed withinput.andoutput.to generate a capture streamnode.nameand a playback streamnode.namerespectively. so cute, so automatic, so demure π
π EXAMPLE CONFIGURATION OF A VIRTUAL SOURCE π
okay here's the moment you've been waiting for β a whole virtual source setup, ready to go π drop this in ~/.config/pipewire/pipewire.conf.d/my-example-filter.conf:
# ~/.config/pipewire/pipewire.conf.d/my-example-filter.conf
context.modules = [
{ name = libpipewire-module-example-filter
args = {
node.description = "Example Filter"
capture.props = {
audio.position = [ FL FR ]
node.passive = true
}
playback.props = {
node.name = "Example Filter"
media.class = "Audio/Source"
audio.position = [ FL FR ]
}
}
}
]
and if you're feeling spicy and wanna do it straight from the CLI instead, you can load that module right up like this π§
pw-cli -m lm libpipewire-module-example-filter '{ audio.position=[FL FR] }'
aaaand that's the whole page bestie, no cap, every last detail preserved and accounted for π
this was brought to you by PipeWire version 1.6.11 β¨ β libpipew...le-filter(7), slaying in a terminal near you since forever. bye bestie, go filter something gorgeous πΈπ
π¦
π¦ where this page comes from
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- fedora 44: pipewire-libs 1.6.11-1.fc44 Β· MIT AND GPL-2.0-or-later AND BSD-2-Clause AND LGPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms