Commit graph

457 commits

Author SHA1 Message Date
Xaver Hugl
dac6393216 staging: add ext-background-effect-v1
This protocol allows the client to specify a region behind the surface that should
be blurred, with the intention to improve the visuals of for example panels or
terminals.

This protocol is roughly based on the org_kde_kwin_blur protocol, which has been
in use since 2015. The protocol is made more generically though, so that other
related effects can be added in the future, like for example contrast improvements.

Signed-off-by: Xaver Hugl <xaver.hugl@kde.org>
2025-05-26 15:00:56 +02:00
dcz
73b6115799 experimental/input-method: Implement only text-input counterparts
This change strips down the protocol to functionality that corresponds
to text-input-v3, is already useful, typically implemented in the wild
(squeekboard), and well-understood.

Dificult to implement well functionality like keyboard grabs is removed
to find a better solution without stopping the development of the basic
functionality.

Signed-off-by: Dorota Czaplejewicz
2025-05-22 11:00:54 +02:00
dcz
8d1ccbdebe experimental/input-method: Rename to xx_input_method_v2
This is a separate commit so that it's clear the base for this protocol
was just a copy with no changes.

It also includes the protocol in the build system.

Signed-off-by: Dorota Czaplejewicz
2025-05-22 11:00:54 +02:00
dcz
4da04536e8 Start an input-method protocol
This commit introduces an experimental input-method protocol as an exact
copy of the fle describing the unofficial zwp_input_method_v2 from
squeekboard.

It's also supported by wlroots and smithay.

This protocol is the counterpart to text-input-v3. It gives the
compositor a standard way to outsource the handling of the input method.

Signed-off-by: Dorota Czaplejewicz
2025-05-22 11:00:54 +02:00
Jonas Ådahl
eda9bb4651 experimental: Add xx-session-management-v1
This is identical to the experimental version implemented by kwin and
mutter.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-05-05 12:42:16 +02:00
Jonas Ådahl
c446847b7f build: Add 'experimental' protocols
These protocols are not installed; users need to access these files via
methods other than released tarballs, for example via a meson subproject.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-05-05 12:42:16 +02:00
Jonas Ådahl
810f1adaf3 build: Bump version to 1.44
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-04-23 15:57:30 +02:00
zorowk
f564b2312b color-representation-v1: correct 'RSMPTE' to 'SMPTE' in coefficients enum
Signed-off-by: zorowk pengwenhao@uniontech.com
2025-04-23 15:25:47 +08:00
Sebastian Wick
27107e1ba1 staging: add color-representation protocol
This new protocol aims to let clients define the remaining bits of the color
encoding they are using in their buffers.

In particular, this lets clients define the how the alpha has been encoded and
how conversions from YCbCr to RGB take place.

Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
Co-authored-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Co-authored-by: Robert Mader <robert.mader@collabora.com>
Co-authored-by: Sebastian Wick <sebastian.wick@redhat.com>
Co-authored-by: Simon Ser <contact@emersion.fr>
Co-authored-by: Xaver Hugl <xaver.hugl@kde.org>
2025-04-22 12:49:05 +02:00
Jonas Ådahl
4313a51a17 build: Bump version to 1.43
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-04-08 10:09:10 +02:00
Xaver Hugl
723270ad4a staging: add toplevel tag protocol
The window id protocol allows clients to set a tag for toplevels, which
the compositor can use to identify them even after the application
has been restarted. This persistent identification can be used by the
compositor to restore properties like position, size, "always on top",
and it can also be used for allowing users to create rules that change
compositor behavior for specific windows.

Signed-off-by: Xaver Hugl <xaver.hugl@kde.org>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2025-04-02 16:16:43 +02:00
Xaver Hugl
7636151e4a meson: sort protocols alphabetically
Signed-off-by: Xaver Hugl <xaver.hugl@kde.org>
2025-04-02 16:16:24 +02:00
Jonas Ådahl
86750c99ed xdg-shell: Add edge constraints
An edge constraint is an complementery state to the tiled state, meaning
that it's not only tiled, but constrained in a way that it can't resize
in that direction.

This typically means that the constrained edge is tiled against a
monitor edge. An example configuration is two windows tiled next to each
other on a single monitor. Together they cover the whole work area.

The left window would have the following tiled and edge constraint
state:

  [ tiled_top, tiled_right, tiled_bottom, tiled_left,
    constrained_top, constrained_bottom, constrained_left ]

while the right window would have the following:

  [ tiled_top, tiled_right, tiled_bottom, tiled_left,
    constrained_top, constrained_bottom, constrained_right ]

This aims to replace and deprecate the `gtk_surface1.configure_edges`
event and the `gtk_surface1.edge_constraint` enum.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-03-25 09:41:38 +00:00
Simon Ser
00a5b23bfe color-management-v1: fix typo in feature.windows_scrgb
The request is named create_windows_scrgb.

