mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-06-01 15:28:23 +02:00
* Add information about multiple instances * Document better how the lua config files work * Document how lua config files get merged from different places * Copy over additional documentation for ALSA from pw-media-session * Fix rst syntax issues
116 lines
3.2 KiB
ReStructuredText
116 lines
3.2 KiB
ReStructuredText
.. _config_policy:
|
|
|
|
Policy Configuration
|
|
====================
|
|
|
|
policy.lua.d/10-default-policy.lua
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
This file contains generic default policy properties that can be configured.
|
|
|
|
* *default_policy.policy*
|
|
|
|
This is a Lua object that contains several properties that change the
|
|
behavior of the default WirePlumber policy.
|
|
|
|
Example:
|
|
|
|
.. code-block:: lua
|
|
|
|
default_policy.policy = {
|
|
["move"] = true,
|
|
}
|
|
|
|
The above example will set the ``move`` policy property to ``true``.
|
|
|
|
The list of supported properties are:
|
|
|
|
.. code-block:: lua
|
|
|
|
["move"] = true
|
|
|
|
Moves session items when metadata ``target.node`` changes.
|
|
|
|
.. code-block:: lua
|
|
|
|
["follow"] = true
|
|
|
|
Moves session items to the default device when it has changed.
|
|
|
|
.. code-block:: lua
|
|
|
|
["audio.no-dsp"] = false
|
|
|
|
Set to ``true`` to disable channel splitting & merging on nodes and enable
|
|
passthrough of audio in the same format as the format of the device. Note that
|
|
this breaks JACK support; it is generally not recommended.
|
|
|
|
.. code-block:: lua
|
|
|
|
["duck.level"] = 0.3
|
|
|
|
How much to lower the volume of lower priority streams when ducking. Note that
|
|
this is a linear volume modifier (not cubic as in PulseAudio).
|
|
|
|
policy.lua.d/50-endpoints-config.lua
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Endpoints are objects that can group multiple clients into different groups or
|
|
roles. This is useful if a user wants to apply specific actions when a client
|
|
is connected to a particular role/endpoint. This configuration file allows
|
|
users to configure those endpoints and their actions.
|
|
|
|
* *default_policy.policy.roles*
|
|
|
|
This is a Lua array with objects defining the actions of each role.
|
|
|
|
Example:
|
|
|
|
.. code-block:: lua
|
|
|
|
default_policy.policy.roles = {
|
|
["Multimedia"] = {
|
|
["alias"] = { "Movie", "Music", "Game" },
|
|
["priority"] = 10,
|
|
["action.default"] = "mix",
|
|
}
|
|
["Notification"] = {
|
|
["priority"] = 20,
|
|
["action.default"] = "duck",
|
|
["action.Notification"] = "mix",
|
|
}
|
|
}
|
|
|
|
The above example defines actions for both ``Multimedia`` and ``Notification``
|
|
roles. Since the Notification role has more priority than the Multimedia
|
|
role, when a client connects to the Notification endpoint, it will ``duck``
|
|
the volume of all Multimedia clients. If Multiple Notification clients want
|
|
to play audio, only the Notifications audio will be mixed.
|
|
|
|
Possible values of actions are: ``mix`` (Mixes audio),
|
|
``duck`` (Mixes and lowers the audio volume) or ``cork`` (Pauses audio).
|
|
|
|
* *default_policy.policy.endpoints*
|
|
|
|
This is a Lua array with objects defining the endpoints that the user wants
|
|
to create.
|
|
|
|
Example:
|
|
|
|
.. code-block:: lua
|
|
|
|
default_policy.endpoints = {
|
|
["endpoint.multimedia"] = {
|
|
["media.class"] = "Audio/Sink",
|
|
["role"] = "Multimedia",
|
|
}
|
|
},
|
|
["endpoint.notifications"] = {
|
|
["media.class"] = "Audio/Sink",
|
|
["role"] = "Notification",
|
|
}
|
|
|
|
This example creates 2 endpoints, with names ``endpoint.multimedia`` and
|
|
``endpoint.notifications``; and assigned roles ``Multimedia`` and ``Notification``
|
|
respectively. Both endpoints have ``Audio/Sink`` media class, and so are only
|
|
used for playback.
|