Commit graph

171 commits

Author SHA1 Message Date
Jonas Ådahl
9132fc867d configure.ac: Bump version to 1.17
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2018-11-12 16:59:01 +01:00
emersion
2c3b11d76f unstable: add primary-selection protocol
This primary selection is similar in spirit to the eponimous
in X11, allowing a quick "select text + middle click" shortcut
to copying and pasting.

It's otherwise very similar to its Wayland counterpart, and
explicitly made consistent with it.

Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Carlos Garnacho <carlosg@gnome.org>
2018-11-12 16:56:50 +01:00
Alexandros Frantzis
19ec5dcc4b Add zwp_linux_explicit_synchronization_v1
This protocol enables explicit synchronization of asynchronous graphics
operations on buffers on a per-commit basis. Support is currently
limited to dmabuf buffers and dma_fence fence FDs.

Explicit synchronization provides a more versatile notification
mechanism for buffer readiness and availability, and can be used to
improve efficiency by integrating with related functionality in display
and graphics APIs.

This protocol is also useful in ChromeOS ARC++ (running Android apps
inside ChromeOS, using Wayland as the communication protocol), where it
can enable integration of the ChromeOS compositor with the explicit
synchronization mechanisms of the Android display subsystem.

Finally, the per-commit nature of the release events provided by this
protocol potentially offers a solution to a deficiency of the
wl_buffer.release event (see
https://gitlab.freedesktop.org/wayland/wayland/issues/46).

Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
[Pekka: dropped Reveman from maintainers]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2018-11-12 16:32:54 +02:00
Johan Klokkhammer Helsing
18032f6672 fullscreen-shell: Add missing license tag
Although it would probably default to the license at the root of the
repository anyway, it's best to be explicit about it, and also be
consistent with the other extensions.

The copyright holders have been assembled from git history and the
README.

Signed-off-by: Johan Klokkhammer Helsing <johan.helsing@qt.io>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
2018-07-31 11:53:03 +01:00
Jonas Ådahl
298d888ac7 configure.ac: Bump version to 1.16
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2018-07-30 18:14:56 +02:00
Markus Ongyerth
3ad11c68ab xdg-shell: Make sure wording reflects expectations
The wording in xdg-shell's `set_*` requests implies the compositor
*will* honour the client's request.
This would give clients the control over their actual state, while the
general expectation is that clients kindly ask for state changes which
the compositor may follow.
This patch ensures the actual protocol text reflects these expectations.

Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2018-07-30 18:15:18 +02:00
Markus Ongyerth
31236887df xdg-shell: move maximized state definition together
The xdg-shell documentation had part of the maximized state render
implications in the `set_maximized` request documentation, not the
actual state.
This moves the relevant lines into the state description.

Signed-off-by: Markus Ongyerth <wl@ongy.net>
Reviewed-by: Mike Blumenkrantz <zmike@osg.samsung.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2018-07-30 18:14:56 +02:00
Carlos Garnacho
db152d7c6f text-input: Add v3 of the text-input protocol
This new protocol description is an evolution of v2.

- All pre-edit text styling is gone.
- Pre-edit cursor can span characters.
- No events regarding input panel (OSK) state nor covered rectangle.
  Compositors are still free to handle situations where the keyboard
  focus rectangle is covered by the input panel.
- No set_preferred_language request for clients.
- There is no event to send keysyms. Compositors can use wl_keyboard
  interface instead.
- All state is double-buffered, with specified defaults.
- The compositor can be notified about external changes to the state.
- The client can detect outdated requests.

Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
2018-07-30 17:42:39 +02:00
Jonas Ådahl
6d58be0035 tests: Make wayland-scanner strict
Pass --strict to wayland-scanner in order to make it exit with failure
if something wasn't correct.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
2018-07-30 17:27:53 +02:00
Jonas Ådahl
3bd79c2ddc tests: Use public-code and private-code instead of code
The wayland-scanner sub-commands private-code and public-code replaced
the old code command, so lets use those in the tests instead.

This requires at least wayland-scanner 1.15.0.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
2018-07-30 17:27:53 +02:00
Simon Ser
3f282987d6 xdg-output: add a transform example for the logical size
Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2018-07-16 20:58:02 +02:00
Jonas Ådahl
65cc1094f7 configure.ac: Bump version to 1.15
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2018-07-04 23:23:14 +02:00
Simon Ser
76d1ae8c65 unstable: add xdg-decoration protocol
This adds a new protocol to negotiate server-side rendering of window
decorations for xdg-toplevels. This allows compositors that want to draw
decorations themselves to send their preference to clients, and clients that
prefer server-side decorations to request them.

This is inspired by a protocol from KDE [1] which has been implemented in
KDE and Sway and was submitted for consideration in 2017 [2]. This patch
provides an updated protocol with those concerns taken into account.

Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Drew DeVault <sir@cmpwn.com>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Eike Hein <hein@kde.org>
Reviewed-by: Alan Griffiths <alan.griffiths@canonical.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>

[1] https://github.com/KDE/kwayland/blob/master/src/client/protocols/server-decoration.xml
[2] https://lists.freedesktop.org/archives/wayland-devel/2017-October/035564.html
2018-07-04 23:23:14 +02:00
Drew DeVault
7287469e0f xdg-shell: remove constraint on popup parents
It seems that this was partially done in
a3cf97ff982638bf7ed23b4303eba280c521b54d; this patch just corrects an
oversight.

Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2018-07-04 23:23:14 +02:00
Maciej Wolny
dae2a3dd09 Makefile.am: add include dir for AC_CONFIG_MACRO_DIR to work
da33164726 added a compatiblity macro for
old versions of pkg-config. However, the file in which that macro
resides was not included. From the autoconf docs: "Note that if you use
aclocal from Automake to generate aclocal.m4, you must also set
ACLOCAL_AMFLAGS = -I dir in your top-level Makefile.am.".

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2018-06-18 12:05:05 +03:00
Jonas Ådahl
c5f0f1a739 configure.ac: Bump version to 1.14
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2018-05-03 17:45:15 +02:00
Drew DeVault
d296d0760c xdg-output: Add name and description events
This adds two events to the protocol. The goal is to allow clients to
give the user the ability to select outputs with the same names the
compositor uses and to identify outputs consistently across sessions.
The output name is a short and stiff identifier with strict limits on
permitted characters, which is suitable for storing in config files,
command line arguments, etc. A warmer "description" event is also
provided to (optionally) provide a more human readable name, and has
much broader restrictions on its form.

Signed-off-by: Drew DeVault <sir@cmpwn.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
[Jonas: Fixed formatting and commit subject]
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2018-05-03 17:44:35 +02:00
Mike Blumenkrantz
bd7b0c628a xdg-shell: add enums for tiled window state to toplevel configure
this adds implementation from a related discussion long ago in which
it was decided that it would be useful for clients to know if/where their
windows were tiled so that various behaviors and visuals could be modified
to improve UX

a window which is e.g., tiled on the right side of the screen would set the
right|top|bottom tiled states in configure

Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
[Jonas: Minor formatting fixes]
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>

Changes since v2: simplified docs
Changes since v1: added since=2 to enum members
2018-05-03 16:24:51 +02:00
Jonas Ådahl
d5ded4ddaf configure.ac: Bump version to 1.13
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2018-02-14 20:29:40 +08:00
Mike Blumenkrantz
d852a6fd59 xdg-shell: remove harmless typo
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2018-01-19 13:02:31 -06:00
Alexandros Frantzis
4f789286e4 unstable: Add input-timestamps protocol
wl_pointer, wl_keyboard and wl_touch events currently use a 32-bit
timestamp with millisecond resolution. In some cases, notably latency
measurements, this resolution is too coarse to be useful.

This protocol provides additional high-resolution timestamps events,
which are emitted before the corresponding input event. Each timestamp
event contains a high-resolution, and ideally higher-accuracy, version
of the 'time' argument of the first subsequent supported input event.

Clients that care about high-resolution timestamps just need to keep
track of the last timestamp event they receive and associate it with the
next supported input event that arrives.

Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2018-01-19 11:21:02 +02:00
Jonas Ådahl
0130366ee0 configure.ac: Bump version to 1.12
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2017-12-02 09:56:36 +08:00
Jonas Ådahl
040a8698cd Makefile.am: Install stable xdg-shell
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2017-12-02 09:51:59 +08:00
Jonas Ådahl
f68bafc9c3 xdg-shell: Soften fullscreen geometry requirements
Having a strict requirement on clients obeying the configured window
geometry for fullscreen toplevel surfaces might have the side effect of
making it harder or impossible to implement various hardware
optimizations on certain system configurations. By softening
requirements on the geometry while loosely defining the border fill, we
remove that restriction.

Clients that still want total control of the surrounding area can
still for example prepare the attached buffers to match the configured
surface size, or use subsurfaces in combination with wp_viewporter to
make up a surface matching the fullscreen window geometry dimensions.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Arnaud Vrac <rawoul@gmail.com>
Reviewed-by: Mike Blumenkrantz <zmike@samsung.com>
2017-11-22 13:58:40 +08:00
Jonas Ådahl
cd1e13ed6d xdg-shell: Add unset_fullscreen description
The description for xdg_toplevel.unset_fullscreen was completely
missing, so add it.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Mike Blumenkrantz <zmike@samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
a82ca1f35b xdg-shell: Clarify set_fullscreen semantics
It was not explicitly specified (as it is in set/unset_maximize) that
the compositor will respond with a configure event when a client asks to
be fullscreened, and the meaning of the output parameter was somewhat
awkwardly described.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Mike Blumenkrantz <zmike@samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
3c7dbb9646 xdg-shell: Specify what happens when (un)maximizing while fullscreen
Specify that the maximize/unmaximize state requests only affects the
state a surface will return to if it is currently fullscreen.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Mike Blumenkrantz <zmike@samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
a8a7b0b213 xdg-shell: Fix typo
There is no configure 'request' only configure 'events'.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Mike Blumenkrantz <zmike@samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
8f96c079d2 xdg-shell/positioner: Clarify flip semantics with anchor offset
While there is no currently known usages of setting an anchor offset on
the same axis as the 'flip' constraint action is set, it must still be
specified so compositors behave the same.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2017-11-21 16:25:51 +08:00
David Edmundson
6bff136f30 xdg-shell/positioner: Replace edge bitfield with extended enum
Bitfields allowed for impossible combinations of anchor edges, such as
being on the left and right edge. Use of explicit enumerations means we
don't need to handle that case.

Signed-off-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2017-11-21 16:25:51 +08:00
Mike Blumenkrantz
0c761706bb xdg-shell: clarify map/unmap wording
ensure that this is as precise and explicit as possible for all useful
cases and also define previously-unspecified behavior

Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
a3cf97ff98 xdg-shell/popup: Allow custom parent by passing null as parent
Allow using some other protocol (custom, or future xdg_* based) to set
up the parent-child relationship of a popup. This allows future
protocols to use xdg_popup when mapping popups over surfaces not based
on xdg_surface.

An example use case for this is the window menu, where a shells UI
client can use xdg_popup to create popup menus over windows it does not
have a xdg_surface of by having a custom protocol setting up the proper
parent-child relationship.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-By: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
bb632281d0 xdg-shell/toplevel: Chain multiple parent-child relationships
Change the semantics of xdg_toplevel.set_parent to allow chaining
multiple parent-child relationships together, while allowing
arbitrarily unmapping parents, while keeping what is left over of the
chain intact.

This makes things easier to manage when parent-child relationships
cross client borders, for example when using xdg_foreign.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
4fd4d23481 xdg-shell/toplevel: Clarify xdg_toplevel.set_parent(null)
Setting a null-surface as a toplevel parent should unset the
parent-child relationship. This was not specified, so lets do that.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
43a09b1577 xdg-shell/surface: Add note about window position and geometry
A client might want to change the window geometry without wanting the
window to be moved, for example when changing the width of the border.
Point out that the compositor should treat the (x,y) coordinate of the
geometry as the top-left corner of the window, and not change the
position of the window as it appears on the screen if the (x,y)
coordinate changes.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-By: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
af6cf5ecac xdg-shell: Replace 'monitor' with 'output'
There is no such thing as 'monitor' in Wayland, only outputs.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-By: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
e49a2c0b56 xdg-shell/positioner: Allow empty anchor_rect
Allow setting an empty anchor rectangle, so that one can map a popup
against a coordinate, not a pixel.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-By: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
092c976606 xdg-shell: Reword the xdg_wm_base introduction
Don't refer to things as "traditional desktop" as it is not defined
nor clear what that refers to; instead reword things in a more explicit
way. A reason for this is that xdg-shell is not strictly meant only for
traditional window stacking based desktop environments, but should be
equally suitable for stacking, tiling and potentially other styles as
well.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-By: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
505a4f5daf xdg-shell: Update copyright notices
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Acked-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
709a1a0c9a xdg-shell: Rename interfaces
Rename the interfaces according to the wayland-protocols policy. Since
the name 'xdg_shell' as an interface was already taken (by
xdg-shell-unstable-v5) zxdg_shell_v6 was renamed xdg_wm_base. The
surface role related interfaces were not renamed, as naming collision
is only unmanagable when exposed as globals via the registry.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-By: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
fcb2a63c84 Add xdg-shell to stable/
Add a copy of xdg-shell unstable v6 to stable/xdg-shell/xdg-shell.xml.
Folliwing this commit, it will go through a set of changes, before
being declared stable.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
2017-11-21 16:25:51 +08:00
Jonas Ådahl
fc3305c362 configure.ac: Bump version to 1.11
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2017-10-11 16:20:05 +08:00
Marco Martin
70d85926c6 xdg-foreign-v2: Rename export and import calls
As export is a reserved keyword in C++, in order for the output
generated by wayland_scanner to compile correctly rename export to
export_toplevel and import to import_toplevel this needs a new protocol
version as is an incompatible change

[jadahl: Fix various documentation issues]

Signed-off-by: Marco Martin <notmart@gmail.com>
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2017-10-11 09:01:22 +08:00
Marco Martin
72699573cc Add a new version of the xdg-foreign protocol
Some methods will be renamed, so we need a new, not retrocompatible
protocol.

Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2017-09-26 09:49:23 -04:00
Tomek Bury
875130ee3c Use sysroot prefix for pkgdatadir variable
The pc_sysroot is automatically added to cflags and libs but not
to 'pkg-config --variable'

Reviewed-by: Daniel Stone <daniels@collabora.com>
2017-08-30 14:04:02 +01:00
Jonas Ådahl
9ee1d597a6 configure.ac: Bump version to 1.10
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2017-07-31 18:57:58 +08:00
Olivier Fourdan
6b62c3211d configure.ac: force autotool to use star
To circumvent the 99 character filename limit.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2017-07-31 18:57:58 +08:00
Olivier Fourdan
794a96a80f Add xdg-output protocol
This protocol aims at describing outputs in way which is more in line
with the concept of an output on desktop oriented systems.

Some information are more specific to the concept of an output for a
desktop oriented system and may not make sense in other applications,
such as IVI systems for example.

The goal is to gradually move the desktop specific concepts out of the
core wl_output protocol.

For now it just features the position and logical size which describe
the output position and size in the global compositor space.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2017-07-31 18:15:45 +08:00
Jonas Ådahl
7af21d83d3 configure.ac: Bump version to 1.9
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2017-07-11 14:41:21 +08:00
Olivier Fourdan
e16986b3d2 Add keyboard shortcuts inhibitor
This adds a new protocol to let Wayland clients specify that they want
all keyboard events to be sent to the client, regardless of the
compositor own shortcuts.

This protocol can be used for virtual machine and remote connection
viewers which require to pass all keyboard shortcuts to the hosted or
remote system instead of being caught up by the compositor locally.

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2017-07-11 14:18:39 +08:00