Custom Scripts

The locations where WirePlumber searches for scripts is explained in Location of scripts.

Scripts are not loaded automatically; a component muse be defined for them, and this component must be included in a profile. See Components & Profiles.

Full example

Let’s assume that ~/.local/share/wireplumber/scripts/90-hello-world.lua contains the following script:

log = Log.open_topic("hello-world")
log.info("Hello world")

In order for it to run, we’ll define a component and include it in the default profile by including the following configuration (for example, in ~/.config/wireplumber/wireplumber.conf.d/90-hello-world.conf):

wireplumber.components = [
  {
    name = "90-hello-world.lua", type = script/lua
    provides = hello-world
  }
]

wireplumber.profiles = {
  main = {
    hello-world = required
  }
}