wireplumber/src/config/wireplumber.conf

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"
# }
# }
}