aboutsummaryrefslogtreecommitdiff
path: root/stable/xdg-shell
AgeCommit message (Collapse)Author
2023-05-22stable/xdg-shell: clarify when which protocol errors are usedXaver Hugl
Signed-off-by: Xaver Hugl <xaver.hugl@gmail.com>
2023-04-04xdg-shell: Clarify window geometry boundsJonas Ådahl
The xdg_surface window geometry can extend outside the base wl_surface to e.g. accompany subsurfaces that extend outside it but is part of the window itself. Spell out this bit explicitly. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2023-04-04xdg-shell: Clarify that geometry doesn't automatically changeJonas Ådahl
The spec says that When applied, the effective window geometry will be the set window geometry clamped to the bounding rectangle of the combined geometry of the surface of the xdg_surface and the associated subsurfaces. Thus, a client cannot assume the geometry will adapt to any subsequent changes to any conditions that constrained the geometry. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2022-11-29xdg-shell: add defunct_role_object errorKirill Primak
Signed-off-by: Kirill Primak <vyivel@eclair.cafe>
2022-11-04Add xdg-shell.unresponsive errorDemi Marie Obenour
This allows compositors to disconnect clients that have been deemed unresponsive. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
2022-11-04xdg-shell: Add specific errorsDemi Marie Obenour
This adds specific errors for all xdg_shell errors. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
2022-11-04xdg-shell: window menus are optionalDemi Marie Obenour
A compositor is free to completely ignore requests to draw a window menu. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
2022-11-04xdg-shell: Replace an HTTP link with HTTPSDemi Marie Obenour
No normative change. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
2022-10-10xdg-shell: ack_configure must be strictly monotonicDaniel Stone
Clients must send ack_configure in a strictly monotonic order wrt received configure events. It is an error to send an ack_configure request for a configure event which was sent prior to the last ack_configure for that surface, or to send multiple ack_configures for the same configure event. Weston and wlroots already use this interpretation, however Mutter and KWayland are more lax and allow duplicates. This clarification tightens the spec working to explicitly encode the Weston/wlroots behaviour. Signed-off-by: Daniel Stone <daniels@collabora.com> Closes: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/21
2022-09-17xdg-shell: forbid loops in set_parentSimon Ser
These don't make sense. Add a protocol error for this case. Signed-off-by: Simon Ser <contact@emersion.fr> Closes: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/105
2022-07-07xdg-shell: introduce toplevel wm_capabilitiesSimon Ser
Some compositors don't implement all of the features of xdg-shell. This results in UI elements (e.g. buttons) in clients which do nothing when activated. Add a wm_capabilities event to allow clients to hide these UI elements when they don't make sense. Signed-off-by: Simon Ser <contact@emersion.fr> Closes: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/64
2022-06-01xdg-shell: Delete duplicate paragraph in xdg_popupDaniel Stone
This is already covered about three paragraphs above. Signed-off-by: Daniel Stone <daniels@collabora.com>
2022-04-06xdg-shell: clarify setting the parent to an unmapped toplevelKirill Primak
Signed-off-by: Kirill Primak <vyivel@eclair.cafe>
2022-01-19xdg-shell: add invalid_resize_edge error valueIsaac Freund
The protocol states that the edges parameter of the resize request must be one of the values of the resize_edge enum but does not provide a protocol error value to handle the case where it is not. This commit adds that error value. Signed-off-by: Isaac Freund <mail@isaacfreund.com>
2022-01-19xdg-shell: Add toplevel "bounds" configure eventJonas Ådahl
This aims to communicate the maximum size a surface should be created with, and loosely corresponds to the concept of "work area" in the X11 world. Closes: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/17 Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2021-11-24xdg-shell: clarify conditions for remapping unmapped surfacesMax Ihlenfeldt
Signed-off-by: Max Ihlenfeldt <mihlenfeldt@igalia.com>
2021-11-17Improve tiled_* enum summaryDemi Marie Obenour
No change in behavior, just a doc fix. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
2021-07-21xdg-shell: Make xdg_surface fail when surface has roleDaniel Stone
It is illegal for a surface to have more than one role. The only thing which can be done with an xdg_surface (apart from destroying it) is to assign the surface a role with the get_toplevel, get_popup, etc requests. On Mutter, calling get_xdg_surface on a surface which already has an assigned role generates the 'role' protocol error. Weston will not send an error, however it may later abort on a failed assert during cleanup. wlroots allows this case, and only sends the role error when assigning an explicit role through creating a toplevel or popup. On the grounds that it makes no sense to create an xdg_surface for a wl_surface which already has a role, make it explicitly illegal. cf. wayland/weston!559, wayland/weston!627 Signed-off-by: Daniel Stone <daniels@collabora.com>
2020-06-19Use correct indefinite article before "xdg"Vlad Zahorodnii
Since the abbreviation "XDG" starts with a vowel sound, the correct article is "an." Signed-off-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
2020-04-07xdg-shell: explain how clients need to perform an initial commitSimon Ser
This wasn't explicit reading the mapping requirements. Signed-off-by: Simon Ser <contact@emersion.fr>
2020-04-07xdg-shell: describe how to re-map an unmapped toplevelSimon Ser
Signed-off-by: Simon Ser <contact@emersion.fr>
2020-02-29xdg-shell: Add support for explicit popup repositioningJonas Ådahl
This commit adds protocol additions making it possible to request that a popup should be repositioned according to a new xdg_positioner object. Explicit popup moving is done using a new request on xdg_popup: xdg_popup.reposition. What it does is change the parameters used for positioning a popup by providing a new xdg_positioner object. This request is coupled with a new event; xdg_popup.repositioned, sent together with the configure events (xdg_popup.configure and xdg_surface.configure) to notify about the completion of the reposition request. The reposition request also takes a token that is later passed via the repositioned event; this is done so that a client may determine for which reposition request the compositor has sent configure events. Synchronization between surfaces to avoid state application race condition are deliberately left out, and should be handled by an external protocol. To brief the compositor of the future dimension of the parent that the compositor should position the popup against, a xdg_positioner.set_parent_size request is added. Lastly, a request to couple a xdg_positioner object with a parent configure event is added (xdg_positioner.set_parent_configure) in order for a compositor to pair a popup reposition request with a pending configure event, and it's resulting window geometry. This is necessary to, for example, properly constrain a popup given a future parent state. An example of when this may be necessary is an interactive resize where both the toplevel position and the relative popup position changes. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2020-02-29xdg-shell: Add support for implicit popup repositioningJonas Ådahl
This commit adds protocol additions making it possible to implicitly reposition an already mapped popup if the conditions for the constraint changed (e.g. toplevel moved). Implicit popup moving is done by setting a adjustment flag on the positioner used to create it that will cause the compositor to adjust the position as the conditions used to constrain it change. These changes may include, for example, changes in the position of the parent window or the geometry of the work area. To allow the client to update its content in response to the updated position, the client must ack the configure event, optionally with new content. Until the client acks this configure event, the existing positioner will continue to be used. Implicit repositioning by itself is racy regarding inter-surface synchronization of applied state. Inter-surface synchronization is deliberately left out of xdg-shell, and left to be handled externally. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2020-02-29xdg-shell: Remove left-over paragraph from pre positioner versionsJonas Ådahl
It mentioned the now removed x, y parameters of xdg_surface.get_popup. The xdg_positioner now has the relevant documentation that was previously documented by the now removed paragraph. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2020-01-22xdg-shell: add missing enum attribute to resizeIvan Molodetskikh
This helps binding generators such as the one in wayland-rs. Signed-off-by: Ivan Molodetskikh <yalterz@gmail.com>
2019-07-17xdg-shell: use case to change the app ID at runtimeJan-Marek Glogowski
LibreOffice is one big binary with explicit brandings for different application modules. This is represented in X11 by a different WM_CLASS setting for a window. The WM_CLASS is changed based on the loaded document at runtime. As a result LibreOffice already offers multiple desktop files with different icons, StartupWMClass entries and application names. This amendment of the set_app_id request just explicitly specifies the use case to change a surfaces' app ID at runtime, so a compositor implementor is made aware of it. Just as the WM_CLASS, a change of the app ID should result in an update of the propertes of a surface depending on the app ID, like the window icon specified in the desktop file or a re-grouping of the surfaces in a task manager. Signed-off-by: Jan-Marek Glogowski <glogow@fbihome.de> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
2019-05-22xdg-shell/README: Update E-mail addressJonas Ådahl
As requested by Mike, update the E-mail address listed in the README. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2019-01-17xdg-shell: fix a typoSebastian Krzyszkowiak
Signed-off-by: Sebastian Krzyszkowiak <dos@dosowisko.net> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2018-07-30xdg-shell: Make sure wording reflects expectationsMarkus Ongyerth
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-30xdg-shell: move maximized state definition togetherMarkus Ongyerth
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-04xdg-shell: remove constraint on popup parentsDrew DeVault
It seems that this was partially done in a3cf97ff982638bf7ed23b4303eba280c521b54d; this patch just corrects an oversight. Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2018-05-03xdg-shell: add enums for tiled window state to toplevel configureMike Blumenkrantz
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-01-19xdg-shell: remove harmless typoMike Blumenkrantz
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2017-11-22xdg-shell: Soften fullscreen geometry requirementsJonas Ådahl
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-21xdg-shell: Add unset_fullscreen descriptionJonas Ådahl
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-21xdg-shell: Clarify set_fullscreen semanticsJonas Ådahl
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-21xdg-shell: Specify what happens when (un)maximizing while fullscreenJonas Ådahl
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-21xdg-shell: Fix typoJonas Ådahl
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-21xdg-shell/positioner: Clarify flip semantics with anchor offsetJonas Ådahl
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-21xdg-shell/positioner: Replace edge bitfield with extended enumDavid Edmundson
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-21xdg-shell: clarify map/unmap wordingMike Blumenkrantz
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-21xdg-shell/popup: Allow custom parent by passing null as parentJonas Ådahl
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-21xdg-shell/toplevel: Chain multiple parent-child relationshipsJonas Ådahl
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-21xdg-shell/toplevel: Clarify xdg_toplevel.set_parent(null)Jonas Ådahl
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-21xdg-shell/surface: Add note about window position and geometryJonas Ådahl
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-21xdg-shell: Replace 'monitor' with 'output'Jonas Ådahl
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-21xdg-shell/positioner: Allow empty anchor_rectJonas Ådahl
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-21xdg-shell: Reword the xdg_wm_base introductionJonas Ådahl
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-21xdg-shell: Update copyright noticesJonas Ådahl
Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Acked-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2017-11-21xdg-shell: Rename interfacesJonas Ådahl
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>