Signed-off-by: Simon Ser <contact@emersion.fr>
2025-03-24 08:57:51 +00:00
Jonas Ådahl
a8d2201f0b build: Bump version to 1.42
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-03-24 09:37:50 +01:00
Peter Hutterer
8d0a52298b tablet: add support for relative dials
Some tablets provide one or more rotary controls (see e.g. the Huion
Inspiroy Dial 2) that provide delta information effectively equivalent
to a mouse wheel. Expose those in the same way as the strip or ring
controls, with the event matching the wl_pointer.axis_v120 approach.

Like a typical mouse wheel we do not expect there to be a source
information, so this is left out of the interface.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2025-03-19 20:52:18 +10:00
Peter Hutterer
96c8caa329 tablet: add a bustype event to the initial burst of tablet events
Just VID/PID is not enough, we need the bustype too. And since we now
have that event remove the mention of USB from zwp_tablet_v2.id.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2025-03-19 20:52:17 +10:00
Peter Hutterer
23bfdb50df tablet: bump the tablet protocol version
Unfortunately all the objects depend on each other so any change in any
requires bumping all versions.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2025-03-19 20:48:45 +10:00
Matthias Clasen
bd9096688a cursor-shape: Add the 'all-resize' cursor shape
The move cursor is ambiguous, since it is used in two context:
for DND, and for resizing. This commit adds a separate enum
value for a cursor that indicates something can be resized
in all directions. A suitable image for this value is a four-headed
arrow.

Signed-off-by: Matthias Clasen <mclasen@redhat.com>
2025-02-28 08:35:39 -05:00
Matthias Clasen
43620ec29a cursor-shape: Add the 'ask' cursor shape
This is the cursor shape that corresponds to the ASK drag action
in the core protocol. The expected semantics of ASK are that the
drop target presents the user with a choice of actions when the
drop happens. A typical image for this cursor is a default cursor
with a '?' emblem.

Signed-off-by: Matthias Clasen <mclasen@redhat.com>
2025-02-28 08:08:20 -05:00
Matthias Clasen
b697b9e45b cursor shape: Add some docs
Add some hints about related groups of cursor shapes and recommend
that they should use visually compatible images.

Signed-off-by: Matthias Clasen <mclasen@redhat.com>
2025-02-28 08:01:03 -05:00
Matthias Clasen
22619f08fd cursor-shape: Bump protocol version
We are going to add new values to the cursor shape enum,
so a new protocol version is needed.

Signed-off-by: Matthias Clasen <mclasen@redhat.com>
2025-02-28 08:01:02 -05:00
Nick Diego Yamane
d5aed4e490 governance: Add chromium as a member project
Signed-off-by: Nick Diego Yamane <nickdiego@igalia.com>
2025-02-21 12:58:12 +00:00
Vlad Zahorodnii
af2716ecfe members: Add Xaver Hugl as a KWin point-of-contact
Xaver is a KWin maintainer.

Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
2025-02-18 14:32:16 +00:00
Jonas Ådahl
71da8bd7f9 build: Bump version to 1.41
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-02-17 16:34:30 +08:00
Pekka Paalanen
b3e507b102 staging/color-management: credit Niels
Niels' efforts predate Sebastian's by another 5 years and they deserve
to be mentioned.

Sorry for missing them from the commit.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2025-02-13 15:27:33 +02:00
Sebastian Wick
452e943b49 staging: add color-management protocol
# Wayland Color Management and HDR Design Goals

The goals of Wayland color management and *high dynamic range* (HDR) support
protocol extension are:

- Reliably maintain the display server color setup.
- Support professional color managed applications (presentation).
- Support displaying TV broadcasts and other high quality video content.
- Support a wide variety of monitors and application content,
  including wide gamut and/or HDR.
- Bring basic color management to applications that are not color-aware at all.
- Bring adequate color management to Wayland applications that are color-aware
  but not color managed.

Once a display system has been calibrated, measured and configured, it should
keep its settings until the user intentionally changes them. Achieving this
reliability requires protecting the system from accidental changes and avoiding
dependency on hardware default state as much as possible. The former is done by
not allowing arbitrary programs to change the settings. The latter is realized
by very careful Wayland compositor implementation that takes into account the
details of the underlying system API. For example, with DRM also unrecognized
KMS properties need to be saved and restored.

It should be reasonably possible to run existing color managed applications,
particularly X11 applications through Xwayland, without need for modification
and get at least the level of color managed presentation features they received
on Xorg. It is possible that this requires e.g. re-creating monitor color profiles,
recalibration, or other reconfiguring.

