PipeWire: Media Session Module: Access Portal

PipeWire 0.4.1

Media Session Module: Access Portal

The Access Portal module manages media roles for clients started through a portal (see page_module_portal).

Clients must have a PW_KEY_ACCESS or PW_KEY_CLIENT_ACCESS property value of `"portal"`, all other clients are ignored. The portal is expected to assign `"pipewire.access.portal.media_roles"` to this client, these roles are checked against the org.freedesktop.impl.portal.PermissionStore. Where permitted, the resulting client media role becomes the permitted set of roles.

Note
  Currently only the "Camera" media role is supported.

The Permission Store entry table used by this module is `"devices"`, the resource ID is `"camera"`.

## Module Properties

This module requires the following properties on the client object:

- `"pipewire.access.portal.is_portal"`: set to `"true"` for the portal client itself, empty or `"false"` otherwise
- `"pipewire.access.portal.app_id"`: the application ID of the client
- `"pipewire.access.portal.media_roles"` the media roles that should be assigned to this client (if permitted by the PermissionStore).

The above properties must be set by the portal initiating the client connection.

See e.g. the xdg-desktop-portal for an implementation that sets the above properties. It creates multiple connections to pipewire, one with `is_portal` set to true for the portal itself and one connection per application request to open the camera. The latter have `app_id` and `media_roles` set accordingly.