LIBPIPEWIRE-MODULE-ACCESS(7)
π libpipewire-module-access β the access module (from the Miscellaneous Information Manual, bestie) π
okay so real talk, this one lives in the Miscellaneous Information Manual and it's the bouncer at the club that is your PipeWire graph. let's get into it π
β¨ NAME β¨
libpipewire-module-access β Access. that's it, that's the name, short and iconic π
π¦ DESCRIPTION π¦
so the access module does access checks on clients. that's the whole vibe.
and here's the thing β the access check is only performed once per client. once it's done, every check after that just returns the same resolution. no reruns, no sequels, periodt. β¨
the permissions that get assigned to a client are configured as arguments to this module (scroll down, babes, it's all there π). anything beyond unrestricted access gets delegated to an external agent β usually the session manager. like, the module handles the basics and the session manager is the manager-manager. iykyk.
this module sets pipewire.access like so:
- If the
access.legacymodule option is not enabled:- the value defined for the socket in the
access.socketmodule option, or"default"if no value is defined.
- the value defined for the socket in the
- If
access.legacyis enabled, the value is:"flatpak": if the client is a Flatpak client"unrestricted": if thepipewire.client.accessclient property is set to"allowed"- the value of the
pipewire.client.accessclient property, if set "unrestricted": otherwise
if the resulting pipewire.access value ends up being "unrestricted", this module gives the client ALL the permissions to access ALL the resources. main character energy, truly. otherwise? the client is forced to wait π« β it sits there until an external actor, like the session manager, updates the client permissions. no queue jumping, bestie.
for connections coming from applications running inside Flatpak, and not mediated by other clients (eg. portal or pipewire-pulse), the pipewire.access.portal.app_id property is set to the Flatpak application ID, if found. plus, pipewire.sec.flatpak is set to true. cute little receipts for the flatpak girlies πΈ
π MODULE NAME π
libpipewire-module-access
π MODULE OPTIONS π
options specific to the behavior of this module (yes, this is the girlboss section):
access.socket = { "socket-name" = "access-value", ... }β socket-specific access permissions. it has the default value{ "CORENAME-manager": "unrestricted" }whereCORENAMEis the name of the PipeWire core, usuallypipewire-0. β¨access.legacy = trueβ enables backward-compatible access mode. cannot be enabled when using socket-based permissions. ifaccess.socketis not specified, it has the default valuetrue, otherwisefalse.
Warning π¨ the legacy mode is deprecated. the default value is subject to change and the legacy mode may be removed in future PipeWire releases. like, it's on notice fr fr. π
π GENERAL OPTIONS π
options with well-known behavior:
pipewire.accesspipewire.client.access
π CONFIG OVERRIDE π
you can add a module.access.args config section to override the module arguments. yes queen, you get to rewrite the rules π
# ~/.config/pipewire/pipewire.conf.d/my-access-args.conf
module.access.args = {
access.socket = {
pipewire-0 = "default",
pipewire-0-manager = "unrestricted",
}
}
π₯ EXAMPLE CONFIGURATION π₯
context.modules = [
{ name = libpipewire-module-access
args = {
# Use separate socket for session manager applications,
# and pipewire-0 for usual applications.
access.socket = {
pipewire-0 = "default",
pipewire-0-manager = "unrestricted",
}
}
}
]
π¦ See also π¦
pw_resource_errorpw_impl_client_update_permissions
aaand that's the whole page bestie, you ate it ππ this one's from PipeWire 1.6.11 β okay love you, bye, go secure some clients responsibly β¨π«Άπ§
π¦ 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