Settings
The Settings API gives scripts access to WirePlumber's runtime settings.
Unlike static configuration, settings can be changed while WirePlumber is
running — from wpctl settings, or by any client writing to the
sm-settings metadata — and scripts can subscribe to be notified when they
change.
Every setting must be declared in the wireplumber.settings.schema section
of the configuration, which defines its type, default value and (for numbers)
its valid range. See Well-known settings for the list of settings that ship
with WirePlumber and Modifying configuration for how to change
them.
This binds the WpSettings C API. All the functions are
static; the underlying WpSettings object is looked up automatically.
Reading settings
- Settings.get(name)
Binds
wp_settings_get()Returns the current value of a setting as raw JSON. The typed accessors below are usually more convenient.
- Parameters:
name (string) -- the name of the setting
- Returns:
the value of the setting, or nil if it does not exist
- Return type:
Json, see Json
- Settings.get_boolean(name)
Returns the value of a boolean setting. If the setting does not exist or is not a boolean, false is returned.
- Parameters:
name (string) -- the name of the setting
- Returns:
the value of the setting
- Return type:
boolean
- Settings.get_int(name)
Returns the value of an integer setting, or 0 if it does not exist or is not an integer.
- Parameters:
name (string) -- the name of the setting
- Returns:
the value of the setting
- Return type:
integer
- Settings.get_float(name)
Returns the value of a float setting, or 0 if it does not exist or is not a float.
- Parameters:
name (string) -- the name of the setting
- Returns:
the value of the setting
- Return type:
number
- Settings.get_string(name)
Returns the value of a string setting, or nil if it does not exist or is not a string.
- Parameters:
name (string) -- the name of the setting
- Returns:
the value of the setting
- Return type:
string
- Settings.get_array(name)
Returns the value of an array setting as a Lua table. If the setting does not exist or is not an array, an empty table is returned.
- Parameters:
name (string) -- the name of the setting
- Returns:
the value of the setting
- Return type:
table
- Settings.get_object(name)
Returns the value of a JSON object setting as a Lua table. If the setting does not exist or is not an object, an empty table is returned.
- Parameters:
name (string) -- the name of the setting
- Returns:
the value of the setting
- Return type:
table
- Settings.get_saved(name)
Binds
wp_settings_get_saved()Returns the value of the setting as it was persisted to the state file, if it has been saved. This may differ from the current value.
- Parameters:
name (string) -- the name of the setting
- Returns:
the saved value of the setting, or nil if it has not been saved
- Return type:
Json, see Json
- Settings.iterate()
Binds
wp_settings_new_iterator()Iterates over all the settings. Intended to be used in a
forloop; the iteration yields the setting name and its value on each step.for name, value in Settings.iterate () do log:info (name .. " = " .. value:to_string ()) end
Changing settings
Note
Scripts do not normally need to change settings; this is what
wpctl settings and other clients do. These functions exist for scripts
that implement such a control interface.
- Settings.set(name, value)
Binds
wp_settings_set()Changes the current value of a setting. The change is not persistent unless
Settings.save()is also called.- Parameters:
name (string) -- the name of the setting
value (Json) -- the new value
- Returns:
true if the setting was changed, false otherwise
- Return type:
boolean
- Settings.reset(name)
Binds
wp_settings_reset()Resets a setting to the default value declared in the schema.
- Parameters:
name (string) -- the name of the setting
- Returns:
true on success, false otherwise
- Return type:
boolean
- Settings.save(name)
Binds
wp_settings_save()Persists the current value of a setting, so that it is restored the next time WirePlumber starts.
- Parameters:
name (string) -- the name of the setting
- Returns:
true on success, false otherwise
- Return type:
boolean
- Settings.delete(name)
Binds
wp_settings_delete()Deletes the persisted value of a setting. The current value is not changed.
- Parameters:
name (string) -- the name of the setting
- Returns:
true on success, false otherwise
- Return type:
boolean
- Settings.reset_all()
Binds
wp_settings_reset_all()Resets all settings to their default values.
- Settings.save_all()
Binds
wp_settings_save_all()Persists the current value of all settings.
- Settings.delete_all()
Binds
wp_settings_delete_all()Deletes the persisted values of all settings.
Reacting to changes
- Settings.subscribe(pattern, callback)
Binds
wp_settings_subscribe_closure()Calls callback whenever a setting whose name matches pattern changes.
This is the idiomatic way for a script to respond to a setting: read the value once at load time, and then again from the callback. Scripts commonly use this to register or remove an event hook, so that the hook only exists while the setting is enabled — see Enabling and disabling hooks at runtime.
Settings.subscribe ("linking.allow-moving-streams", function () handleMoveSetting (Settings.get_boolean ("linking.allow-moving-streams")) end)
- Parameters:
pattern (string) -- a glob-style pattern matching setting names; use
"*"to subscribe to all settingscallback (function) -- the function to call when a matching setting changes
- Returns:
an id that can be passed to
Settings.unsubscribe()- Return type:
integer
- Settings.unsubscribe(id)
Binds
wp_settings_unsubscribe()Cancels a subscription previously created with
Settings.subscribe().- Parameters:
id (integer) -- the subscription id
- Returns:
true if the subscription was found and removed
- Return type:
boolean