The use of `xrandr` and similar X11 tools and interfaces are intentionally
not supported as the Wayland desktop paradigm does not allow clients to force
effects on other clients. Those global properties, including video mode
and display color depth, are left to each Wayland compositor's own settings
management as they are end user preferences.

The protocol extension should be usable for professional broadcast display
usage, meaning that it is suitable for use inside a television for all of
aerial, cable, and internet delivered content. However, the extension might not
be completely sufficient, particularly where it would violate the Wayland
desktop paradigm (e.g. requests to change display video mode or calibration
shall not be included).

The support for a wide variety of monitors is achieved by communicating sufficient
information about the monitors to applications, so that applications can adapt
to the monitors if they choose to do so. The proper composition and handling of
a wide variety of application content is achieved by applications describing
the content in sufficient detail for a Wayland compositor to process it
correctly.

Applications that pay no mind whatsoever to color management are called
*color-unaware*. They have been written for an average system that more or less
resembles (or not) sRGB in its color output. This is the large majority of all
applications on X11 and Wayland. On a usual consumer monitor they look pretty
much ok, but on a color managed monitor with special features (wide gamut, HDR)
they might be an eye sore when displayed side by side with properly color
managed applications. A goal for Wayland color management is to make these
application look "pretty much ok" on such special monitors without
modifications to the applications or toolkits, while letting color managed
applications look their best simultaneously.

One step forward from color-unaware applications are *color-aware* applications
that also are not fully color managed applications. These applications are
fixed to one or few well-known color spaces, the traditional sRGB for instance.
They don't try to adapt to the monitor and they might not use any *color
management module* (CMM). These applications can still describe their content's
color space to a Wayland compositor, which will then take care of color managed
presentation of the content.

Finally, *color-managed* applications are fully prepared to do all of their own
color management, and may be using a CMM. They can also adapt their rendering
to different kinds of monitors, and prefer to know everything they can about a
monitor in order to do a perfect job. They expect the window system to not
tamper with the color values they produce.

The above goals imply that a Wayland compositor is an active participant in
color management, converting all application content into some common color
space for display on a monitor. As a compositor can do that separately for each
monitor, it is possible to present the same window adequately color managed on
multiple monitors simultaneously. It is also possible to keep a monitor in HDR
mode while showing both *standard dynamic range* (SDR) (traditional or
unmodified applications) and HDR content simultaneously. A practical use case
for that is a video player showing a HDR video on one Wayland surface and SDR
subtitles and user interface on another surface.

 History

Wayland color management has been planned and developed for many years.
This patch is the result of 141 development patches which are stored for
future reference in the wayland-protocols branch history/color-management:
https://gitlab.freedesktop.org/wayland/wayland-protocols/-/commits/history/color-management
The development started some years even before this.

There have been many contributors over the years. The list below has
been collected from those 141 patches, and is surely incomplete.

Co-authored-by: Benjamin Otte <otte@redhat.com>
Co-authored-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Co-authored-by: Colin Marc <hi@colinmarc.com>
Co-authored-by: Dudemanguy <random342@airmail.cc>
Co-authored-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Co-authored-by: Matthias Clasen <mclasen@redhat.com>
Co-authored-by: Naveen Kumar <naveen1.kumar@intel.com>
Co-authored-by: Sebastian Wick <sebastian.wick@redhat.com>
Co-authored-by: Timo Witte <timo.witte@gmail.com>
Co-authored-by: Victoria Brekenfeld <victoria@system76.com>
Co-authored-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
Co-authored-by: Xaver Hugl <xaver.hugl@kde.org>

Signed-off-by: Sebastian Wick <sebastian@sebastianwick.net>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2025-02-13 14:06:15 +02:00
Jonas Ådahl
c7b582cb71 build: Bump version to 1.40
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2025-01-30 19:42:36 +08:00
Xaver Hugl
18a0117b94 stable/linux-dmabuf: clarify when the plane_set protocol error is sent
Signed-off-by: Xaver Hugl <xaver.hugl@kde.org>
2025-01-29 15:12:48 +00:00
Simon Ser
bd6289c141 linux-dmabuf: link to kernel docs
Replace the EGL links and AddFb2 reference with a link to the
kernel docs. The kernel docs explain all the subtleties of dmabuf
exchange, and already link to EGL (and more).

