Go to file
columbarius 84282e9b5f screencast: fixate modifier from PipeWire format negotiation result
This implements the modifier fixation procedure. The producer of a
stream has to ensure that it can create a buffer with the negotiated
properties. To do that we will take the result of the intersection of
supported modifiers by PipeWire and select the "best" modifier from that
list.

To do this we do the following allocations and fixate on the
modifier of the created buffer should the allocation suceed.
* Try to allocate a buffer with explicit modifiers using the list
  provided by PipeWire
* Walk the list of modifiers and do single allocations for implicit and
  linear modifiers using the old api.

If none of the allocations above succeed we fall back to shm buffers.
This is implemented in the next commit.

If an allocation was successfull we fixate the modifier with
fixate_format().
This function creates an EnumFormat like build_format, but will only
announce support for a single modifier.
It is used to finish the negotiation process by announcing it together
with EnumFormats of our full supported formats.
2022-04-24 21:46:39 +02:00
.builds builds: add gbm and libdrm to the build environment 2022-04-10 13:38:01 +02:00
contrib contrib/systemd: add ConditionEnvironment 2021-05-03 18:17:29 -04:00
include screencast: support multiplane buffers with xdpw_buffer 2022-04-24 21:46:39 +02:00
protocols protocols: add wayland protocol linux-dmabuf-unstable-v1 2022-04-10 13:38:01 +02:00
src screencast: fixate modifier from PipeWire format negotiation result 2022-04-24 21:46:39 +02:00
.editorconfig Add yml exception to editorconfig 2020-03-13 21:01:32 +01:00
.gitignore Fix CI with libpipewire02, libdrm. Remove png.h unused import. Cleanup style. 2020-03-13 21:01:32 +01:00
CONTRIBUTING.md Fix link to trigger-screen-shot.py 2021-03-04 20:42:40 +01:00
LICENSE Initial commit 2018-12-12 11:46:19 +01:00
README.md readme: update IRC channel 2021-05-26 08:35:38 +02:00
meson.build screencast: create gbm device 2022-04-10 13:38:01 +02:00
meson_options.txt Add man page 2021-03-15 18:09:32 +01:00
org.freedesktop.impl.portal.desktop.wlr.service.in Add D-Bus and systemd service files 2020-04-10 10:48:41 +02:00
wlr.portal Add wlroots to portal manifest UseIn list 2021-04-23 16:51:07 +02:00
xdg-desktop-portal-wlr.5.scd screencast: add option to force implicit modifier to be linear 2022-04-10 13:38:01 +02:00

README.md

xdg-desktop-portal-wlr

builds.sr.ht status

xdg-desktop-portal backend for wlroots

Building

meson build
ninja -C build

Installing

From Source

ninja -C build install

Distro Packages

Packaging status

Running

Make sure XDG_CURRENT_DESKTOP is set. Make sure WAYLAND_DISPLAY and XDG_CURRENT_DESKTOP are imported into D-Bus. If you're running Sway, this can be added to your config file:

exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway

When correctly installed, xdg-desktop-portal should automatically invoke xdg-desktop-portal-wlr when needed.

Configuration

See man 5 xdg-desktop-portal-wlr.

Manual startup

At the moment, some command line flags are available for development and testing. If you need to use one of these flags, you can start an instance of xdpw using the following command:

xdg-desktop-portal-wlr -r [OPTION...]

To list the available options, you can run xdg-desktop-portal-wlr --help.

FAQ

Check out or FAQ for answers to commonly asked questions.

Please see the screencast compatibility guide for more information on compatible applications and how to get them working.

If you have a question or problem that is not mentioned in those documents, please open an issue or come chat with us in #sway on Libera Chat.

Contributing

If you're interested in testing or development, check out CONTRIBUTING.md for more information.

License

MIT