Adding lots of cool stuff to dotfiles
This commit is contained in:
53
.config/wireplumber/scripts/access/access-default.lua
Normal file
53
.config/wireplumber/scripts/access/access-default.lua
Normal file
@@ -0,0 +1,53 @@
|
||||
-- WirePlumber
|
||||
--
|
||||
-- Copyright © 2021 Collabora Ltd.
|
||||
-- @author George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
--
|
||||
-- SPDX-License-Identifier: MIT
|
||||
|
||||
local config = ... or {}
|
||||
|
||||
-- preprocess rules and create Interest objects
|
||||
for _, r in ipairs(config.rules or {}) do
|
||||
r.interests = {}
|
||||
for _, i in ipairs(r.matches) do
|
||||
local interest_desc = { type = "properties" }
|
||||
for _, c in ipairs(i) do
|
||||
c.type = "pw"
|
||||
table.insert(interest_desc, Constraint(c))
|
||||
end
|
||||
local interest = Interest(interest_desc)
|
||||
table.insert(r.interests, interest)
|
||||
end
|
||||
r.matches = nil
|
||||
end
|
||||
|
||||
function rulesGetDefaultPermissions(properties)
|
||||
for _, r in ipairs(config.rules or {}) do
|
||||
if r.default_permissions then
|
||||
for _, interest in ipairs(r.interests) do
|
||||
if interest:matches(properties) then
|
||||
return r.default_permissions
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
clients_om = ObjectManager {
|
||||
Interest { type = "client" }
|
||||
}
|
||||
|
||||
clients_om:connect("object-added", function (om, client)
|
||||
local id = client["bound-id"]
|
||||
local properties = client["properties"]
|
||||
|
||||
local perms = rulesGetDefaultPermissions(properties)
|
||||
|
||||
if perms then
|
||||
Log.info(client, "Granting permissions to client " .. id .. ": " .. perms)
|
||||
client:update_permissions { ["any"] = perms }
|
||||
end
|
||||
end)
|
||||
|
||||
clients_om:activate()
|
||||
Reference in New Issue
Block a user