/usr/share/wireplumber/scripts/device
NameSizeModeActions
apply-profile.lua18240644editdlrm
apply-routes.lua34870644editdlrm
automute-alsa-routes.lua72550644editdlrm
autoswitch-bluetooth-profile.lua153260644editdlrm
find-best-profile.lua22680644editdlrm
find-best-routes.lua25500644editdlrm
find-preferred-profile.lua21400644editdlrm
find-voice-call-profile.lua21700644editdlrm
select-profile.lua7200644editdlrm
select-routes.lua50210644editdlrm
state-profile.lua42090644editdlrm
state-routes.lua118890644editdlrm
Edit: /usr/share/wireplumber/scripts/device/apply-profile.lua (1824B)
-- WirePlumber -- -- Copyright © 2022 Collabora Ltd. -- -- SPDX-License-Identifier: MIT -- apply the selected profile to the device cutils = require ("common-utils") log = Log.open_topic ("s-device") AsyncEventHook { name = "device/apply-profile", after = { "device/find-calling-profile", "device/find-stored-profile", "device/find-preferred-profile", "device/find-best-profile" }, interests = { EventInterest { Constraint { "event.type", "=", "select-profile" }, }, }, steps = { start = { next = "none", execute = function (event, transition) local device = event:get_subject () local profile = event:get_data ("selected-profile") local dev_name = device.properties ["device.name"] or "" if not profile then log:info (device, "No profile found to set on " .. dev_name) transition:advance () return end for p in device:iterate_params ("Profile") do local active_profile = cutils.parseParam (p, "Profile") if active_profile.index == tonumber(profile.index) then log:info (device, "Profile " .. profile.name .. " is already set on " .. dev_name) transition:advance () return end end local param = Pod.Object { "Spa:Pod:Object:Param:Profile", "Profile", index = tonumber(profile.index), } log:info (device, "Setting profile " .. profile.name .. " on " .. dev_name) device:set_param ("Profile", param) -- FIXME: add cancellability -- sync on the pipewire connection to ensure that the param -- has been configured on the remote device object Core.sync (function () transition:advance () end) end }, } }:register()