mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-04-05 17:20:36 +02:00
418 lines
9.7 KiB
Text
418 lines
9.7 KiB
Text
## The WirePlumber configuration
|
|
|
|
context.properties = {
|
|
## Properties to configure the PipeWire context and some modules
|
|
|
|
# application.name = WirePlumber
|
|
log.level = 2
|
|
wireplumber.script-engine = lua-scripting
|
|
wireplumber.export-core = true
|
|
# mem.mlock-all = false
|
|
# support.dbus = true
|
|
}
|
|
|
|
context.spa-libs = {
|
|
## PipeWire SPA Factories to load.
|
|
## Used to find spa factory names. It maps an spa factory name
|
|
## regular expression to a library name that should contain
|
|
## that factory.
|
|
##
|
|
## Syntax:
|
|
## <factory-name regex> = <library-name>
|
|
|
|
api.alsa.* = alsa/libspa-alsa
|
|
api.bluez5.* = bluez5/libspa-bluez5
|
|
api.v4l2.* = v4l2/libspa-v4l2
|
|
api.libcamera.* = libcamera/libspa-libcamera
|
|
audio.convert.* = audioconvert/libspa-audioconvert
|
|
support.* = support/libspa-support
|
|
}
|
|
|
|
context.modules = [
|
|
## PipeWire modules to load.
|
|
## If ifexists is given, the module is ignored when it is not found.
|
|
## If nofail is given, module initialization failures are ignored.
|
|
##
|
|
## Syntax:
|
|
## {
|
|
## name = <module-name>
|
|
## [ args = { <key> = <value> ... } ]
|
|
## [ flags = [ ifexists | nofail ] ]
|
|
## }
|
|
|
|
## Uses RTKit to boost the data thread priority.
|
|
{
|
|
name = libpipewire-module-rt
|
|
args = {
|
|
nice.level = -11
|
|
# rt.prio = 88
|
|
# rt.time.soft = -1
|
|
# rt.time.hard = -1
|
|
}
|
|
flags = [ ifexists, nofail ]
|
|
}
|
|
|
|
## The native communication protocol.
|
|
{ name = libpipewire-module-protocol-native }
|
|
|
|
## Allows creating nodes that run in the context of the
|
|
## client. Is used by all clients that want to provide
|
|
## data to PipeWire.
|
|
{ name = libpipewire-module-client-node }
|
|
|
|
## Allows creating devices that run in the context of the
|
|
## client. Is used by the session manager.
|
|
{ name = libpipewire-module-client-device }
|
|
|
|
## Makes a factory for wrapping nodes in an adapter with a
|
|
## converter and resampler.
|
|
{ name = libpipewire-module-adapter }
|
|
|
|
## Allows applications to create metadata objects. It creates
|
|
## a factory for Metadata objects.
|
|
{ name = libpipewire-module-metadata }
|
|
|
|
## Provides factories to make session manager objects.
|
|
{ name = libpipewire-module-session-manager }
|
|
|
|
# Provides factories to make SPA node objects.
|
|
{ name = libpipewire-module-spa-node-factory }
|
|
]
|
|
|
|
wireplumber.components = [
|
|
## WirePlumber components to load
|
|
## This main config file is only supposed to contain the common components.
|
|
## rest of them are distributed across wireplumber.conf.d/*-settings.conf
|
|
## files.
|
|
##
|
|
## Syntax:
|
|
## {
|
|
## name = <component-name>
|
|
## type = <component-type>
|
|
## [ deps = <component-dependencies> ]
|
|
## [ flags = [ ifexists | nofail ] ]
|
|
## }
|
|
|
|
## Session item factories
|
|
{
|
|
name = libwireplumber-module-si-node,
|
|
type = module
|
|
}
|
|
{
|
|
name = libwireplumber-module-si-audio-adapter,
|
|
type = module
|
|
}
|
|
{
|
|
name = libwireplumber-module-si-standard-link,
|
|
type = module
|
|
}
|
|
{
|
|
name = libwireplumber-module-si-audio-endpoint,
|
|
type = module
|
|
}
|
|
|
|
## Provide the "default" pw_metadata
|
|
{
|
|
name = libwireplumber-module-metadata,
|
|
type = module
|
|
}
|
|
|
|
## Module listening for pipewire objects to push events
|
|
{
|
|
name = libwireplumber-module-standard-event-source,
|
|
type = module
|
|
}
|
|
|
|
## Module managing the portal permissions
|
|
{
|
|
name = libwireplumber-module-portal-permissionstore,
|
|
type = module,
|
|
deps = [ access-enable-flatpak-portal ]
|
|
}
|
|
|
|
## Needed for device reservation to work
|
|
{
|
|
name = libwireplumber-module-reserve-device,
|
|
type = module,
|
|
deps = [ monitor.alsa.reserve ]
|
|
}
|
|
|
|
## Needed for logind to work
|
|
{
|
|
name = libwireplumber-module-logind,
|
|
type = module,
|
|
deps = [ monitor.bluetooth.enable-logind ],
|
|
flags = [ ifexists ]
|
|
}
|
|
|
|
## Selects appropriate default nodes and enables saving and restoring them
|
|
{
|
|
name = libwireplumber-module-default-nodes,
|
|
type = module
|
|
}
|
|
|
|
## Enables functionality to save and restore default device profiles
|
|
{
|
|
name = libwireplumber-module-default-profile,
|
|
type = module,
|
|
deps = [ device.use-persistent-storage ]
|
|
}
|
|
|
|
## Needed for MIDI monitor to work
|
|
{
|
|
name = libwireplumber-module-file-monitor-api,
|
|
type = module,
|
|
deps = [ monitor.alsa.midi.monitoring ]
|
|
}
|
|
|
|
## API to access default nodes from scripts
|
|
{
|
|
name = libwireplumber-module-default-nodes-api,
|
|
type = module
|
|
}
|
|
|
|
## API to access mixer controls, needed for volume ducking
|
|
{
|
|
name = libwireplumber-module-mixer-api,
|
|
type = module
|
|
}
|
|
|
|
## The lua scripting engine
|
|
{
|
|
name = libwireplumber-module-lua-scripting,
|
|
type = module
|
|
}
|
|
|
|
## Link nodes by stream role and device intended role
|
|
{
|
|
name = intended-roles.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Automatically suspends idle nodes after 3 seconds
|
|
{
|
|
name = suspend-node.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Script which confers pemissions on the client nodes
|
|
{
|
|
name = access/access-default.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Script which confers pemissions on the portal client nodes
|
|
{
|
|
name = access/access-portal.lua,
|
|
type = script/lua,
|
|
deps = [ access-enable-flatpak-portal ]
|
|
}
|
|
|
|
## Needed to monitor MIDI nodes
|
|
{
|
|
name = monitors/alsa-midi.lua,
|
|
type = script/lua,
|
|
deps = [ monitor.alsa.midi ]
|
|
}
|
|
|
|
## Needed to monitor devices and nodes
|
|
{
|
|
name = monitors/alsa.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Needed to monitor devices and nodes
|
|
{
|
|
name = monitors/bluez.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Needed to monitor devices and nodes
|
|
{
|
|
name = monitors/bluez-midi.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Selects appropriate profile for devices
|
|
{
|
|
name = policy-device-profile.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Selects appropriate device routes ("ports" in pulseaudio terminology)
|
|
{
|
|
name = policy-device-routes.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Needed to monitor devices and nodes
|
|
{
|
|
name = monitors/libcamera.lua,
|
|
type = script/lua,
|
|
deps = [ monitor.libcamera.enable ]
|
|
}
|
|
|
|
## Create items for nodes that appear in the graph
|
|
{
|
|
name = create-item.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Link nodes to each other to make media flow in the graph
|
|
{
|
|
name = policy-node.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## policy hooks to link nodes to each other
|
|
{
|
|
name = policy-hooks.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Create endpoints statically at startup
|
|
{
|
|
name = static-endpoints.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Link client nodes with endpoints to make media flow in the graph
|
|
{
|
|
name = policy-endpoint-client.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Enables or disables endpoint client links based on roles configuration
|
|
{
|
|
name = policy-endpoint-client-links.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Link endpoints with device nodes to make media flow in the graph
|
|
{
|
|
name = policy-endpoint-device.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Switch bluetooth profile based on media.role
|
|
{
|
|
name = policy-bluetooth.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Save and restore stream-specific properties
|
|
{
|
|
name = restore-stream.lua,
|
|
type = script/lua
|
|
}
|
|
|
|
## Needed to monitor devices and nodes
|
|
{
|
|
name = monitors/v4l2.lua,
|
|
type = script/lua
|
|
}
|
|
]
|
|
|
|
wireplumber.settings = {
|
|
## This main config file is only supposed to contain the common settings and
|
|
## rules. rest of the settings and rules are distributed across
|
|
## wireplumber.conf.d/*.conf files.
|
|
|
|
## If this is true, the settings will be read from conf file only once and for
|
|
## subsequent reboots they will be read from the state files, till the time
|
|
## the setting is set to false.
|
|
# persistent.settings = false
|
|
}
|
|
|
|
wireplumber.endpoints = {
|
|
# endpoints = {
|
|
# endpoint.capture = {
|
|
# media.class = "Audio/Source"
|
|
# role = "Capture"
|
|
# }
|
|
# endpoint.multimedia = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Multimedia"
|
|
# }
|
|
# endpoint.speech_low = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Speech-Low"
|
|
# }
|
|
# endpoint.custom_low = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Custom-Low"
|
|
# }
|
|
# endpoint.navigation = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Navigation"
|
|
# }
|
|
# endpoint.speech_high = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Speech-High"
|
|
# }
|
|
# endpoint.custom_high = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Custom-High"
|
|
# }
|
|
# endpoint.communication = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Communication"
|
|
# }
|
|
# endpoint.emergency = {
|
|
# media.class = "Audio/Sink"
|
|
# role = "Emergency"
|
|
# }
|
|
# }
|
|
|
|
# endpoints-roles = {
|
|
# Capture = {
|
|
# alias = [ "Multimedia", "Music", "Voice", "Capture" ]
|
|
# priority = 25
|
|
# action.default = "cork"
|
|
# action.capture = "mix"
|
|
# media.class = "Audio/Source"
|
|
# }
|
|
# Multimedia = {
|
|
# alias = [ "Movie" "Music" "Game" ]
|
|
# priority = 25
|
|
# action.default = "cork"
|
|
# }
|
|
# Speech-Low = {
|
|
# priority = 30
|
|
# action.default = "cork"
|
|
# action.Speech-Low = "mix"
|
|
# }
|
|
# Custom-Low = {
|
|
# priority = 35
|
|
# action.default = "cork"
|
|
# action.Custom-Low = "mix"
|
|
# }
|
|
# Navigation = {
|
|
# priority = 50
|
|
# action.default = "duck"
|
|
# action.Navigation = "mix"
|
|
# }
|
|
# Speech-High = {
|
|
# priority = 60
|
|
# action.default = "cork"
|
|
# action.Speech-High = "mix"
|
|
# }
|
|
# Custom-High = {
|
|
# priority = 65
|
|
# action.default = "cork"
|
|
# action.Custom-High = "mix"
|
|
# }
|
|
# Communication = {
|
|
# priority = 75
|
|
# action.default = "cork"
|
|
# action.Communication = "mix"
|
|
# }
|
|
# Emergency = {
|
|
# alias = [ "Alert" ]
|
|
# priority = 99
|
|
# action.default = "cork"
|
|
# action.Emergency = "mix"
|
|
# }
|
|
# }
|
|
}
|
|
|