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:

    default_policy.policy = {
      ["move"] = true,
    }
    

    The above example will set the move policy property to true.

    The list of supported properties are:

    ["move"] = true
    

    Moves session items when metadata target.node changes.

    ["follow"] = true
    

    Moves session items to the default device when it has changed.

    ["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.

    ["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:

    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:

    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.