Commit graph

112 commits

Author SHA1 Message Date
Simon Ser
a741f0ac5d screencopy: deprecate in favor of ext-image-copy-capture-v1 2025-08-16 19:30:16 +02:00
rewine
92feabdfd7 wlr_data_control_manager_v1: deprecate in favor of ext-data-control-v1
ext-data-control-v1 is a straight port from wlr-data-control-unstable-v1 to ext
2025-07-29 21:23:43 +08:00
Simon Ser
a5028afbe4 output-management: refer to wl_output instead of xdg-output
wl_output now has name and description events, so let's use that
instead of xdg-output.

Let's also not assume the compositor will expose all enabled outputs
as wl_outputs.
2025-07-02 07:20:08 +00:00
Simon Ser
0d74fc2dc5 output-management: relax wl_output match constraint for make/model
This is too restrictive: the compositor might not want to advertise
the real make/model in wl_output, because that API is not privileged.

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5045
2025-06-05 17:30:04 +02:00
Ananta Krishnan
2ec67ebd26 wlr-screencopy-unstable-v1: minor fixes to descriptions 2025-04-03 11:00:12 +00:00
Roman Gilg
ffb89ac790 output-management-v1: document static head data only being sent once
The physical size, make, model and serial number data are static information
and should not change over the lifetime of a wlr_output_head. Add this
constraint to the protocol text so implementations can be simplified.
2024-10-08 20:03:48 +00:00
Marco Martin
2b8d43325b layer-shell: add set_exclusive_edge 2024-01-26 09:55:10 +00:00
Isaac Freund
4264185db3
output-management: allow setting adaptive sync 2022-09-05 11:49:04 +02:00
Simon Ser
8cdeaac749 output-management: add release requests for head and mode
Closes: https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/issues/62
2022-06-30 14:43:12 +02:00
Simon Ser
4aa366e3dd wlr-input-inhibitor-unstable-v1: deprecate in favor of ext-session-lock-v1
This protocol was only ever used for screen lockers, and we now have
a much more robust protocol extension for these.
2022-06-16 17:06:21 +02:00
Isaac Freund
55b448f195
build: add missing protocols to Makefile 2022-06-08 19:43:00 +02:00
Simon Ser
07587c61c4 build: pass filenames to check.sh
This ensures in `make check` that $(unstable_protocols) is not
broken.
2022-06-08 17:38:46 +00:00
Simon Ser
368c9f43cf build: fix wlr-output-power-management filename
Closes: https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/issues/115
2022-06-08 17:38:46 +00:00
Simon Ser
9963f49152 ci: add .gitlab-ci.yml
This allows the builds.sr.ht bridge to work correctly with forks.
2022-06-01 07:45:21 +00:00
Tadeo Kondrak
0c7437e2b6 output-management: Annotate destructor events
See https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/82.
2021-12-29 11:41:26 +00:00
Tadeo Kondrak
005d69d048 foreign-toplevel-management: Annotate destructor events
See https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/82.
2021-12-29 11:41:26 +00:00
Simon Ser
d998ee6fc6 s/GitHub/GitLab/ 2021-11-01 11:34:38 +01:00
Daniel Kondor
d1598e8224 layer-shell: add keyboard_interactivity.on_demand
Currently only background and bottom layers can have surfaces with
normal focus semantics. Allow top and overlay layers to have these
semantics too (instead of exclusive).

Closes: https://github.com/swaywm/wlr-protocols/issues/32
2021-01-12 20:13:38 +01:00
Daniel Kondor
1216a503d3
layer-shell: introduce keyboard_interactivity enum
Make it clearer what the two possible modes are, and expose enum values
instead of requiring clients to use 0 or 1.

Also clarify that compositors aren't required to give focus if keyboard
interactivity is exclusive.
2021-01-06 17:29:15 +01:00
Daniel Kondor
260ac62f9f
layer-shell: add invalid_keyboard_interactivity error 2021-01-06 14:16:44 +01:00
Daniel Kondor
1591a63b18
layer-shell: fix typo 2021-01-06 14:15:05 +01:00
Sebastian Krzyszkowiak
992841c2aa foreign-toplevel-management: Report the surface's parent
Some window switchers, like mobile ones, may want to skip or group
dialogs and other child windows on their window lists. Right now
the only way to group toplevels is to use app_id, which will end
up grouping too much in case of multiple toplevels with separate
documents. Reporting on the toplevel's parent makes it easy to
distinguish separate window stacks and act accordingly.
2020-10-18 17:12:55 +02:00
Roman Gilg
50f3a8d3c8 output-management-v1: add head identifying events
The following information through separate events are added:
- make
- model
- serial_number

This should allow clients to identify a display over different sessions and
load configuration data back.

A note is added that the description should be preferred when representing a
display in UI to users but as a short form for example the model could be used
in this case of course too.
2020-09-04 21:19:55 +02:00
Vlad Zahorodnii
95b627f251 layer-shell: Require an initial commit
Currently, the compositor doesn't have enough information to decide if a
given unmapped layer surface can be rearranged or rather configured.

In order to address the ambiguity, this change adjusts the protocol spec
saying that every client must perform an initial commit without a buffer
attached after creating and setting up a layer surface.

If the compositor knows that the initial state for a specified surface
has not been committed yet, it can skip such a surface when re-arranging
layer shell clients.
2020-08-26 17:34:32 +02:00
Simon Ser
16a28885bc Add README
Closes: https://github.com/swaywm/wlr-protocols/issues/88
2020-06-30 14:14:02 -06:00
Isaac Freund
23490a0479 layer-shell: add destroy request 2020-06-30 13:33:18 +02:00
Andri Yngvason
8b96da0afb screencopy: Extend protocol to allow linux-dmabuf 2020-06-08 20:50:02 +02:00
Martin Michlmayr
9b9479f9a3 Fix typo
Fixes #79
2020-06-04 09:58:21 +02:00
Simon Ser
06062c6816 screencopy: add missing wl_shm.format enum attribute 2020-05-26 20:00:21 +02:00
Martin Michlmayr
4a7a0494bd Fix typos 2020-05-17 14:29:08 +02:00
Guido Günther
55cdefe663 Add output power management protocol
This specifies how to control power management modes of outputs.

Closes: #56
2020-02-20 16:24:07 +01:00
Andri Yngvason
c11408942e virtual-pointer: Add request for mapping to specific output 2020-02-10 21:01:07 +01:00
Andri Yngvason
f80a44fa9b virtual-pointer: Align with wlroots 2020-02-10 21:01:07 +01:00
Nikita Tsukanov
67abc798b0 Properly reference zwlr_layer_shell_v1.layer
Referencing enums from other interfaces without interface name seems to be invalid.
2020-01-15 23:06:25 +01:00
Josef Gajdusek
571766f797 Add wlr-virtual-pointer-unstable-v1 2019-12-31 10:29:36 +01:00
Jason
29d4a59df8 Amend typo in protocol 2019-11-23 10:34:01 -05:00
Andri Yngvason
35b82d47eb screencopy: Add request and event for coarse damage reporting 2019-10-22 10:41:09 -04:00
Timidger
98efe0bc24 layer_shell: set layer of existing surface 2019-10-16 16:40:19 +03:00
William Wold
59497d9379 number of [coordinates] -> distance from the edge 2019-07-05 11:33:49 -04:00
William Wold
895f310f64 Clearify under what conditions the exclusive zone has an effect 2019-07-05 11:33:49 -04:00
Ilia Bozhinov
54579f72b8 foreign-toplevel-management: add support for fullscreening toplevels
This can be used for fullscreening an app from a taskbar, and
potentially also for panels to autohide themselves in case a
fullscreen toplevel appears.
2019-04-26 20:45:25 +03:00
emersion
d278d20905 Address @dcz-purism's comments 2019-03-16 09:53:09 -06:00
emersion
125b006f28 Remove arbitrary modes 2019-03-16 09:53:09 -06:00
emersion
6c576d109d Introduce custom modes 2019-03-16 09:53:09 -06:00
emersion
c2d41a8654 Address @ddevault comments 2019-03-16 09:53:09 -06:00
emersion
7981765515 All heads must be either enabled or disabled 2019-03-16 09:53:09 -06:00
emersion
4361785c72 Add wlr-output-management-unstable-v1
This commit adds a new output management protocol. It can be used to get the
current output configuration and apply a new one. It's based on the GNOME D-Bus
API [1] and the KDE protocol [2] [3].

Goals:

* High-level API, not a copy of KMS
* Protect against races wrt. hotplugging
* Extensible via backwards-compatible changes
* Atomic (both when reading current config and when applying a new one)

Features:

* Read all outputs including disabled ones
  * Identification (name, description), available modes, physical size
  * Current mode, enabled/disabled
  * Position, scale, transform
* Write
  * Modeset, enable/disable
  * Position, scale, transform

Non-features (ie. features in GNOME or KDE excluded from this protocol):

* No DPMS (left out for another protocol because it can operate on wl_output)
* No gamma ramps (left out for another protocol, we already have one)
* Cannot set the primary logical monitor and the presentation monitor (should be
  a separate protocol, could use wl_output)

Available outputs and their current configuration are advertised when the client
binds to the manager as "heads" (a head is an enabled or disabled output).

Clients can create a configuration object, add some outputs to configure and
apply the new state.

The GNOME protocol has a concept of "logical monitor": it's a region of the
screen you can assign physical monitors to. You can modeset and enable/disable
physical monitors while you can position, scale and transform logical monitors.
This nicely splits physical properties and logical properties. I've tried to
design a protocol with a similar concept [4], but it turned out being pretty
complicated since you need to have at least two extra objects (one to read the
current logical monitors, one to configure them). I've decided against this
approach for now.

TODO:

* Custom modes
* Output cloning with different resolutions or underscan
* Should transform & scale be per slot or per output device?
* Check all of this makes sense for non-KMS outputs?
* Make sure a compositor can offload everything to a helper client (ie. it
  doesn't apply an initial default modeset on hotplug)
* Should some features be optional?
* Better wording
* Should zero modes mean the output doesn't support modes? What to do if an EDID
  is malformed and returns zero modes?

Possible future features:

* Modes aspect ratio and interlaced modes
* Underscanning? (needs investigation)
* is-builtin property for heads? (should this be in the compositor?)
* Expose suggested panel orientation and tiling data?
* Variable refresh rate? (needs investigation)

References:

[1]: https://gitlab.gnome.org/GNOME/mutter/blob/master/src/org.gnome.Mutter.DisplayConfig.xml#L292
[2]: https://github.com/KDE/kwayland/blob/master/src/client/protocols/outputdevice.xml
[3]: https://github.com/KDE/kwayland/blob/master/src/client/protocols/output-management.xml
[4]: https://paste.sr.ht/%7Eemersion/8727ea50437fff3927c81c40c0ecc9c9885817ef
2019-03-16 09:53:09 -06:00
Drew DeVault
4dde2728f1
Merge pull request #34 from YaLTeR/data-control-primary
Support primary selection in data-control
2019-02-15 15:24:26 +01:00
Ivan Molodetskikh
151664b67a
Make using a data source twice a protocol error 2019-02-15 12:38:59 +03:00
Ivan Molodetskikh
06b41b7ff4
Clarify that data sources can only be used once 2019-02-15 12:38:58 +03:00