Signed-off-by: Simon Ser <contact@emersion.fr>
2025-01-21 08:13:12 +00:00
James Ramsey
20bcf732a9 ext-idle-notify: Allow for the ignoring of idle inhibitors
Signed-off-by: James Ramsey <james.jehiel.ramsey@gmail.com>
2025-01-13 06:49:42 -05:00
YaoBing Xiao
258d8f88f2 content-type: update description summary for get_surface_content_type request
Signed-off-by: YaoBing Xiao <xiaoyaobing@uniontech.com>
2024-12-22 20:11:32 +00:00
YaoBing Xiao
04b966f0ed alpha-modifier: update description summary for get_surface request
Signed-off-by: YaoBing Xiao <xiaoyaobing@uniontech.com>
2024-12-22 09:51:02 +00:00
Jonas Ådahl
6bcf87d9c1 build: Bump version to 1.39
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2024-12-20 12:25:32 +01:00
Victoria Brekenfeld
605436b591 Add ext-workspace
Signed-off-by: Victoria Brekenfeld <github@drakulix.de>
2024-12-03 17:46:07 +01:00
Nick Diego Yamane
122a47a1ff
xdg-toplevel-drag: Add myself as co-maintainer
Signed-off-by: Nick Diego Yamane <nickdiego@igalia.com>
2024-11-20 13:29:08 -04:00
Heiko Becker
fe3d5448be build: Raise required wayland-scanner version to 1.23.0 for tests
It's needed for the deprecated-since attribute [1] introduced with [2],
at least when building the tests, which pass the '--strict' parameter to
wayland-scanner.

[1] ee12e69b8f
[2] 6c214e6dc0

Signed-off-by: Heiko Becker <mail@heiko-becker.de>
2024-11-07 22:47:15 +01:00
Mike Blumenkrantz
9dd051b4a0 governance: update NACK usage/restrictions
with great NACKs come great responsibility:
* if you abuse this power, you should be held accountable
* if you should not be using this power, you should be held accountable

Signed-off-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
2024-11-06 14:21:49 +00:00
Mike Blumenkrantz
169cd3c803 governance: introduce workflow improvements
lots of small issues to resolve

Signed-off-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
2024-11-06 14:20:07 +00:00
Mike Blumenkrantz
11f36fbcf4 add experimental protocols and their requirements
these have a lower bar to clear for inclusion and are intended to
promote rapid development with greater community involvement

Signed-off-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
2024-10-31 11:58:24 +01:00
Daniel Stone
5108f5451a governance: Deprecate wayland-devel@
No-one really uses the list anymore; issues are better.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2024-10-30 23:08:29 +00:00
Daniel Stone
19a9d06e6c governance: Specify how to change points of contact
It was implicitly understood to be the same mechanism as projects, so
codify that.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2024-10-30 23:08:29 +00:00
Daniel Stone
76edd71fd8 governance: Clarify 'member'
We were using 'member' to generally mean 'member project', but this
wasn't super clear, and sometimes it also meant an individual person.

Clarify it such that project vs. individual is clear where it's
relevant, leaving 'member' only for when it's not relevant.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2024-10-30 23:08:29 +00:00
Simon Ser
442fb88627 drm-lease: nominate Simon Zeni as maintainer
Drew is no longer active in the Wayland community. Simon Zeni is
the wlroots point-of-contact and is very familiar with DRM leasing.

Signed-off-by: Simon Ser <contact@emersion.fr>
2024-10-30 23:06:18 +00:00
Neal Gompa
1f5f2b50ea Add ext-data-control protocol
This protocol allows a privileged client to control data devices. In
particular, the client will be able to manage the current selection and take
the role of a clipboard manager.

This is a straight port from wlr-data-control-unstable-v1 to ext-, as it
has not changed in five years and has near-universal compositor adoption.

Signed-off-by: Neal Gompa <neal@gompa.dev>
2024-10-25 13:10:22 +00:00
YaoBing Xiao
fc1faa707e ext-image-copy-capture: fix the error in the protocol description
Signed-off-by: YaoBing Xiao <xiaoyaobing@uniontech.com>
2024-10-13 21:01:42 +08:00
Jonas Ådahl
9ac1a0977e build: Bump version to 1.38
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2024-10-12 08:17:40 -04:00
Daniel Stone
8cdb391032 presentation-time: Specify refresh bounds for VRR
When this extension was developed, we did not yet know how VRR hardware
would behave in practice as it was not standardised, and the KMS
interface was equally unstandardised.

Now things have shaken out to an acceptable level, we have a good idea
of what we need, which is simply to include a base refresh rate - the
rate the compositor would drive the display for non-VRR clients.

Bump the protocol to version 2 and require the compositor to provide
a rate.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2024-10-11 22:19:08 +00:00
Derek Foreman
37a1560cf6 commit-timing-v1: Add new protocol
Add a new protocol for adding timestamps to wayland surface state to
allow deferring processing until later.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2024-10-11 18:47:41 +00:00
Derek Foreman
1ccc5748ac fifo-v1: Add new protocol
Add a new protocol to allow a content update to require a
display refresh pass before it is ready to present.

Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2024-10-11 13:29:33 -05:00