Skip to content

Support XDG Desktop Portal / Pipewire screencasting #16

@Ferdi265

Description

@Ferdi265

This is the "standard" screencasting method for wayland. It's less convenient than the two sway-specific protocols in that you cannot specify the monitor or region directly, but it is the only method that will work on all compositors.

Tasks related to less direct selection of capture targets:

  • allow specifying no monitor if xdg-portal backend is chosen
  • research how region selection could work with xdg-portal
  • allow selecting a window to capture if supported by the portal implementation

Implementation Tasks:

  • Add DBus library (sd-bus / basu)
  • Add Screencast portal client code
  • add libpipewire
  • add PipeWire client code for creating a stream
  • implement PipeWire format negotiation
    • partially implemented, advertised formats are no longer hardcoded, but the number of advertised formats still is hardcoded due to issues with spa_pod_builder
  • add dmabuf code for taking stream frames and passing them to EGL
    • code for dmabuf is there, basic PoC works
  • add SHM code for taking screen frames and passing them to EGL (as fallback)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions