From 5e2f0095d09b8f5bad9bd15175e4fc610e0f8b7f Mon Sep 17 00:00:00 2001 From: HuntedByTheIRS Date: Fri, 3 Jul 2026 00:07:45 -0400 Subject: [PATCH] revert stupid v2 --- peachmsg/peachmsg | Bin 32712 -> 0 bytes peachmsg/peachwm-ipc-unstable-v2-protocol.c | 94 - peachmsg/peachwm-ipc-unstable-v2-protocol.h | 484 ---- peachwm | Bin 631120 -> 0 bytes protocols/cursor-shape-v1-protocol.h | 507 ---- protocols/ext-workspace-v1-protocol.c | 120 - protocols/ext-workspace-v1-protocol.h | 752 ------ protocols/peachwm-ipc-unstable-v2-protocol.c | 94 - protocols/peachwm-ipc-unstable-v2-protocol.h | 447 --- ...pointer-constraints-unstable-v1-protocol.h | 615 ----- .../wlr-layer-shell-unstable-v1-protocol.h | 730 ----- ...ut-power-management-unstable-v1-protocol.h | 285 -- protocols/xdg-shell-protocol.h | 2392 ----------------- 13 files changed, 6520 deletions(-) delete mode 100755 peachmsg/peachmsg delete mode 100644 peachmsg/peachwm-ipc-unstable-v2-protocol.c delete mode 100644 peachmsg/peachwm-ipc-unstable-v2-protocol.h delete mode 100755 peachwm delete mode 100644 protocols/cursor-shape-v1-protocol.h delete mode 100644 protocols/ext-workspace-v1-protocol.c delete mode 100644 protocols/ext-workspace-v1-protocol.h delete mode 100644 protocols/peachwm-ipc-unstable-v2-protocol.c delete mode 100644 protocols/peachwm-ipc-unstable-v2-protocol.h delete mode 100644 protocols/pointer-constraints-unstable-v1-protocol.h delete mode 100644 protocols/wlr-layer-shell-unstable-v1-protocol.h delete mode 100644 protocols/wlr-output-power-management-unstable-v1-protocol.h delete mode 100644 protocols/xdg-shell-protocol.h diff --git a/peachmsg/peachmsg b/peachmsg/peachmsg deleted file mode 100755 index bb6c763c1accbc5e40d0557f44f3598ac644dd3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32712 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 -#include -#include -#include "wayland-util.h" - -#ifndef __has_attribute -# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ -#endif - -#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4) -#define WL_PRIVATE __attribute__ ((visibility("hidden"))) -#else -#define WL_PRIVATE -#endif - -extern const struct wl_interface wl_output_interface; -extern const struct wl_interface zpeachwm_ipc_output_v2_interface; - -static const struct wl_interface *peachwm_ipc_unstable_v2_types[] = { - NULL, - NULL, - NULL, - NULL, - &zpeachwm_ipc_output_v2_interface, - &wl_output_interface, -}; - -static const struct wl_message zpeachwm_ipc_manager_v2_requests[] = { - { "release", "", peachwm_ipc_unstable_v2_types + 0 }, - { "get_output", "no", peachwm_ipc_unstable_v2_types + 4 }, -}; - -static const struct wl_message zpeachwm_ipc_manager_v2_events[] = { - { "tags", "u", peachwm_ipc_unstable_v2_types + 0 }, - { "layout", "s", peachwm_ipc_unstable_v2_types + 0 }, -}; - -WL_PRIVATE const struct wl_interface zpeachwm_ipc_manager_v2_interface = { - "zpeachwm_ipc_manager_v2", 2, - 2, zpeachwm_ipc_manager_v2_requests, - 2, zpeachwm_ipc_manager_v2_events, -}; - -static const struct wl_message zpeachwm_ipc_output_v2_requests[] = { - { "release", "", peachwm_ipc_unstable_v2_types + 0 }, - { "set_tags", "uu", peachwm_ipc_unstable_v2_types + 0 }, - { "set_client_tags", "uu", peachwm_ipc_unstable_v2_types + 0 }, - { "set_layout", "u", peachwm_ipc_unstable_v2_types + 0 }, -}; - -static const struct wl_message zpeachwm_ipc_output_v2_events[] = { - { "toggle_visibility", "", peachwm_ipc_unstable_v2_types + 0 }, - { "active", "u", peachwm_ipc_unstable_v2_types + 0 }, - { "tag", "uuuu", peachwm_ipc_unstable_v2_types + 0 }, - { "layout", "u", peachwm_ipc_unstable_v2_types + 0 }, - { "title", "s", peachwm_ipc_unstable_v2_types + 0 }, - { "appid", "s", peachwm_ipc_unstable_v2_types + 0 }, - { "layout_symbol", "s", peachwm_ipc_unstable_v2_types + 0 }, - { "frame", "", peachwm_ipc_unstable_v2_types + 0 }, - { "fullscreen", "2u", peachwm_ipc_unstable_v2_types + 0 }, - { "floating", "2u", peachwm_ipc_unstable_v2_types + 0 }, -}; - -WL_PRIVATE const struct wl_interface zpeachwm_ipc_output_v2_interface = { - "zpeachwm_ipc_output_v2", 2, - 4, zpeachwm_ipc_output_v2_requests, - 10, zpeachwm_ipc_output_v2_events, -}; - diff --git a/peachmsg/peachwm-ipc-unstable-v2-protocol.h b/peachmsg/peachwm-ipc-unstable-v2-protocol.h deleted file mode 100644 index ca47b95..0000000 --- a/peachmsg/peachwm-ipc-unstable-v2-protocol.h +++ /dev/null @@ -1,484 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -#ifndef PEACHWM_IPC_UNSTABLE_V2_CLIENT_PROTOCOL_H -#define PEACHWM_IPC_UNSTABLE_V2_CLIENT_PROTOCOL_H - -#include -#include -#include "wayland-client.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @page page_peachwm_ipc_unstable_v2 The peachwm_ipc_unstable_v2 protocol - * @section page_ifaces_peachwm_ipc_unstable_v2 Interfaces - * - @subpage page_iface_zpeachwm_ipc_manager_v2 - manage peachwm state - * - @subpage page_iface_zpeachwm_ipc_output_v2 - interact with peachwm output state - * @section page_copyright_peachwm_ipc_unstable_v2 Copyright - *
- *
- * Copyright (C) 2022 Russell Newcomb
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * 
- */ -struct wl_output; -struct zpeachwm_ipc_manager_v2; -struct zpeachwm_ipc_output_v2; - -#ifndef ZPEACHWM_IPC_MANAGER_V2_INTERFACE -#define ZPEACHWM_IPC_MANAGER_V2_INTERFACE -/** - * @page page_iface_zpeachwm_ipc_manager_v2 zpeachwm_ipc_manager_v2 - * @section page_iface_zpeachwm_ipc_manager_v2_desc Description - * - * This interface is exposed as a global in the Wayland registry and allows - * clients to query and set peachwm state. - * - * Warning! The protocol described in this file is experimental and - * backward incompatible changes may be made. Backward compatible changes - * may be added together with the corresponding interface version bump. - * Backward incompatible changes are done by bumping the version number in - * the protocol and interface names and resetting the interface version. - * Once the protocol is to be declared stable, the 'z' prefix and the - * version number in the protocol and interface names are removed and the - * interface version is reset. - * @section page_iface_zpeachwm_ipc_manager_v2_api API - * See @ref iface_zpeachwm_ipc_manager_v2. - */ -/** - * @defgroup iface_zpeachwm_ipc_manager_v2 The zpeachwm_ipc_manager_v2 interface - * - * This interface is exposed as a global in the Wayland registry and allows - * clients to query and set peachwm state. - * - * Warning! The protocol described in this file is experimental and - * backward incompatible changes may be made. Backward compatible changes - * may be added together with the corresponding interface version bump. - * Backward incompatible changes are done by bumping the version number in - * the protocol and interface names and resetting the interface version. - * Once the protocol is to be declared stable, the 'z' prefix and the - * version number in the protocol and interface names are removed and the - * interface version is reset. - */ -extern const struct wl_interface zpeachwm_ipc_manager_v2_interface; -#endif -#ifndef ZPEACHWM_IPC_OUTPUT_V2_INTERFACE -#define ZPEACHWM_IPC_OUTPUT_V2_INTERFACE -/** - * @page page_iface_zpeachwm_ipc_output_v2 zpeachwm_ipc_output_v2 - * @section page_iface_zpeachwm_ipc_output_v2_desc Description - * - * Observe and control a peachwm output. - * @section page_iface_zpeachwm_ipc_output_v2_api API - * See @ref iface_zpeachwm_ipc_output_v2. - */ -/** - * @defgroup iface_zpeachwm_ipc_output_v2 The zpeachwm_ipc_output_v2 interface - * - * Observe and control a peachwm output. - */ -extern const struct wl_interface zpeachwm_ipc_output_v2_interface; -#endif - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - * @struct zpeachwm_ipc_manager_v2_listener - */ -struct zpeachwm_ipc_manager_v2_listener { - /** - * announces number of tags - * - * This event is sent after binding and announces the number of - * tags. - */ - void (*tags)(void *data, - struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2, - uint32_t amount); - /** - * announces a layout - * - * This event is sent after binding and announces a layout. - * Layouts are announced in order. - */ - void (*layout)(void *data, - struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2, - const char *name); -}; - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -static inline int -zpeachwm_ipc_manager_v2_add_listener(struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2, - const struct zpeachwm_ipc_manager_v2_listener *listener, void *data) -{ - return wl_proxy_add_listener((struct wl_proxy *) zpeachwm_ipc_manager_v2, - (void (**)(void)) listener, data); -} - -#define ZPEACHWM_IPC_MANAGER_V2_RELEASE 0 -#define ZPEACHWM_IPC_MANAGER_V2_GET_OUTPUT 1 - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_TAGS_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_LAYOUT_SINCE_VERSION 1 - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_RELEASE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_GET_OUTPUT_SINCE_VERSION 1 - -/** @ingroup iface_zpeachwm_ipc_manager_v2 */ -static inline void -zpeachwm_ipc_manager_v2_set_user_data(struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2, void *user_data) -{ - wl_proxy_set_user_data((struct wl_proxy *) zpeachwm_ipc_manager_v2, user_data); -} - -/** @ingroup iface_zpeachwm_ipc_manager_v2 */ -static inline void * -zpeachwm_ipc_manager_v2_get_user_data(struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2) -{ - return wl_proxy_get_user_data((struct wl_proxy *) zpeachwm_ipc_manager_v2); -} - -static inline uint32_t -zpeachwm_ipc_manager_v2_get_version(struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2) -{ - return wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_manager_v2); -} - -/** @ingroup iface_zpeachwm_ipc_manager_v2 */ -static inline void -zpeachwm_ipc_manager_v2_destroy(struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2) -{ - wl_proxy_destroy((struct wl_proxy *) zpeachwm_ipc_manager_v2); -} - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - * - * Indicates that the client will not use the manager object anymore. - * Objects created through this interface remain valid. - */ -static inline void -zpeachwm_ipc_manager_v2_release(struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2) -{ - wl_proxy_marshal_flags((struct wl_proxy *) zpeachwm_ipc_manager_v2, - ZPEACHWM_IPC_MANAGER_V2_RELEASE, NULL, wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_manager_v2), WL_MARSHAL_FLAG_DESTROY); -} - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - * - * Get a peachwm_ipc_output for the given wl_output. - */ -static inline struct zpeachwm_ipc_output_v2 * -zpeachwm_ipc_manager_v2_get_output(struct zpeachwm_ipc_manager_v2 *zpeachwm_ipc_manager_v2, struct wl_output *output) -{ - struct wl_proxy *id; - - id = wl_proxy_marshal_flags((struct wl_proxy *) zpeachwm_ipc_manager_v2, - ZPEACHWM_IPC_MANAGER_V2_GET_OUTPUT, &zpeachwm_ipc_output_v2_interface, wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_manager_v2), 0, NULL, output); - - return (struct zpeachwm_ipc_output_v2 *) id; -} - -#ifndef ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM -#define ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM -enum zpeachwm_ipc_output_v2_tag_state { - /** - * no state - */ - ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_NONE = 0, - /** - * tag is active - */ - ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ACTIVE = 1, - /** - * tag has urgent client - */ - ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_URGENT = 2, -}; -#endif /* ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM */ - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * @struct zpeachwm_ipc_output_v2_listener - */ -struct zpeachwm_ipc_output_v2_listener { - /** - * peachwm visibility has been toggled - * - * Indicates that peachwm visibility has been toggled. - */ - void (*toggle_visibility)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2); - /** - * output is active - * - * Indicates the output is active (selected monitor). - */ - void (*active)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - uint32_t active); - /** - * tag state changed - * - * Indicates a tag state change. - * @param tag index of the tag - * @param state state of the tag - * @param clients number of clients in tag - * @param focused 1 if focused client is in this tag - */ - void (*tag)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - uint32_t tag, - uint32_t state, - uint32_t clients, - uint32_t focused); - /** - * layout changed - * - * Indicates the layout changed. - * @param layout index of the layout - */ - void (*layout)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - uint32_t layout); - /** - * title changed - * - * Indicates the focused client title changed. - */ - void (*title)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - const char *title); - /** - * appid changed - * - * Indicates the focused client appid changed. - */ - void (*appid)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - const char *appid); - /** - * layout symbol changed - * - * Indicates the layout symbol changed. - */ - void (*layout_symbol)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - const char *layout); - /** - * frame event - * - * Sent after all state events have been sent for a given state - * change. - */ - void (*frame)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2); - /** - * fullscreen state changed - * - * Indicates the fullscreen state changed. - * @since 2 - */ - void (*fullscreen)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - uint32_t is_fullscreen); - /** - * floating state changed - * - * Indicates the floating state changed. - * @since 2 - */ - void (*floating)(void *data, - struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - uint32_t is_floating); -}; - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -static inline int -zpeachwm_ipc_output_v2_add_listener(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, - const struct zpeachwm_ipc_output_v2_listener *listener, void *data) -{ - return wl_proxy_add_listener((struct wl_proxy *) zpeachwm_ipc_output_v2, - (void (**)(void)) listener, data); -} - -#define ZPEACHWM_IPC_OUTPUT_V2_RELEASE 0 -#define ZPEACHWM_IPC_OUTPUT_V2_SET_TAGS 1 -#define ZPEACHWM_IPC_OUTPUT_V2_SET_CLIENT_TAGS 2 -#define ZPEACHWM_IPC_OUTPUT_V2_SET_LAYOUT 3 - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_TOGGLE_VISIBILITY_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_ACTIVE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_TAG_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_LAYOUT_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_TITLE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_APPID_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_LAYOUT_SYMBOL_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_FRAME_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_FULLSCREEN_SINCE_VERSION 2 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_FLOATING_SINCE_VERSION 2 - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_RELEASE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_SET_TAGS_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_SET_CLIENT_TAGS_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_SET_LAYOUT_SINCE_VERSION 1 - -/** @ingroup iface_zpeachwm_ipc_output_v2 */ -static inline void -zpeachwm_ipc_output_v2_set_user_data(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, void *user_data) -{ - wl_proxy_set_user_data((struct wl_proxy *) zpeachwm_ipc_output_v2, user_data); -} - -/** @ingroup iface_zpeachwm_ipc_output_v2 */ -static inline void * -zpeachwm_ipc_output_v2_get_user_data(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2) -{ - return wl_proxy_get_user_data((struct wl_proxy *) zpeachwm_ipc_output_v2); -} - -static inline uint32_t -zpeachwm_ipc_output_v2_get_version(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2) -{ - return wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_output_v2); -} - -/** @ingroup iface_zpeachwm_ipc_output_v2 */ -static inline void -zpeachwm_ipc_output_v2_destroy(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2) -{ - wl_proxy_destroy((struct wl_proxy *) zpeachwm_ipc_output_v2); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * - * Indicates that the client will not use the peachwm_ipc_output object - * anymore. Objects created through this interface remain valid. - */ -static inline void -zpeachwm_ipc_output_v2_release(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2) -{ - wl_proxy_marshal_flags((struct wl_proxy *) zpeachwm_ipc_output_v2, - ZPEACHWM_IPC_OUTPUT_V2_RELEASE, NULL, wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_output_v2), WL_MARSHAL_FLAG_DESTROY); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * - * set the active tags of this output. - */ -static inline void -zpeachwm_ipc_output_v2_set_tags(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, uint32_t tagmask, uint32_t toggle_tagset) -{ - wl_proxy_marshal_flags((struct wl_proxy *) zpeachwm_ipc_output_v2, - ZPEACHWM_IPC_OUTPUT_V2_SET_TAGS, NULL, wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_output_v2), 0, tagmask, toggle_tagset); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * - * Set the tags of the focused client. - */ -static inline void -zpeachwm_ipc_output_v2_set_client_tags(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, uint32_t and_tags, uint32_t xor_tags) -{ - wl_proxy_marshal_flags((struct wl_proxy *) zpeachwm_ipc_output_v2, - ZPEACHWM_IPC_OUTPUT_V2_SET_CLIENT_TAGS, NULL, wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_output_v2), 0, and_tags, xor_tags); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * - * Set the layout of this output. - */ -static inline void -zpeachwm_ipc_output_v2_set_layout(struct zpeachwm_ipc_output_v2 *zpeachwm_ipc_output_v2, uint32_t index) -{ - wl_proxy_marshal_flags((struct wl_proxy *) zpeachwm_ipc_output_v2, - ZPEACHWM_IPC_OUTPUT_V2_SET_LAYOUT, NULL, wl_proxy_get_version((struct wl_proxy *) zpeachwm_ipc_output_v2), 0, index); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/peachwm b/peachwm deleted file mode 100755 index a9452afe55f521377e601564d82ff54a190d5be5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631120 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%0D`0~%Ekk{c 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

mFvdY{``U7>J)ymw<6IY#7t4wLKT3&a7R;Dze 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 z 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 -#include -#include "wayland-server.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct wl_client; -struct wl_resource; - -/** - * @page page_cursor_shape_v1 The cursor_shape_v1 protocol - * @section page_ifaces_cursor_shape_v1 Interfaces - * - @subpage page_iface_wp_cursor_shape_manager_v1 - cursor shape manager - * - @subpage page_iface_wp_cursor_shape_device_v1 - cursor shape for a device - * @section page_copyright_cursor_shape_v1 Copyright - *

- *
- * Copyright 2018 The Chromium Authors
- * Copyright 2023 Simon Ser
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * 
- */ -struct wl_pointer; -struct wp_cursor_shape_device_v1; -struct wp_cursor_shape_manager_v1; -struct zwp_tablet_tool_v2; - -#ifndef WP_CURSOR_SHAPE_MANAGER_V1_INTERFACE -#define WP_CURSOR_SHAPE_MANAGER_V1_INTERFACE -/** - * @page page_iface_wp_cursor_shape_manager_v1 wp_cursor_shape_manager_v1 - * @section page_iface_wp_cursor_shape_manager_v1_desc Description - * - * This global offers an alternative, optional way to set cursor images. This - * new way uses enumerated cursors instead of a wl_surface like - * wl_pointer.set_cursor does. - * - * Warning! The protocol described in this file is currently in the testing - * phase. Backward compatible changes may be added together with the - * corresponding interface version bump. Backward incompatible changes can - * only be done by creating a new major version of the extension. - * @section page_iface_wp_cursor_shape_manager_v1_api API - * See @ref iface_wp_cursor_shape_manager_v1. - */ -/** - * @defgroup iface_wp_cursor_shape_manager_v1 The wp_cursor_shape_manager_v1 interface - * - * This global offers an alternative, optional way to set cursor images. This - * new way uses enumerated cursors instead of a wl_surface like - * wl_pointer.set_cursor does. - * - * Warning! The protocol described in this file is currently in the testing - * phase. Backward compatible changes may be added together with the - * corresponding interface version bump. Backward incompatible changes can - * only be done by creating a new major version of the extension. - */ -extern const struct wl_interface wp_cursor_shape_manager_v1_interface; -#endif -#ifndef WP_CURSOR_SHAPE_DEVICE_V1_INTERFACE -#define WP_CURSOR_SHAPE_DEVICE_V1_INTERFACE -/** - * @page page_iface_wp_cursor_shape_device_v1 wp_cursor_shape_device_v1 - * @section page_iface_wp_cursor_shape_device_v1_desc Description - * - * This interface allows clients to set the cursor shape. - * @section page_iface_wp_cursor_shape_device_v1_api API - * See @ref iface_wp_cursor_shape_device_v1. - */ -/** - * @defgroup iface_wp_cursor_shape_device_v1 The wp_cursor_shape_device_v1 interface - * - * This interface allows clients to set the cursor shape. - */ -extern const struct wl_interface wp_cursor_shape_device_v1_interface; -#endif - -/** - * @ingroup iface_wp_cursor_shape_manager_v1 - * @struct wp_cursor_shape_manager_v1_interface - */ -struct wp_cursor_shape_manager_v1_interface { - /** - * destroy the manager - * - * Destroy the cursor shape manager. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * manage the cursor shape of a pointer device - * - * Obtain a wp_cursor_shape_device_v1 for a wl_pointer object. - * - * When the pointer capability is removed from the wl_seat, the - * wp_cursor_shape_device_v1 object becomes inert. - */ - void (*get_pointer)(struct wl_client *client, - struct wl_resource *resource, - uint32_t cursor_shape_device, - struct wl_resource *pointer); - /** - * manage the cursor shape of a tablet tool device - * - * Obtain a wp_cursor_shape_device_v1 for a zwp_tablet_tool_v2 - * object. - * - * When the zwp_tablet_tool_v2 is removed, the - * wp_cursor_shape_device_v1 object becomes inert. - */ - void (*get_tablet_tool_v2)(struct wl_client *client, - struct wl_resource *resource, - uint32_t cursor_shape_device, - struct wl_resource *tablet_tool); -}; - - -/** - * @ingroup iface_wp_cursor_shape_manager_v1 - */ -#define WP_CURSOR_SHAPE_MANAGER_V1_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_wp_cursor_shape_manager_v1 - */ -#define WP_CURSOR_SHAPE_MANAGER_V1_GET_POINTER_SINCE_VERSION 1 -/** - * @ingroup iface_wp_cursor_shape_manager_v1 - */ -#define WP_CURSOR_SHAPE_MANAGER_V1_GET_TABLET_TOOL_V2_SINCE_VERSION 1 - -#ifndef WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ENUM -#define WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ENUM -/** - * @ingroup iface_wp_cursor_shape_device_v1 - * cursor shapes - * - * This enum describes cursor shapes. - * - * The names are taken from the CSS W3C specification: - * https://w3c.github.io/csswg-drafts/css-ui/#cursor - * with a few additions. - * - * Note that there are some groups of cursor shapes that are related: - * The first group is drag-and-drop cursors which are used to indicate - * the selected action during dnd operations. The second group is resize - * cursors which are used to indicate resizing and moving possibilities - * on window borders. It is recommended that the shapes in these groups - * should use visually compatible images and metaphors. - */ -enum wp_cursor_shape_device_v1_shape { - /** - * default cursor - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_DEFAULT = 1, - /** - * a context menu is available for the object under the cursor - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_CONTEXT_MENU = 2, - /** - * help is available for the object under the cursor - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_HELP = 3, - /** - * pointer that indicates a link or another interactive element - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_POINTER = 4, - /** - * progress indicator - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_PROGRESS = 5, - /** - * program is busy, user should wait - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_WAIT = 6, - /** - * a cell or set of cells may be selected - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_CELL = 7, - /** - * simple crosshair - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_CROSSHAIR = 8, - /** - * text may be selected - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_TEXT = 9, - /** - * vertical text may be selected - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_VERTICAL_TEXT = 10, - /** - * drag-and-drop: alias of/shortcut to something is to be created - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ALIAS = 11, - /** - * drag-and-drop: something is to be copied - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_COPY = 12, - /** - * drag-and-drop: something is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_MOVE = 13, - /** - * drag-and-drop: the dragged item cannot be dropped at the current cursor location - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NO_DROP = 14, - /** - * drag-and-drop: the requested action will not be carried out - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NOT_ALLOWED = 15, - /** - * drag-and-drop: something can be grabbed - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_GRAB = 16, - /** - * drag-and-drop: something is being grabbed - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_GRABBING = 17, - /** - * resizing: the east border is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_E_RESIZE = 18, - /** - * resizing: the north border is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_N_RESIZE = 19, - /** - * resizing: the north-east corner is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NE_RESIZE = 20, - /** - * resizing: the north-west corner is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NW_RESIZE = 21, - /** - * resizing: the south border is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_S_RESIZE = 22, - /** - * resizing: the south-east corner is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_SE_RESIZE = 23, - /** - * resizing: the south-west corner is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_SW_RESIZE = 24, - /** - * resizing: the west border is to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_W_RESIZE = 25, - /** - * resizing: the east and west borders are to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_EW_RESIZE = 26, - /** - * resizing: the north and south borders are to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NS_RESIZE = 27, - /** - * resizing: the north-east and south-west corners are to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NESW_RESIZE = 28, - /** - * resizing: the north-west and south-east corners are to be moved - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NWSE_RESIZE = 29, - /** - * resizing: that the item/column can be resized horizontally - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_COL_RESIZE = 30, - /** - * resizing: that the item/row can be resized vertically - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ROW_RESIZE = 31, - /** - * something can be scrolled in any direction - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ALL_SCROLL = 32, - /** - * something can be zoomed in - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ZOOM_IN = 33, - /** - * something can be zoomed out - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ZOOM_OUT = 34, - /** - * drag-and-drop: the user will select which action will be carried out (non-css value) - * @since 2 - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_DND_ASK = 35, - /** - * resizing: something can be moved or resized in any direction (non-css value) - * @since 2 - */ - WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ALL_RESIZE = 36, -}; -/** - * @ingroup iface_wp_cursor_shape_device_v1 - */ -#define WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_DND_ASK_SINCE_VERSION 2 -/** - * @ingroup iface_wp_cursor_shape_device_v1 - */ -#define WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ALL_RESIZE_SINCE_VERSION 2 -#endif /* WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ENUM */ - -#ifndef WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ENUM_IS_VALID -#define WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ENUM_IS_VALID -/** - * @ingroup iface_wp_cursor_shape_device_v1 - * Validate a wp_cursor_shape_device_v1 shape value. - * - * @return true on success, false on error. - * @ref wp_cursor_shape_device_v1_shape - */ -static inline bool -wp_cursor_shape_device_v1_shape_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_DEFAULT: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_CONTEXT_MENU: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_HELP: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_POINTER: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_PROGRESS: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_WAIT: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_CELL: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_CROSSHAIR: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_TEXT: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_VERTICAL_TEXT: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ALIAS: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_COPY: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_MOVE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NO_DROP: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NOT_ALLOWED: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_GRAB: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_GRABBING: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_E_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_N_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NE_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NW_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_S_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_SE_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_SW_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_W_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_EW_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NS_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NESW_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_NWSE_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_COL_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ROW_RESIZE: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ALL_SCROLL: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ZOOM_IN: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ZOOM_OUT: - return version >= 1; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_DND_ASK: - return version >= 2; - case WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ALL_RESIZE: - return version >= 2; - default: - return false; - } -} -#endif /* WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_ENUM_IS_VALID */ - -#ifndef WP_CURSOR_SHAPE_DEVICE_V1_ERROR_ENUM -#define WP_CURSOR_SHAPE_DEVICE_V1_ERROR_ENUM -enum wp_cursor_shape_device_v1_error { - /** - * the specified shape value is invalid - */ - WP_CURSOR_SHAPE_DEVICE_V1_ERROR_INVALID_SHAPE = 1, -}; -#endif /* WP_CURSOR_SHAPE_DEVICE_V1_ERROR_ENUM */ - -#ifndef WP_CURSOR_SHAPE_DEVICE_V1_ERROR_ENUM_IS_VALID -#define WP_CURSOR_SHAPE_DEVICE_V1_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_wp_cursor_shape_device_v1 - * Validate a wp_cursor_shape_device_v1 error value. - * - * @return true on success, false on error. - * @ref wp_cursor_shape_device_v1_error - */ -static inline bool -wp_cursor_shape_device_v1_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case WP_CURSOR_SHAPE_DEVICE_V1_ERROR_INVALID_SHAPE: - return version >= 1; - default: - return false; - } -} -#endif /* WP_CURSOR_SHAPE_DEVICE_V1_ERROR_ENUM_IS_VALID */ - -/** - * @ingroup iface_wp_cursor_shape_device_v1 - * @struct wp_cursor_shape_device_v1_interface - */ -struct wp_cursor_shape_device_v1_interface { - /** - * destroy the cursor shape device - * - * Destroy the cursor shape device. - * - * The device cursor shape remains unchanged. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * set device cursor to the shape - * - * Sets the device cursor to the specified shape. The compositor - * will change the cursor image based on the specified shape. - * - * The cursor actually changes only if the input device focus is - * one of the requesting client's surfaces. If any, the previous - * cursor image (surface or shape) is replaced. - * - * The "shape" argument must be a valid enum entry, otherwise the - * invalid_shape protocol error is raised. - * - * This is similar to the wl_pointer.set_cursor and - * zwp_tablet_tool_v2.set_cursor requests, but this request accepts - * a shape instead of contents in the form of a surface. Clients - * can mix set_cursor and set_shape requests. - * - * The serial parameter must match the latest wl_pointer.enter or - * zwp_tablet_tool_v2.proximity_in serial number sent to the - * client. Otherwise the request will be ignored. - * @param serial serial number of the enter event - */ - void (*set_shape)(struct wl_client *client, - struct wl_resource *resource, - uint32_t serial, - uint32_t shape); -}; - - -/** - * @ingroup iface_wp_cursor_shape_device_v1 - */ -#define WP_CURSOR_SHAPE_DEVICE_V1_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_wp_cursor_shape_device_v1 - */ -#define WP_CURSOR_SHAPE_DEVICE_V1_SET_SHAPE_SINCE_VERSION 1 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/ext-workspace-v1-protocol.c b/protocols/ext-workspace-v1-protocol.c deleted file mode 100644 index 605fefb..0000000 --- a/protocols/ext-workspace-v1-protocol.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -/* - * Copyright © 2019 Christopher Billington - * Copyright © 2020 Ilia Bozhinov - * Copyright © 2022 Victoria Brekenfeld - * - * Permission to use, copy, modify, distribute, and sell this - * software and its documentation for any purpose is hereby granted - * without fee, provided that the above copyright notice appear in - * all copies and that both that copyright notice and this permission - * notice appear in supporting documentation, and that the name of - * the copyright holders not be used in advertising or publicity - * pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied - * warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, - * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ - -#include -#include -#include -#include "wayland-util.h" - -#ifndef __has_attribute -# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ -#endif - -#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4) -#define WL_PRIVATE __attribute__ ((visibility("hidden"))) -#else -#define WL_PRIVATE -#endif - -extern const struct wl_interface ext_workspace_group_handle_v1_interface; -extern const struct wl_interface ext_workspace_handle_v1_interface; -extern const struct wl_interface wl_output_interface; - -static const struct wl_interface *ext_workspace_v1_types[] = { - NULL, - &ext_workspace_group_handle_v1_interface, - &ext_workspace_handle_v1_interface, - &wl_output_interface, - &wl_output_interface, - &ext_workspace_handle_v1_interface, - &ext_workspace_handle_v1_interface, - &ext_workspace_group_handle_v1_interface, -}; - -static const struct wl_message ext_workspace_manager_v1_requests[] = { - { "commit", "", ext_workspace_v1_types + 0 }, - { "stop", "", ext_workspace_v1_types + 0 }, -}; - -static const struct wl_message ext_workspace_manager_v1_events[] = { - { "workspace_group", "n", ext_workspace_v1_types + 1 }, - { "workspace", "n", ext_workspace_v1_types + 2 }, - { "done", "", ext_workspace_v1_types + 0 }, - { "finished", "", ext_workspace_v1_types + 0 }, -}; - -WL_PRIVATE const struct wl_interface ext_workspace_manager_v1_interface = { - "ext_workspace_manager_v1", 1, - 2, ext_workspace_manager_v1_requests, - 4, ext_workspace_manager_v1_events, -}; - -static const struct wl_message ext_workspace_group_handle_v1_requests[] = { - { "create_workspace", "s", ext_workspace_v1_types + 0 }, - { "destroy", "", ext_workspace_v1_types + 0 }, -}; - -static const struct wl_message ext_workspace_group_handle_v1_events[] = { - { "capabilities", "u", ext_workspace_v1_types + 0 }, - { "output_enter", "o", ext_workspace_v1_types + 3 }, - { "output_leave", "o", ext_workspace_v1_types + 4 }, - { "workspace_enter", "o", ext_workspace_v1_types + 5 }, - { "workspace_leave", "o", ext_workspace_v1_types + 6 }, - { "removed", "", ext_workspace_v1_types + 0 }, -}; - -WL_PRIVATE const struct wl_interface ext_workspace_group_handle_v1_interface = { - "ext_workspace_group_handle_v1", 1, - 2, ext_workspace_group_handle_v1_requests, - 6, ext_workspace_group_handle_v1_events, -}; - -static const struct wl_message ext_workspace_handle_v1_requests[] = { - { "destroy", "", ext_workspace_v1_types + 0 }, - { "activate", "", ext_workspace_v1_types + 0 }, - { "deactivate", "", ext_workspace_v1_types + 0 }, - { "assign", "o", ext_workspace_v1_types + 7 }, - { "remove", "", ext_workspace_v1_types + 0 }, -}; - -static const struct wl_message ext_workspace_handle_v1_events[] = { - { "id", "s", ext_workspace_v1_types + 0 }, - { "name", "s", ext_workspace_v1_types + 0 }, - { "coordinates", "a", ext_workspace_v1_types + 0 }, - { "state", "u", ext_workspace_v1_types + 0 }, - { "capabilities", "u", ext_workspace_v1_types + 0 }, - { "removed", "", ext_workspace_v1_types + 0 }, -}; - -WL_PRIVATE const struct wl_interface ext_workspace_handle_v1_interface = { - "ext_workspace_handle_v1", 1, - 5, ext_workspace_handle_v1_requests, - 6, ext_workspace_handle_v1_events, -}; - diff --git a/protocols/ext-workspace-v1-protocol.h b/protocols/ext-workspace-v1-protocol.h deleted file mode 100644 index 34ae038..0000000 --- a/protocols/ext-workspace-v1-protocol.h +++ /dev/null @@ -1,752 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -#ifndef EXT_WORKSPACE_V1_SERVER_PROTOCOL_H -#define EXT_WORKSPACE_V1_SERVER_PROTOCOL_H - -#include -#include -#include "wayland-server.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct wl_client; -struct wl_resource; - -/** - * @page page_ext_workspace_v1 The ext_workspace_v1 protocol - * @section page_ifaces_ext_workspace_v1 Interfaces - * - @subpage page_iface_ext_workspace_manager_v1 - list and control workspaces - * - @subpage page_iface_ext_workspace_group_handle_v1 - a workspace group assigned to a set of outputs - * - @subpage page_iface_ext_workspace_handle_v1 - a workspace handing a group of surfaces - * @section page_copyright_ext_workspace_v1 Copyright - *
- *
- * Copyright © 2019 Christopher Billington
- * Copyright © 2020 Ilia Bozhinov
- * Copyright © 2022 Victoria Brekenfeld
- *
- * Permission to use, copy, modify, distribute, and sell this
- * software and its documentation for any purpose is hereby granted
- * without fee, provided that the above copyright notice appear in
- * all copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * the copyright holders not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission.  The copyright holders make no
- * representations about the suitability of this software for any
- * purpose.  It is provided "as is" without express or implied
- * warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- * 
- */ -struct ext_workspace_group_handle_v1; -struct ext_workspace_handle_v1; -struct ext_workspace_manager_v1; -struct wl_output; - -#ifndef EXT_WORKSPACE_MANAGER_V1_INTERFACE -#define EXT_WORKSPACE_MANAGER_V1_INTERFACE -/** - * @page page_iface_ext_workspace_manager_v1 ext_workspace_manager_v1 - * @section page_iface_ext_workspace_manager_v1_desc Description - * - * Workspaces, also called virtual desktops, are groups of surfaces. A - * compositor with a concept of workspaces may only show some such groups of - * surfaces (those of 'active' workspaces) at a time. 'Activating' a - * workspace is a request for the compositor to display that workspace's - * surfaces as normal, whereas the compositor may hide or otherwise - * de-emphasise surfaces that are associated only with 'inactive' workspaces. - * Workspaces are grouped by which sets of outputs they correspond to, and - * may contain surfaces only from those outputs. In this way, it is possible - * for each output to have its own set of workspaces, or for all outputs (or - * any other arbitrary grouping) to share workspaces. Compositors may - * optionally conceptually arrange each group of workspaces in an - * N-dimensional grid. - * - * The purpose of this protocol is to enable the creation of taskbars and - * docks by providing them with a list of workspaces and their properties, - * and allowing them to activate and deactivate workspaces. - * - * After a client binds the ext_workspace_manager_v1, each workspace will be - * sent via the workspace event. - * @section page_iface_ext_workspace_manager_v1_api API - * See @ref iface_ext_workspace_manager_v1. - */ -/** - * @defgroup iface_ext_workspace_manager_v1 The ext_workspace_manager_v1 interface - * - * Workspaces, also called virtual desktops, are groups of surfaces. A - * compositor with a concept of workspaces may only show some such groups of - * surfaces (those of 'active' workspaces) at a time. 'Activating' a - * workspace is a request for the compositor to display that workspace's - * surfaces as normal, whereas the compositor may hide or otherwise - * de-emphasise surfaces that are associated only with 'inactive' workspaces. - * Workspaces are grouped by which sets of outputs they correspond to, and - * may contain surfaces only from those outputs. In this way, it is possible - * for each output to have its own set of workspaces, or for all outputs (or - * any other arbitrary grouping) to share workspaces. Compositors may - * optionally conceptually arrange each group of workspaces in an - * N-dimensional grid. - * - * The purpose of this protocol is to enable the creation of taskbars and - * docks by providing them with a list of workspaces and their properties, - * and allowing them to activate and deactivate workspaces. - * - * After a client binds the ext_workspace_manager_v1, each workspace will be - * sent via the workspace event. - */ -extern const struct wl_interface ext_workspace_manager_v1_interface; -#endif -#ifndef EXT_WORKSPACE_GROUP_HANDLE_V1_INTERFACE -#define EXT_WORKSPACE_GROUP_HANDLE_V1_INTERFACE -/** - * @page page_iface_ext_workspace_group_handle_v1 ext_workspace_group_handle_v1 - * @section page_iface_ext_workspace_group_handle_v1_desc Description - * - * A ext_workspace_group_handle_v1 object represents a workspace group - * that is assigned a set of outputs and contains a number of workspaces. - * - * The set of outputs assigned to the workspace group is conveyed to the client via - * output_enter and output_leave events, and its workspaces are conveyed with - * workspace events. - * - * For example, a compositor which has a set of workspaces for each output may - * advertise a workspace group (and its workspaces) per output, whereas a compositor - * where a workspace spans all outputs may advertise a single workspace group for all - * outputs. - * @section page_iface_ext_workspace_group_handle_v1_api API - * See @ref iface_ext_workspace_group_handle_v1. - */ -/** - * @defgroup iface_ext_workspace_group_handle_v1 The ext_workspace_group_handle_v1 interface - * - * A ext_workspace_group_handle_v1 object represents a workspace group - * that is assigned a set of outputs and contains a number of workspaces. - * - * The set of outputs assigned to the workspace group is conveyed to the client via - * output_enter and output_leave events, and its workspaces are conveyed with - * workspace events. - * - * For example, a compositor which has a set of workspaces for each output may - * advertise a workspace group (and its workspaces) per output, whereas a compositor - * where a workspace spans all outputs may advertise a single workspace group for all - * outputs. - */ -extern const struct wl_interface ext_workspace_group_handle_v1_interface; -#endif -#ifndef EXT_WORKSPACE_HANDLE_V1_INTERFACE -#define EXT_WORKSPACE_HANDLE_V1_INTERFACE -/** - * @page page_iface_ext_workspace_handle_v1 ext_workspace_handle_v1 - * @section page_iface_ext_workspace_handle_v1_desc Description - * - * A ext_workspace_handle_v1 object represents a workspace that handles a - * group of surfaces. - * - * Each workspace has: - * - a name, conveyed to the client with the name event - * - potentially an id conveyed with the id event - * - a list of states, conveyed to the client with the state event - * - and optionally a set of coordinates, conveyed to the client with the - * coordinates event - * - * The client may request that the compositor activate or deactivate the workspace. - * - * Each workspace can belong to only a single workspace group. - * Depending on the compositor policy, there might be workspaces with - * the same name in different workspace groups, but these workspaces are still - * separate (e.g. one of them might be active while the other is not). - * @section page_iface_ext_workspace_handle_v1_api API - * See @ref iface_ext_workspace_handle_v1. - */ -/** - * @defgroup iface_ext_workspace_handle_v1 The ext_workspace_handle_v1 interface - * - * A ext_workspace_handle_v1 object represents a workspace that handles a - * group of surfaces. - * - * Each workspace has: - * - a name, conveyed to the client with the name event - * - potentially an id conveyed with the id event - * - a list of states, conveyed to the client with the state event - * - and optionally a set of coordinates, conveyed to the client with the - * coordinates event - * - * The client may request that the compositor activate or deactivate the workspace. - * - * Each workspace can belong to only a single workspace group. - * Depending on the compositor policy, there might be workspaces with - * the same name in different workspace groups, but these workspaces are still - * separate (e.g. one of them might be active while the other is not). - */ -extern const struct wl_interface ext_workspace_handle_v1_interface; -#endif - -/** - * @ingroup iface_ext_workspace_manager_v1 - * @struct ext_workspace_manager_v1_interface - */ -struct ext_workspace_manager_v1_interface { - /** - * all requests about the workspaces have been sent - * - * The client must send this request after it has finished - * sending other requests. The compositor must process a series of - * requests preceding a commit request atomically. - * - * This allows changes to the workspace properties to be seen as - * atomic, even if they happen via multiple events, and even if - * they involve multiple ext_workspace_handle_v1 objects, for - * example, deactivating one workspace and activating another. - */ - void (*commit)(struct wl_client *client, - struct wl_resource *resource); - /** - * stop sending events - * - * Indicates the client no longer wishes to receive events for - * new workspace groups. However the compositor may emit further - * workspace events, until the finished event is emitted. The - * compositor is expected to send the finished event eventually - * once the stop request has been processed. - * - * The client must not send any requests after this one, doing so - * will raise a wl_display invalid_object error. - */ - void (*stop)(struct wl_client *client, - struct wl_resource *resource); -}; - -#define EXT_WORKSPACE_MANAGER_V1_WORKSPACE_GROUP 0 -#define EXT_WORKSPACE_MANAGER_V1_WORKSPACE 1 -#define EXT_WORKSPACE_MANAGER_V1_DONE 2 -#define EXT_WORKSPACE_MANAGER_V1_FINISHED 3 - -/** - * @ingroup iface_ext_workspace_manager_v1 - */ -#define EXT_WORKSPACE_MANAGER_V1_WORKSPACE_GROUP_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_manager_v1 - */ -#define EXT_WORKSPACE_MANAGER_V1_WORKSPACE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_manager_v1 - */ -#define EXT_WORKSPACE_MANAGER_V1_DONE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_manager_v1 - */ -#define EXT_WORKSPACE_MANAGER_V1_FINISHED_SINCE_VERSION 1 - -/** - * @ingroup iface_ext_workspace_manager_v1 - */ -#define EXT_WORKSPACE_MANAGER_V1_COMMIT_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_manager_v1 - */ -#define EXT_WORKSPACE_MANAGER_V1_STOP_SINCE_VERSION 1 - -/** - * @ingroup iface_ext_workspace_manager_v1 - * Sends an workspace_group event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_manager_v1_send_workspace_group(struct wl_resource *resource_, struct wl_resource *workspace_group) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_MANAGER_V1_WORKSPACE_GROUP, workspace_group); -} - -/** - * @ingroup iface_ext_workspace_manager_v1 - * Sends an workspace event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_manager_v1_send_workspace(struct wl_resource *resource_, struct wl_resource *workspace) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_MANAGER_V1_WORKSPACE, workspace); -} - -/** - * @ingroup iface_ext_workspace_manager_v1 - * Sends an done event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_manager_v1_send_done(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_MANAGER_V1_DONE); -} - -/** - * @ingroup iface_ext_workspace_manager_v1 - * Sends an finished event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_manager_v1_send_finished(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_MANAGER_V1_FINISHED); -} - -#ifndef EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_ENUM -#define EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_ENUM -enum ext_workspace_group_handle_v1_group_capabilities { - /** - * create_workspace request is available - */ - EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_CREATE_WORKSPACE = 1, -}; -#endif /* EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_ENUM */ - -#ifndef EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_ENUM_IS_VALID -#define EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_ENUM_IS_VALID -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * Validate a ext_workspace_group_handle_v1 group_capabilities value. - * - * @return true on success, false on error. - * @ref ext_workspace_group_handle_v1_group_capabilities - */ -static inline bool -ext_workspace_group_handle_v1_group_capabilities_is_valid(uint32_t value, uint32_t version) { - uint32_t valid = 0; - if (version >= 1) - valid |= EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_CREATE_WORKSPACE; - return (value & ~valid) == 0; -} -#endif /* EXT_WORKSPACE_GROUP_HANDLE_V1_GROUP_CAPABILITIES_ENUM_IS_VALID */ - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * @struct ext_workspace_group_handle_v1_interface - */ -struct ext_workspace_group_handle_v1_interface { - /** - * create a new workspace - * - * Request that the compositor create a new workspace with the - * given name and assign it to this group. - * - * There is no guarantee that the compositor will create a new - * workspace, or that the created workspace will have the provided - * name. - */ - void (*create_workspace)(struct wl_client *client, - struct wl_resource *resource, - const char *workspace); - /** - * destroy the ext_workspace_group_handle_v1 object - * - * Destroys the ext_workspace_group_handle_v1 object. - * - * This request should be send either when the client does not want - * to use the workspace group object any more or after the removed - * event to finalize the destruction of the object. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); -}; - -#define EXT_WORKSPACE_GROUP_HANDLE_V1_CAPABILITIES 0 -#define EXT_WORKSPACE_GROUP_HANDLE_V1_OUTPUT_ENTER 1 -#define EXT_WORKSPACE_GROUP_HANDLE_V1_OUTPUT_LEAVE 2 -#define EXT_WORKSPACE_GROUP_HANDLE_V1_WORKSPACE_ENTER 3 -#define EXT_WORKSPACE_GROUP_HANDLE_V1_WORKSPACE_LEAVE 4 -#define EXT_WORKSPACE_GROUP_HANDLE_V1_REMOVED 5 - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_CAPABILITIES_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_OUTPUT_ENTER_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_OUTPUT_LEAVE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_WORKSPACE_ENTER_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_WORKSPACE_LEAVE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_REMOVED_SINCE_VERSION 1 - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_CREATE_WORKSPACE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_group_handle_v1 - */ -#define EXT_WORKSPACE_GROUP_HANDLE_V1_DESTROY_SINCE_VERSION 1 - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * Sends an capabilities event to the client owning the resource. - * @param resource_ The client's resource - * @param capabilities capabilities - */ -static inline void -ext_workspace_group_handle_v1_send_capabilities(struct wl_resource *resource_, uint32_t capabilities) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_GROUP_HANDLE_V1_CAPABILITIES, capabilities); -} - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * Sends an output_enter event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_group_handle_v1_send_output_enter(struct wl_resource *resource_, struct wl_resource *output) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_GROUP_HANDLE_V1_OUTPUT_ENTER, output); -} - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * Sends an output_leave event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_group_handle_v1_send_output_leave(struct wl_resource *resource_, struct wl_resource *output) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_GROUP_HANDLE_V1_OUTPUT_LEAVE, output); -} - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * Sends an workspace_enter event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_group_handle_v1_send_workspace_enter(struct wl_resource *resource_, struct wl_resource *workspace) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_GROUP_HANDLE_V1_WORKSPACE_ENTER, workspace); -} - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * Sends an workspace_leave event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_group_handle_v1_send_workspace_leave(struct wl_resource *resource_, struct wl_resource *workspace) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_GROUP_HANDLE_V1_WORKSPACE_LEAVE, workspace); -} - -/** - * @ingroup iface_ext_workspace_group_handle_v1 - * Sends an removed event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_group_handle_v1_send_removed(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_GROUP_HANDLE_V1_REMOVED); -} - -#ifndef EXT_WORKSPACE_HANDLE_V1_STATE_ENUM -#define EXT_WORKSPACE_HANDLE_V1_STATE_ENUM -/** - * @ingroup iface_ext_workspace_handle_v1 - * types of states on the workspace - * - * The different states that a workspace can have. - */ -enum ext_workspace_handle_v1_state { - /** - * the workspace is active - */ - EXT_WORKSPACE_HANDLE_V1_STATE_ACTIVE = 1, - /** - * the workspace requests attention - */ - EXT_WORKSPACE_HANDLE_V1_STATE_URGENT = 2, - /** - * the workspace is not visible - * - * The workspace is not visible in its workspace group, and - * clients attempting to visualize the compositor workspace state - * should not display such workspaces. - */ - EXT_WORKSPACE_HANDLE_V1_STATE_HIDDEN = 4, -}; -#endif /* EXT_WORKSPACE_HANDLE_V1_STATE_ENUM */ - -#ifndef EXT_WORKSPACE_HANDLE_V1_STATE_ENUM_IS_VALID -#define EXT_WORKSPACE_HANDLE_V1_STATE_ENUM_IS_VALID -/** - * @ingroup iface_ext_workspace_handle_v1 - * Validate a ext_workspace_handle_v1 state value. - * - * @return true on success, false on error. - * @ref ext_workspace_handle_v1_state - */ -static inline bool -ext_workspace_handle_v1_state_is_valid(uint32_t value, uint32_t version) { - uint32_t valid = 0; - if (version >= 1) - valid |= EXT_WORKSPACE_HANDLE_V1_STATE_ACTIVE; - if (version >= 1) - valid |= EXT_WORKSPACE_HANDLE_V1_STATE_URGENT; - if (version >= 1) - valid |= EXT_WORKSPACE_HANDLE_V1_STATE_HIDDEN; - return (value & ~valid) == 0; -} -#endif /* EXT_WORKSPACE_HANDLE_V1_STATE_ENUM_IS_VALID */ - -#ifndef EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ENUM -#define EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ENUM -enum ext_workspace_handle_v1_workspace_capabilities { - /** - * activate request is available - */ - EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ACTIVATE = 1, - /** - * deactivate request is available - */ - EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_DEACTIVATE = 2, - /** - * remove request is available - */ - EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_REMOVE = 4, - /** - * assign request is available - */ - EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ASSIGN = 8, -}; -#endif /* EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ENUM */ - -#ifndef EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ENUM_IS_VALID -#define EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ENUM_IS_VALID -/** - * @ingroup iface_ext_workspace_handle_v1 - * Validate a ext_workspace_handle_v1 workspace_capabilities value. - * - * @return true on success, false on error. - * @ref ext_workspace_handle_v1_workspace_capabilities - */ -static inline bool -ext_workspace_handle_v1_workspace_capabilities_is_valid(uint32_t value, uint32_t version) { - uint32_t valid = 0; - if (version >= 1) - valid |= EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ACTIVATE; - if (version >= 1) - valid |= EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_DEACTIVATE; - if (version >= 1) - valid |= EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_REMOVE; - if (version >= 1) - valid |= EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ASSIGN; - return (value & ~valid) == 0; -} -#endif /* EXT_WORKSPACE_HANDLE_V1_WORKSPACE_CAPABILITIES_ENUM_IS_VALID */ - -/** - * @ingroup iface_ext_workspace_handle_v1 - * @struct ext_workspace_handle_v1_interface - */ -struct ext_workspace_handle_v1_interface { - /** - * destroy the ext_workspace_handle_v1 object - * - * Destroys the ext_workspace_handle_v1 object. - * - * This request should be made either when the client does not want - * to use the workspace object any more or after the remove event - * to finalize the destruction of the object. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * activate the workspace - * - * Request that this workspace be activated. - * - * There is no guarantee the workspace will be actually activated, - * and behaviour may be compositor-dependent. For example, - * activating a workspace may or may not deactivate all other - * workspaces in the same group. - */ - void (*activate)(struct wl_client *client, - struct wl_resource *resource); - /** - * deactivate the workspace - * - * Request that this workspace be deactivated. - * - * There is no guarantee the workspace will be actually - * deactivated. - */ - void (*deactivate)(struct wl_client *client, - struct wl_resource *resource); - /** - * assign workspace to group - * - * Requests that this workspace is assigned to the given - * workspace group. - * - * There is no guarantee the workspace will be assigned. - */ - void (*assign)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *workspace_group); - /** - * remove the workspace - * - * Request that this workspace be removed. - * - * There is no guarantee the workspace will be actually removed. - */ - void (*remove)(struct wl_client *client, - struct wl_resource *resource); -}; - -#define EXT_WORKSPACE_HANDLE_V1_ID 0 -#define EXT_WORKSPACE_HANDLE_V1_NAME 1 -#define EXT_WORKSPACE_HANDLE_V1_COORDINATES 2 -#define EXT_WORKSPACE_HANDLE_V1_STATE 3 -#define EXT_WORKSPACE_HANDLE_V1_CAPABILITIES 4 -#define EXT_WORKSPACE_HANDLE_V1_REMOVED 5 - -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_ID_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_NAME_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_COORDINATES_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_STATE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_CAPABILITIES_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_REMOVED_SINCE_VERSION 1 - -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_ACTIVATE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_DEACTIVATE_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_ASSIGN_SINCE_VERSION 1 -/** - * @ingroup iface_ext_workspace_handle_v1 - */ -#define EXT_WORKSPACE_HANDLE_V1_REMOVE_SINCE_VERSION 1 - -/** - * @ingroup iface_ext_workspace_handle_v1 - * Sends an id event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_handle_v1_send_id(struct wl_resource *resource_, const char *id) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_HANDLE_V1_ID, id); -} - -/** - * @ingroup iface_ext_workspace_handle_v1 - * Sends an name event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_handle_v1_send_name(struct wl_resource *resource_, const char *name) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_HANDLE_V1_NAME, name); -} - -/** - * @ingroup iface_ext_workspace_handle_v1 - * Sends an coordinates event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_handle_v1_send_coordinates(struct wl_resource *resource_, struct wl_array *coordinates) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_HANDLE_V1_COORDINATES, coordinates); -} - -/** - * @ingroup iface_ext_workspace_handle_v1 - * Sends an state event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_handle_v1_send_state(struct wl_resource *resource_, uint32_t state) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_HANDLE_V1_STATE, state); -} - -/** - * @ingroup iface_ext_workspace_handle_v1 - * Sends an capabilities event to the client owning the resource. - * @param resource_ The client's resource - * @param capabilities capabilities - */ -static inline void -ext_workspace_handle_v1_send_capabilities(struct wl_resource *resource_, uint32_t capabilities) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_HANDLE_V1_CAPABILITIES, capabilities); -} - -/** - * @ingroup iface_ext_workspace_handle_v1 - * Sends an removed event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -ext_workspace_handle_v1_send_removed(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, EXT_WORKSPACE_HANDLE_V1_REMOVED); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/peachwm-ipc-unstable-v2-protocol.c b/protocols/peachwm-ipc-unstable-v2-protocol.c deleted file mode 100644 index dfc4982..0000000 --- a/protocols/peachwm-ipc-unstable-v2-protocol.c +++ /dev/null @@ -1,94 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -/* - * Copyright (C) 2022 Russell Newcomb - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include -#include -#include -#include "wayland-util.h" - -#ifndef __has_attribute -# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */ -#endif - -#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4) -#define WL_PRIVATE __attribute__ ((visibility("hidden"))) -#else -#define WL_PRIVATE -#endif - -extern const struct wl_interface wl_output_interface; -extern const struct wl_interface zpeachwm_ipc_output_v2_interface; - -static const struct wl_interface *peachwm_ipc_unstable_v2_types[] = { - NULL, - NULL, - NULL, - NULL, - &zpeachwm_ipc_output_v2_interface, - &wl_output_interface, -}; - -static const struct wl_message zpeachwm_ipc_manager_v2_requests[] = { - { "release", "", peachwm_ipc_unstable_v2_types + 0 }, - { "get_output", "no", peachwm_ipc_unstable_v2_types + 4 }, -}; - -static const struct wl_message zpeachwm_ipc_manager_v2_events[] = { - { "tags", "u", peachwm_ipc_unstable_v2_types + 0 }, - { "layout", "s", peachwm_ipc_unstable_v2_types + 0 }, -}; - -WL_PRIVATE const struct wl_interface zpeachwm_ipc_manager_v2_interface = { - "zpeachwm_ipc_manager_v2", 2, - 2, zpeachwm_ipc_manager_v2_requests, - 2, zpeachwm_ipc_manager_v2_events, -}; - -static const struct wl_message zpeachwm_ipc_output_v2_requests[] = { - { "release", "", peachwm_ipc_unstable_v2_types + 0 }, - { "set_tags", "uu", peachwm_ipc_unstable_v2_types + 0 }, - { "set_client_tags", "uu", peachwm_ipc_unstable_v2_types + 0 }, - { "set_layout", "u", peachwm_ipc_unstable_v2_types + 0 }, -}; - -static const struct wl_message zpeachwm_ipc_output_v2_events[] = { - { "toggle_visibility", "", peachwm_ipc_unstable_v2_types + 0 }, - { "active", "u", peachwm_ipc_unstable_v2_types + 0 }, - { "tag", "uuuu", peachwm_ipc_unstable_v2_types + 0 }, - { "layout", "u", peachwm_ipc_unstable_v2_types + 0 }, - { "title", "s", peachwm_ipc_unstable_v2_types + 0 }, - { "appid", "s", peachwm_ipc_unstable_v2_types + 0 }, - { "layout_symbol", "s", peachwm_ipc_unstable_v2_types + 0 }, - { "frame", "", peachwm_ipc_unstable_v2_types + 0 }, - { "fullscreen", "2u", peachwm_ipc_unstable_v2_types + 0 }, - { "floating", "2u", peachwm_ipc_unstable_v2_types + 0 }, -}; - -WL_PRIVATE const struct wl_interface zpeachwm_ipc_output_v2_interface = { - "zpeachwm_ipc_output_v2", 2, - 4, zpeachwm_ipc_output_v2_requests, - 10, zpeachwm_ipc_output_v2_events, -}; - diff --git a/protocols/peachwm-ipc-unstable-v2-protocol.h b/protocols/peachwm-ipc-unstable-v2-protocol.h deleted file mode 100644 index 8cb8d2b..0000000 --- a/protocols/peachwm-ipc-unstable-v2-protocol.h +++ /dev/null @@ -1,447 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -#ifndef PEACHWM_IPC_UNSTABLE_V2_SERVER_PROTOCOL_H -#define PEACHWM_IPC_UNSTABLE_V2_SERVER_PROTOCOL_H - -#include -#include -#include "wayland-server.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct wl_client; -struct wl_resource; - -/** - * @page page_peachwm_ipc_unstable_v2 The peachwm_ipc_unstable_v2 protocol - * @section page_ifaces_peachwm_ipc_unstable_v2 Interfaces - * - @subpage page_iface_zpeachwm_ipc_manager_v2 - manage peachwm state - * - @subpage page_iface_zpeachwm_ipc_output_v2 - interact with peachwm output state - * @section page_copyright_peachwm_ipc_unstable_v2 Copyright - *
- *
- * Copyright (C) 2022 Russell Newcomb
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * 
- */ -struct wl_output; -struct zpeachwm_ipc_manager_v2; -struct zpeachwm_ipc_output_v2; - -#ifndef ZPEACHWM_IPC_MANAGER_V2_INTERFACE -#define ZPEACHWM_IPC_MANAGER_V2_INTERFACE -/** - * @page page_iface_zpeachwm_ipc_manager_v2 zpeachwm_ipc_manager_v2 - * @section page_iface_zpeachwm_ipc_manager_v2_desc Description - * - * This interface is exposed as a global in the Wayland registry and allows - * clients to query and set peachwm state. - * - * Warning! The protocol described in this file is experimental and - * backward incompatible changes may be made. Backward compatible changes - * may be added together with the corresponding interface version bump. - * Backward incompatible changes are done by bumping the version number in - * the protocol and interface names and resetting the interface version. - * Once the protocol is to be declared stable, the 'z' prefix and the - * version number in the protocol and interface names are removed and the - * interface version is reset. - * @section page_iface_zpeachwm_ipc_manager_v2_api API - * See @ref iface_zpeachwm_ipc_manager_v2. - */ -/** - * @defgroup iface_zpeachwm_ipc_manager_v2 The zpeachwm_ipc_manager_v2 interface - * - * This interface is exposed as a global in the Wayland registry and allows - * clients to query and set peachwm state. - * - * Warning! The protocol described in this file is experimental and - * backward incompatible changes may be made. Backward compatible changes - * may be added together with the corresponding interface version bump. - * Backward incompatible changes are done by bumping the version number in - * the protocol and interface names and resetting the interface version. - * Once the protocol is to be declared stable, the 'z' prefix and the - * version number in the protocol and interface names are removed and the - * interface version is reset. - */ -extern const struct wl_interface zpeachwm_ipc_manager_v2_interface; -#endif -#ifndef ZPEACHWM_IPC_OUTPUT_V2_INTERFACE -#define ZPEACHWM_IPC_OUTPUT_V2_INTERFACE -/** - * @page page_iface_zpeachwm_ipc_output_v2 zpeachwm_ipc_output_v2 - * @section page_iface_zpeachwm_ipc_output_v2_desc Description - * - * Observe and control a peachwm output. - * @section page_iface_zpeachwm_ipc_output_v2_api API - * See @ref iface_zpeachwm_ipc_output_v2. - */ -/** - * @defgroup iface_zpeachwm_ipc_output_v2 The zpeachwm_ipc_output_v2 interface - * - * Observe and control a peachwm output. - */ -extern const struct wl_interface zpeachwm_ipc_output_v2_interface; -#endif - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - * @struct zpeachwm_ipc_manager_v2_interface - */ -struct zpeachwm_ipc_manager_v2_interface { - /** - * release peachwm_ipc_manager - * - * Indicates that the client will not use the manager object - * anymore. Objects created through this interface remain valid. - */ - void (*release)(struct wl_client *client, - struct wl_resource *resource); - /** - * get a peachwm_ipc_output for a wl_output - * - * Get a peachwm_ipc_output for the given wl_output. - */ - void (*get_output)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct wl_resource *output); -}; - -#define ZPEACHWM_IPC_MANAGER_V2_TAGS 0 -#define ZPEACHWM_IPC_MANAGER_V2_LAYOUT 1 - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_TAGS_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_LAYOUT_SINCE_VERSION 1 - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_RELEASE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - */ -#define ZPEACHWM_IPC_MANAGER_V2_GET_OUTPUT_SINCE_VERSION 1 - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - * Sends an tags event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_manager_v2_send_tags(struct wl_resource *resource_, uint32_t amount) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_MANAGER_V2_TAGS, amount); -} - -/** - * @ingroup iface_zpeachwm_ipc_manager_v2 - * Sends an layout event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_manager_v2_send_layout(struct wl_resource *resource_, const char *name) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_MANAGER_V2_LAYOUT, name); -} - -#ifndef ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM -#define ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM -enum zpeachwm_ipc_output_v2_tag_state { - /** - * no state - */ - ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_NONE = 0, - /** - * tag is active - */ - ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ACTIVE = 1, - /** - * tag has urgent client - */ - ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_URGENT = 2, -}; -#endif /* ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM */ - -#ifndef ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM_IS_VALID -#define ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM_IS_VALID -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Validate a zpeachwm_ipc_output_v2 tag_state value. - * - * @return true on success, false on error. - * @ref zpeachwm_ipc_output_v2_tag_state - */ -static inline bool -zpeachwm_ipc_output_v2_tag_state_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_NONE: - return version >= 1; - case ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ACTIVE: - return version >= 1; - case ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_URGENT: - return version >= 1; - default: - return false; - } -} -#endif /* ZPEACHWM_IPC_OUTPUT_V2_TAG_STATE_ENUM_IS_VALID */ - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * @struct zpeachwm_ipc_output_v2_interface - */ -struct zpeachwm_ipc_output_v2_interface { - /** - * release peachwm_ipc_output - * - * Indicates that the client will not use the peachwm_ipc_output - * object anymore. Objects created through this interface remain - * valid. - */ - void (*release)(struct wl_client *client, - struct wl_resource *resource); - /** - * set the active tags of this output - * - * set the active tags of this output. - * @param tagmask bitmask of the tags that should be set - * @param toggle_tagset whether to toggle the tagset - */ - void (*set_tags)(struct wl_client *client, - struct wl_resource *resource, - uint32_t tagmask, - uint32_t toggle_tagset); - /** - * set the tags of the focused client - * - * Set the tags of the focused client. - */ - void (*set_client_tags)(struct wl_client *client, - struct wl_resource *resource, - uint32_t and_tags, - uint32_t xor_tags); - /** - * set the layout of this output - * - * Set the layout of this output. - */ - void (*set_layout)(struct wl_client *client, - struct wl_resource *resource, - uint32_t index); -}; - -#define ZPEACHWM_IPC_OUTPUT_V2_TOGGLE_VISIBILITY 0 -#define ZPEACHWM_IPC_OUTPUT_V2_ACTIVE 1 -#define ZPEACHWM_IPC_OUTPUT_V2_TAG 2 -#define ZPEACHWM_IPC_OUTPUT_V2_LAYOUT 3 -#define ZPEACHWM_IPC_OUTPUT_V2_TITLE 4 -#define ZPEACHWM_IPC_OUTPUT_V2_APPID 5 -#define ZPEACHWM_IPC_OUTPUT_V2_LAYOUT_SYMBOL 6 -#define ZPEACHWM_IPC_OUTPUT_V2_FRAME 7 -#define ZPEACHWM_IPC_OUTPUT_V2_FULLSCREEN 8 -#define ZPEACHWM_IPC_OUTPUT_V2_FLOATING 9 - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_TOGGLE_VISIBILITY_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_ACTIVE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_TAG_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_LAYOUT_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_TITLE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_APPID_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_LAYOUT_SYMBOL_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_FRAME_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_FULLSCREEN_SINCE_VERSION 2 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_FLOATING_SINCE_VERSION 2 - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_RELEASE_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_SET_TAGS_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_SET_CLIENT_TAGS_SINCE_VERSION 1 -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - */ -#define ZPEACHWM_IPC_OUTPUT_V2_SET_LAYOUT_SINCE_VERSION 1 - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an toggle_visibility event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_toggle_visibility(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_TOGGLE_VISIBILITY); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an active event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_active(struct wl_resource *resource_, uint32_t active) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_ACTIVE, active); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an tag event to the client owning the resource. - * @param resource_ The client's resource - * @param tag index of the tag - * @param state state of the tag - * @param clients number of clients in tag - * @param focused 1 if focused client is in this tag - */ -static inline void -zpeachwm_ipc_output_v2_send_tag(struct wl_resource *resource_, uint32_t tag, uint32_t state, uint32_t clients, uint32_t focused) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_TAG, tag, state, clients, focused); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an layout event to the client owning the resource. - * @param resource_ The client's resource - * @param layout index of the layout - */ -static inline void -zpeachwm_ipc_output_v2_send_layout(struct wl_resource *resource_, uint32_t layout) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_LAYOUT, layout); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an title event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_title(struct wl_resource *resource_, const char *title) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_TITLE, title); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an appid event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_appid(struct wl_resource *resource_, const char *appid) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_APPID, appid); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an layout_symbol event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_layout_symbol(struct wl_resource *resource_, const char *layout) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_LAYOUT_SYMBOL, layout); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an frame event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_frame(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_FRAME); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an fullscreen event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_fullscreen(struct wl_resource *resource_, uint32_t is_fullscreen) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_FULLSCREEN, is_fullscreen); -} - -/** - * @ingroup iface_zpeachwm_ipc_output_v2 - * Sends an floating event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zpeachwm_ipc_output_v2_send_floating(struct wl_resource *resource_, uint32_t is_floating) -{ - wl_resource_post_event(resource_, ZPEACHWM_IPC_OUTPUT_V2_FLOATING, is_floating); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/pointer-constraints-unstable-v1-protocol.h b/protocols/pointer-constraints-unstable-v1-protocol.h deleted file mode 100644 index 0d48fcd..0000000 --- a/protocols/pointer-constraints-unstable-v1-protocol.h +++ /dev/null @@ -1,615 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -#ifndef POINTER_CONSTRAINTS_UNSTABLE_V1_SERVER_PROTOCOL_H -#define POINTER_CONSTRAINTS_UNSTABLE_V1_SERVER_PROTOCOL_H - -#include -#include -#include "wayland-server.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct wl_client; -struct wl_resource; - -/** - * @page page_pointer_constraints_unstable_v1 The pointer_constraints_unstable_v1 protocol - * protocol for constraining pointer motions - * - * @section page_desc_pointer_constraints_unstable_v1 Description - * - * This protocol specifies a set of interfaces used for adding constraints to - * the motion of a pointer. Possible constraints include confining pointer - * motions to a given region, or locking it to its current position. - * - * In order to constrain the pointer, a client must first bind the global - * interface "wp_pointer_constraints" which, if a compositor supports pointer - * constraints, is exposed by the registry. Using the bound global object, the - * client uses the request that corresponds to the type of constraint it wants - * to make. See wp_pointer_constraints for more details. - * - * Warning! The protocol described in this file is experimental and backward - * incompatible changes may be made. Backward compatible changes may be added - * together with the corresponding interface version bump. Backward - * incompatible changes are done by bumping the version number in the protocol - * and interface names and resetting the interface version. Once the protocol - * is to be declared stable, the 'z' prefix and the version number in the - * protocol and interface names are removed and the interface version number is - * reset. - * - * @section page_ifaces_pointer_constraints_unstable_v1 Interfaces - * - @subpage page_iface_zwp_pointer_constraints_v1 - constrain the movement of a pointer - * - @subpage page_iface_zwp_locked_pointer_v1 - receive relative pointer motion events - * - @subpage page_iface_zwp_confined_pointer_v1 - confined pointer object - * @section page_copyright_pointer_constraints_unstable_v1 Copyright - *
- *
- * Copyright © 2014      Jonas Ådahl
- * Copyright © 2015      Red Hat Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * 
- */ -struct wl_pointer; -struct wl_region; -struct wl_surface; -struct zwp_confined_pointer_v1; -struct zwp_locked_pointer_v1; -struct zwp_pointer_constraints_v1; - -#ifndef ZWP_POINTER_CONSTRAINTS_V1_INTERFACE -#define ZWP_POINTER_CONSTRAINTS_V1_INTERFACE -/** - * @page page_iface_zwp_pointer_constraints_v1 zwp_pointer_constraints_v1 - * @section page_iface_zwp_pointer_constraints_v1_desc Description - * - * The global interface exposing pointer constraining functionality. It - * exposes two requests: lock_pointer for locking the pointer to its - * position, and confine_pointer for locking the pointer to a region. - * - * The lock_pointer and confine_pointer requests create the objects - * wp_locked_pointer and wp_confined_pointer respectively, and the client can - * use these objects to interact with the lock. - * - * For any surface, only one lock or confinement may be active across all - * wl_pointer objects of the same seat. If a lock or confinement is requested - * when another lock or confinement is active or requested on the same surface - * and with any of the wl_pointer objects of the same seat, an - * 'already_constrained' error will be raised. - * @section page_iface_zwp_pointer_constraints_v1_api API - * See @ref iface_zwp_pointer_constraints_v1. - */ -/** - * @defgroup iface_zwp_pointer_constraints_v1 The zwp_pointer_constraints_v1 interface - * - * The global interface exposing pointer constraining functionality. It - * exposes two requests: lock_pointer for locking the pointer to its - * position, and confine_pointer for locking the pointer to a region. - * - * The lock_pointer and confine_pointer requests create the objects - * wp_locked_pointer and wp_confined_pointer respectively, and the client can - * use these objects to interact with the lock. - * - * For any surface, only one lock or confinement may be active across all - * wl_pointer objects of the same seat. If a lock or confinement is requested - * when another lock or confinement is active or requested on the same surface - * and with any of the wl_pointer objects of the same seat, an - * 'already_constrained' error will be raised. - */ -extern const struct wl_interface zwp_pointer_constraints_v1_interface; -#endif -#ifndef ZWP_LOCKED_POINTER_V1_INTERFACE -#define ZWP_LOCKED_POINTER_V1_INTERFACE -/** - * @page page_iface_zwp_locked_pointer_v1 zwp_locked_pointer_v1 - * @section page_iface_zwp_locked_pointer_v1_desc Description - * - * The wp_locked_pointer interface represents a locked pointer state. - * - * While the lock of this object is active, the wl_pointer objects of the - * associated seat will not emit any wl_pointer.motion events. - * - * This object will send the event 'locked' when the lock is activated. - * Whenever the lock is activated, it is guaranteed that the locked surface - * will already have received pointer focus and that the pointer will be - * within the region passed to the request creating this object. - * - * To unlock the pointer, send the destroy request. This will also destroy - * the wp_locked_pointer object. - * - * If the compositor decides to unlock the pointer the unlocked event is - * sent. See wp_locked_pointer.unlock for details. - * - * When unlocking, the compositor may warp the cursor position to the set - * cursor position hint. If it does, it will not result in any relative - * motion events emitted via wp_relative_pointer. - * - * If the surface the lock was requested on is destroyed and the lock is not - * yet activated, the wp_locked_pointer object is now defunct and must be - * destroyed. - * @section page_iface_zwp_locked_pointer_v1_api API - * See @ref iface_zwp_locked_pointer_v1. - */ -/** - * @defgroup iface_zwp_locked_pointer_v1 The zwp_locked_pointer_v1 interface - * - * The wp_locked_pointer interface represents a locked pointer state. - * - * While the lock of this object is active, the wl_pointer objects of the - * associated seat will not emit any wl_pointer.motion events. - * - * This object will send the event 'locked' when the lock is activated. - * Whenever the lock is activated, it is guaranteed that the locked surface - * will already have received pointer focus and that the pointer will be - * within the region passed to the request creating this object. - * - * To unlock the pointer, send the destroy request. This will also destroy - * the wp_locked_pointer object. - * - * If the compositor decides to unlock the pointer the unlocked event is - * sent. See wp_locked_pointer.unlock for details. - * - * When unlocking, the compositor may warp the cursor position to the set - * cursor position hint. If it does, it will not result in any relative - * motion events emitted via wp_relative_pointer. - * - * If the surface the lock was requested on is destroyed and the lock is not - * yet activated, the wp_locked_pointer object is now defunct and must be - * destroyed. - */ -extern const struct wl_interface zwp_locked_pointer_v1_interface; -#endif -#ifndef ZWP_CONFINED_POINTER_V1_INTERFACE -#define ZWP_CONFINED_POINTER_V1_INTERFACE -/** - * @page page_iface_zwp_confined_pointer_v1 zwp_confined_pointer_v1 - * @section page_iface_zwp_confined_pointer_v1_desc Description - * - * The wp_confined_pointer interface represents a confined pointer state. - * - * This object will send the event 'confined' when the confinement is - * activated. Whenever the confinement is activated, it is guaranteed that - * the surface the pointer is confined to will already have received pointer - * focus and that the pointer will be within the region passed to the request - * creating this object. It is up to the compositor to decide whether this - * requires some user interaction and if the pointer will warp to within the - * passed region if outside. - * - * To unconfine the pointer, send the destroy request. This will also destroy - * the wp_confined_pointer object. - * - * If the compositor decides to unconfine the pointer the unconfined event is - * sent. The wp_confined_pointer object is at this point defunct and should - * be destroyed. - * @section page_iface_zwp_confined_pointer_v1_api API - * See @ref iface_zwp_confined_pointer_v1. - */ -/** - * @defgroup iface_zwp_confined_pointer_v1 The zwp_confined_pointer_v1 interface - * - * The wp_confined_pointer interface represents a confined pointer state. - * - * This object will send the event 'confined' when the confinement is - * activated. Whenever the confinement is activated, it is guaranteed that - * the surface the pointer is confined to will already have received pointer - * focus and that the pointer will be within the region passed to the request - * creating this object. It is up to the compositor to decide whether this - * requires some user interaction and if the pointer will warp to within the - * passed region if outside. - * - * To unconfine the pointer, send the destroy request. This will also destroy - * the wp_confined_pointer object. - * - * If the compositor decides to unconfine the pointer the unconfined event is - * sent. The wp_confined_pointer object is at this point defunct and should - * be destroyed. - */ -extern const struct wl_interface zwp_confined_pointer_v1_interface; -#endif - -#ifndef ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM -#define ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM -/** - * @ingroup iface_zwp_pointer_constraints_v1 - * wp_pointer_constraints error values - * - * These errors can be emitted in response to wp_pointer_constraints - * requests. - */ -enum zwp_pointer_constraints_v1_error { - /** - * pointer constraint already requested on that surface - */ - ZWP_POINTER_CONSTRAINTS_V1_ERROR_ALREADY_CONSTRAINED = 1, -}; -#endif /* ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM */ - -#ifndef ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM_IS_VALID -#define ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_zwp_pointer_constraints_v1 - * Validate a zwp_pointer_constraints_v1 error value. - * - * @return true on success, false on error. - * @ref zwp_pointer_constraints_v1_error - */ -static inline bool -zwp_pointer_constraints_v1_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWP_POINTER_CONSTRAINTS_V1_ERROR_ALREADY_CONSTRAINED: - return version >= 1; - default: - return false; - } -} -#endif /* ZWP_POINTER_CONSTRAINTS_V1_ERROR_ENUM_IS_VALID */ - -#ifndef ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM -#define ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM -/** - * @ingroup iface_zwp_pointer_constraints_v1 - * constraint lifetime - * - * These values represent different lifetime semantics. They are passed - * as arguments to the factory requests to specify how the constraint - * lifetimes should be managed. - */ -enum zwp_pointer_constraints_v1_lifetime { - /** - * the pointer constraint is defunct once deactivated - * - * A oneshot pointer constraint will never reactivate once it has - * been deactivated. See the corresponding deactivation event - * (wp_locked_pointer.unlocked and wp_confined_pointer.unconfined) - * for details. - */ - ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT = 1, - /** - * the pointer constraint may reactivate - * - * A persistent pointer constraint may again reactivate once it - * has been deactivated. See the corresponding deactivation event - * (wp_locked_pointer.unlocked and wp_confined_pointer.unconfined) - * for details. - */ - ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT = 2, -}; -#endif /* ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM */ - -#ifndef ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM_IS_VALID -#define ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM_IS_VALID -/** - * @ingroup iface_zwp_pointer_constraints_v1 - * Validate a zwp_pointer_constraints_v1 lifetime value. - * - * @return true on success, false on error. - * @ref zwp_pointer_constraints_v1_lifetime - */ -static inline bool -zwp_pointer_constraints_v1_lifetime_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT: - return version >= 1; - case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT: - return version >= 1; - default: - return false; - } -} -#endif /* ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ENUM_IS_VALID */ - -/** - * @ingroup iface_zwp_pointer_constraints_v1 - * @struct zwp_pointer_constraints_v1_interface - */ -struct zwp_pointer_constraints_v1_interface { - /** - * destroy the pointer constraints manager object - * - * Used by the client to notify the server that it will no longer - * use this pointer constraints object. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * lock pointer to a position - * - * The lock_pointer request lets the client request to disable - * movements of the virtual pointer (i.e. the cursor), effectively - * locking the pointer to a position. This request may not take - * effect immediately; in the future, when the compositor deems - * implementation-specific constraints are satisfied, the pointer - * lock will be activated and the compositor sends a locked event. - * - * The protocol provides no guarantee that the constraints are ever - * satisfied, and does not require the compositor to send an error - * if the constraints cannot ever be satisfied. It is thus possible - * to request a lock that will never activate. - * - * There may not be another pointer constraint of any kind - * requested or active on the surface for any of the wl_pointer - * objects of the seat of the passed pointer when requesting a - * lock. If there is, an error will be raised. See general pointer - * lock documentation for more details. - * - * The intersection of the region passed with this request and the - * input region of the surface is used to determine where the - * pointer must be in order for the lock to activate. It is up to - * the compositor whether to warp the pointer or require some kind - * of user interaction for the lock to activate. If the region is - * null the surface input region is used. - * - * A surface may receive pointer focus without the lock being - * activated. - * - * The request creates a new object wp_locked_pointer which is used - * to interact with the lock as well as receive updates about its - * state. See the the description of wp_locked_pointer for further - * information. - * - * Note that while a pointer is locked, the wl_pointer objects of - * the corresponding seat will not emit any wl_pointer.motion - * events, but relative motion events will still be emitted via - * wp_relative_pointer objects of the same seat. wl_pointer.axis - * and wl_pointer.button events are unaffected. - * @param surface surface to lock pointer to - * @param pointer the pointer that should be locked - * @param region region of surface - * @param lifetime lock lifetime - */ - void (*lock_pointer)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct wl_resource *surface, - struct wl_resource *pointer, - struct wl_resource *region, - uint32_t lifetime); - /** - * confine pointer to a region - * - * The confine_pointer request lets the client request to confine - * the pointer cursor to a given region. This request may not take - * effect immediately; in the future, when the compositor deems - * implementation- specific constraints are satisfied, the pointer - * confinement will be activated and the compositor sends a - * confined event. - * - * The intersection of the region passed with this request and the - * input region of the surface is used to determine where the - * pointer must be in order for the confinement to activate. It is - * up to the compositor whether to warp the pointer or require some - * kind of user interaction for the confinement to activate. If the - * region is null the surface input region is used. - * - * The request will create a new object wp_confined_pointer which - * is used to interact with the confinement as well as receive - * updates about its state. See the the description of - * wp_confined_pointer for further information. - * @param surface surface to lock pointer to - * @param pointer the pointer that should be confined - * @param region region of surface - * @param lifetime confinement lifetime - */ - void (*confine_pointer)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct wl_resource *surface, - struct wl_resource *pointer, - struct wl_resource *region, - uint32_t lifetime); -}; - - -/** - * @ingroup iface_zwp_pointer_constraints_v1 - */ -#define ZWP_POINTER_CONSTRAINTS_V1_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_zwp_pointer_constraints_v1 - */ -#define ZWP_POINTER_CONSTRAINTS_V1_LOCK_POINTER_SINCE_VERSION 1 -/** - * @ingroup iface_zwp_pointer_constraints_v1 - */ -#define ZWP_POINTER_CONSTRAINTS_V1_CONFINE_POINTER_SINCE_VERSION 1 - -/** - * @ingroup iface_zwp_locked_pointer_v1 - * @struct zwp_locked_pointer_v1_interface - */ -struct zwp_locked_pointer_v1_interface { - /** - * destroy the locked pointer object - * - * Destroy the locked pointer object. If applicable, the - * compositor will unlock the pointer. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * set the pointer cursor position hint - * - * Set the cursor position hint relative to the top left corner - * of the surface. - * - * If the client is drawing its own cursor, it should update the - * position hint to the position of its own cursor. A compositor - * may use this information to warp the pointer upon unlock in - * order to avoid pointer jumps. - * - * The cursor position hint is double-buffered state, see - * wl_surface.commit. - * @param surface_x surface-local x coordinate - * @param surface_y surface-local y coordinate - */ - void (*set_cursor_position_hint)(struct wl_client *client, - struct wl_resource *resource, - wl_fixed_t surface_x, - wl_fixed_t surface_y); - /** - * set a new lock region - * - * Set a new region used to lock the pointer. - * - * The new lock region is double-buffered, see wl_surface.commit. - * - * For details about the lock region, see wp_locked_pointer. - * @param region region of surface - */ - void (*set_region)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *region); -}; - -#define ZWP_LOCKED_POINTER_V1_LOCKED 0 -#define ZWP_LOCKED_POINTER_V1_UNLOCKED 1 - -/** - * @ingroup iface_zwp_locked_pointer_v1 - */ -#define ZWP_LOCKED_POINTER_V1_LOCKED_SINCE_VERSION 1 -/** - * @ingroup iface_zwp_locked_pointer_v1 - */ -#define ZWP_LOCKED_POINTER_V1_UNLOCKED_SINCE_VERSION 1 - -/** - * @ingroup iface_zwp_locked_pointer_v1 - */ -#define ZWP_LOCKED_POINTER_V1_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_zwp_locked_pointer_v1 - */ -#define ZWP_LOCKED_POINTER_V1_SET_CURSOR_POSITION_HINT_SINCE_VERSION 1 -/** - * @ingroup iface_zwp_locked_pointer_v1 - */ -#define ZWP_LOCKED_POINTER_V1_SET_REGION_SINCE_VERSION 1 - -/** - * @ingroup iface_zwp_locked_pointer_v1 - * Sends an locked event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zwp_locked_pointer_v1_send_locked(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZWP_LOCKED_POINTER_V1_LOCKED); -} - -/** - * @ingroup iface_zwp_locked_pointer_v1 - * Sends an unlocked event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zwp_locked_pointer_v1_send_unlocked(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZWP_LOCKED_POINTER_V1_UNLOCKED); -} - -/** - * @ingroup iface_zwp_confined_pointer_v1 - * @struct zwp_confined_pointer_v1_interface - */ -struct zwp_confined_pointer_v1_interface { - /** - * destroy the confined pointer object - * - * Destroy the confined pointer object. If applicable, the - * compositor will unconfine the pointer. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * set a new confine region - * - * Set a new region used to confine the pointer. - * - * The new confine region is double-buffered, see - * wl_surface.commit. - * - * If the confinement is active when the new confinement region is - * applied and the pointer ends up outside of newly applied region, - * the pointer may warped to a position within the new confinement - * region. If warped, a wl_pointer.motion event will be emitted, - * but no wp_relative_pointer.relative_motion event. - * - * The compositor may also, instead of using the new region, - * unconfine the pointer. - * - * For details about the confine region, see wp_confined_pointer. - * @param region region of surface - */ - void (*set_region)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *region); -}; - -#define ZWP_CONFINED_POINTER_V1_CONFINED 0 -#define ZWP_CONFINED_POINTER_V1_UNCONFINED 1 - -/** - * @ingroup iface_zwp_confined_pointer_v1 - */ -#define ZWP_CONFINED_POINTER_V1_CONFINED_SINCE_VERSION 1 -/** - * @ingroup iface_zwp_confined_pointer_v1 - */ -#define ZWP_CONFINED_POINTER_V1_UNCONFINED_SINCE_VERSION 1 - -/** - * @ingroup iface_zwp_confined_pointer_v1 - */ -#define ZWP_CONFINED_POINTER_V1_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_zwp_confined_pointer_v1 - */ -#define ZWP_CONFINED_POINTER_V1_SET_REGION_SINCE_VERSION 1 - -/** - * @ingroup iface_zwp_confined_pointer_v1 - * Sends an confined event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zwp_confined_pointer_v1_send_confined(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZWP_CONFINED_POINTER_V1_CONFINED); -} - -/** - * @ingroup iface_zwp_confined_pointer_v1 - * Sends an unconfined event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zwp_confined_pointer_v1_send_unconfined(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZWP_CONFINED_POINTER_V1_UNCONFINED); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/wlr-layer-shell-unstable-v1-protocol.h b/protocols/wlr-layer-shell-unstable-v1-protocol.h deleted file mode 100644 index dd34d59..0000000 --- a/protocols/wlr-layer-shell-unstable-v1-protocol.h +++ /dev/null @@ -1,730 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -#ifndef WLR_LAYER_SHELL_UNSTABLE_V1_SERVER_PROTOCOL_H -#define WLR_LAYER_SHELL_UNSTABLE_V1_SERVER_PROTOCOL_H - -#include -#include -#include "wayland-server.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct wl_client; -struct wl_resource; - -/** - * @page page_wlr_layer_shell_unstable_v1 The wlr_layer_shell_unstable_v1 protocol - * @section page_ifaces_wlr_layer_shell_unstable_v1 Interfaces - * - @subpage page_iface_zwlr_layer_shell_v1 - create surfaces that are layers of the desktop - * - @subpage page_iface_zwlr_layer_surface_v1 - layer metadata interface - * @section page_copyright_wlr_layer_shell_unstable_v1 Copyright - *
- *
- * Copyright © 2017 Drew DeVault
- *
- * Permission to use, copy, modify, distribute, and sell this
- * software and its documentation for any purpose is hereby granted
- * without fee, provided that the above copyright notice appear in
- * all copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * the copyright holders not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission.  The copyright holders make no
- * representations about the suitability of this software for any
- * purpose.  It is provided "as is" without express or implied
- * warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- * 
- */ -struct wl_output; -struct wl_surface; -struct xdg_popup; -struct zwlr_layer_shell_v1; -struct zwlr_layer_surface_v1; - -#ifndef ZWLR_LAYER_SHELL_V1_INTERFACE -#define ZWLR_LAYER_SHELL_V1_INTERFACE -/** - * @page page_iface_zwlr_layer_shell_v1 zwlr_layer_shell_v1 - * @section page_iface_zwlr_layer_shell_v1_desc Description - * - * Clients can use this interface to assign the surface_layer role to - * wl_surfaces. Such surfaces are assigned to a "layer" of the output and - * rendered with a defined z-depth respective to each other. They may also be - * anchored to the edges and corners of a screen and specify input handling - * semantics. This interface should be suitable for the implementation of - * many desktop shell components, and a broad number of other applications - * that interact with the desktop. - * @section page_iface_zwlr_layer_shell_v1_api API - * See @ref iface_zwlr_layer_shell_v1. - */ -/** - * @defgroup iface_zwlr_layer_shell_v1 The zwlr_layer_shell_v1 interface - * - * Clients can use this interface to assign the surface_layer role to - * wl_surfaces. Such surfaces are assigned to a "layer" of the output and - * rendered with a defined z-depth respective to each other. They may also be - * anchored to the edges and corners of a screen and specify input handling - * semantics. This interface should be suitable for the implementation of - * many desktop shell components, and a broad number of other applications - * that interact with the desktop. - */ -extern const struct wl_interface zwlr_layer_shell_v1_interface; -#endif -#ifndef ZWLR_LAYER_SURFACE_V1_INTERFACE -#define ZWLR_LAYER_SURFACE_V1_INTERFACE -/** - * @page page_iface_zwlr_layer_surface_v1 zwlr_layer_surface_v1 - * @section page_iface_zwlr_layer_surface_v1_desc Description - * - * An interface that may be implemented by a wl_surface, for surfaces that - * are designed to be rendered as a layer of a stacked desktop-like - * environment. - * - * Layer surface state (layer, size, anchor, exclusive zone, - * margin, interactivity) is double-buffered, and will be applied at the - * time wl_surface.commit of the corresponding wl_surface is called. - * - * Attaching a null buffer to a layer surface unmaps it. - * - * Unmapping a layer_surface means that the surface cannot be shown by the - * compositor until it is explicitly mapped again. The layer_surface - * returns to the state it had right after layer_shell.get_layer_surface. - * The client can re-map the surface by performing a commit without any - * buffer attached, waiting for a configure event and handling it as usual. - * @section page_iface_zwlr_layer_surface_v1_api API - * See @ref iface_zwlr_layer_surface_v1. - */ -/** - * @defgroup iface_zwlr_layer_surface_v1 The zwlr_layer_surface_v1 interface - * - * An interface that may be implemented by a wl_surface, for surfaces that - * are designed to be rendered as a layer of a stacked desktop-like - * environment. - * - * Layer surface state (layer, size, anchor, exclusive zone, - * margin, interactivity) is double-buffered, and will be applied at the - * time wl_surface.commit of the corresponding wl_surface is called. - * - * Attaching a null buffer to a layer surface unmaps it. - * - * Unmapping a layer_surface means that the surface cannot be shown by the - * compositor until it is explicitly mapped again. The layer_surface - * returns to the state it had right after layer_shell.get_layer_surface. - * The client can re-map the surface by performing a commit without any - * buffer attached, waiting for a configure event and handling it as usual. - */ -extern const struct wl_interface zwlr_layer_surface_v1_interface; -#endif - -#ifndef ZWLR_LAYER_SHELL_V1_ERROR_ENUM -#define ZWLR_LAYER_SHELL_V1_ERROR_ENUM -enum zwlr_layer_shell_v1_error { - /** - * wl_surface has another role - */ - ZWLR_LAYER_SHELL_V1_ERROR_ROLE = 0, - /** - * layer value is invalid - */ - ZWLR_LAYER_SHELL_V1_ERROR_INVALID_LAYER = 1, - /** - * wl_surface has a buffer attached or committed - */ - ZWLR_LAYER_SHELL_V1_ERROR_ALREADY_CONSTRUCTED = 2, -}; -#endif /* ZWLR_LAYER_SHELL_V1_ERROR_ENUM */ - -#ifndef ZWLR_LAYER_SHELL_V1_ERROR_ENUM_IS_VALID -#define ZWLR_LAYER_SHELL_V1_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_zwlr_layer_shell_v1 - * Validate a zwlr_layer_shell_v1 error value. - * - * @return true on success, false on error. - * @ref zwlr_layer_shell_v1_error - */ -static inline bool -zwlr_layer_shell_v1_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWLR_LAYER_SHELL_V1_ERROR_ROLE: - return version >= 1; - case ZWLR_LAYER_SHELL_V1_ERROR_INVALID_LAYER: - return version >= 1; - case ZWLR_LAYER_SHELL_V1_ERROR_ALREADY_CONSTRUCTED: - return version >= 1; - default: - return false; - } -} -#endif /* ZWLR_LAYER_SHELL_V1_ERROR_ENUM_IS_VALID */ - -#ifndef ZWLR_LAYER_SHELL_V1_LAYER_ENUM -#define ZWLR_LAYER_SHELL_V1_LAYER_ENUM -/** - * @ingroup iface_zwlr_layer_shell_v1 - * available layers for surfaces - * - * These values indicate which layers a surface can be rendered in. They - * are ordered by z depth, bottom-most first. Traditional shell surfaces - * will typically be rendered between the bottom and top layers. - * Fullscreen shell surfaces are typically rendered at the top layer. - * Multiple surfaces can share a single layer, and ordering within a - * single layer is undefined. - */ -enum zwlr_layer_shell_v1_layer { - ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND = 0, - ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM = 1, - ZWLR_LAYER_SHELL_V1_LAYER_TOP = 2, - ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY = 3, -}; -#endif /* ZWLR_LAYER_SHELL_V1_LAYER_ENUM */ - -#ifndef ZWLR_LAYER_SHELL_V1_LAYER_ENUM_IS_VALID -#define ZWLR_LAYER_SHELL_V1_LAYER_ENUM_IS_VALID -/** - * @ingroup iface_zwlr_layer_shell_v1 - * Validate a zwlr_layer_shell_v1 layer value. - * - * @return true on success, false on error. - * @ref zwlr_layer_shell_v1_layer - */ -static inline bool -zwlr_layer_shell_v1_layer_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND: - return version >= 1; - case ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM: - return version >= 1; - case ZWLR_LAYER_SHELL_V1_LAYER_TOP: - return version >= 1; - case ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY: - return version >= 1; - default: - return false; - } -} -#endif /* ZWLR_LAYER_SHELL_V1_LAYER_ENUM_IS_VALID */ - -/** - * @ingroup iface_zwlr_layer_shell_v1 - * @struct zwlr_layer_shell_v1_interface - */ -struct zwlr_layer_shell_v1_interface { - /** - * create a layer_surface from a surface - * - * Create a layer surface for an existing surface. This assigns - * the role of layer_surface, or raises a protocol error if another - * role is already assigned. - * - * Creating a layer surface from a wl_surface which has a buffer - * attached or committed is a client error, and any attempts by a - * client to attach or manipulate a buffer prior to the first - * layer_surface.configure call must also be treated as errors. - * - * After creating a layer_surface object and setting it up, the - * client must perform an initial commit without any buffer - * attached. The compositor will reply with a - * layer_surface.configure event. The client must acknowledge it - * and is then allowed to attach a buffer to map the surface. - * - * You may pass NULL for output to allow the compositor to decide - * which output to use. Generally this will be the one that the - * user most recently interacted with. - * - * Clients can specify a namespace that defines the purpose of the - * layer surface. - * @param layer layer to add this surface to - * @param namespace namespace for the layer surface - */ - void (*get_layer_surface)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct wl_resource *surface, - struct wl_resource *output, - uint32_t layer, - const char *namespace); - /** - * destroy the layer_shell object - * - * This request indicates that the client will not use the - * layer_shell object any more. Objects that have been created - * through this instance are not affected. - * @since 3 - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); -}; - - -/** - * @ingroup iface_zwlr_layer_shell_v1 - */ -#define ZWLR_LAYER_SHELL_V1_GET_LAYER_SURFACE_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_shell_v1 - */ -#define ZWLR_LAYER_SHELL_V1_DESTROY_SINCE_VERSION 3 - -#ifndef ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM -#define ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM -/** - * @ingroup iface_zwlr_layer_surface_v1 - * types of keyboard interaction possible for a layer shell surface - * - * Types of keyboard interaction possible for layer shell surfaces. The - * rationale for this is twofold: (1) some applications are not interested - * in keyboard events and not allowing them to be focused can improve the - * desktop experience; (2) some applications will want to take exclusive - * keyboard focus. - */ -enum zwlr_layer_surface_v1_keyboard_interactivity { - /** - * no keyboard focus is possible - * - * This value indicates that this surface is not interested in - * keyboard events and the compositor should never assign it the - * keyboard focus. - * - * This is the default value, set for newly created layer shell - * surfaces. - * - * This is useful for e.g. desktop widgets that display information - * or only have interaction with non-keyboard input devices. - */ - ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE = 0, - /** - * request exclusive keyboard focus - * - * Request exclusive keyboard focus if this surface is above the - * shell surface layer. - * - * For the top and overlay layers, the seat will always give - * exclusive keyboard focus to the top-most layer which has - * keyboard interactivity set to exclusive. If this layer contains - * multiple surfaces with keyboard interactivity set to exclusive, - * the compositor determines the one receiving keyboard events in - * an implementation- defined manner. In this case, no guarantee is - * made when this surface will receive keyboard focus (if ever). - * - * For the bottom and background layers, the compositor is allowed - * to use normal focus semantics. - * - * This setting is mainly intended for applications that need to - * ensure they receive all keyboard events, such as a lock screen - * or a password prompt. - */ - ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE = 1, - /** - * request regular keyboard focus semantics - * - * This requests the compositor to allow this surface to be - * focused and unfocused by the user in an implementation-defined - * manner. The user should be able to unfocus this surface even - * regardless of the layer it is on. - * - * Typically, the compositor will want to use its normal mechanism - * to manage keyboard focus between layer shell surfaces with this - * setting and regular toplevels on the desktop layer (e.g. click - * to focus). Nevertheless, it is possible for a compositor to - * require a special interaction to focus or unfocus layer shell - * surfaces (e.g. requiring a click even if focus follows the mouse - * normally, or providing a keybinding to switch focus between - * layers). - * - * This setting is mainly intended for desktop shell components - * (e.g. panels) that allow keyboard interaction. Using this option - * can allow implementing a desktop shell that can be fully usable - * without the mouse. - * @since 4 - */ - ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND = 2, -}; -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND_SINCE_VERSION 4 -#endif /* ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM */ - -#ifndef ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM_IS_VALID -#define ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM_IS_VALID -/** - * @ingroup iface_zwlr_layer_surface_v1 - * Validate a zwlr_layer_surface_v1 keyboard_interactivity value. - * - * @return true on success, false on error. - * @ref zwlr_layer_surface_v1_keyboard_interactivity - */ -static inline bool -zwlr_layer_surface_v1_keyboard_interactivity_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE: - return version >= 1; - case ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE: - return version >= 1; - case ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND: - return version >= 4; - default: - return false; - } -} -#endif /* ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM_IS_VALID */ - -#ifndef ZWLR_LAYER_SURFACE_V1_ERROR_ENUM -#define ZWLR_LAYER_SURFACE_V1_ERROR_ENUM -enum zwlr_layer_surface_v1_error { - /** - * provided surface state is invalid - */ - ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SURFACE_STATE = 0, - /** - * size is invalid - */ - ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SIZE = 1, - /** - * anchor bitfield is invalid - */ - ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR = 2, - /** - * keyboard interactivity is invalid - */ - ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_KEYBOARD_INTERACTIVITY = 3, -}; -#endif /* ZWLR_LAYER_SURFACE_V1_ERROR_ENUM */ - -#ifndef ZWLR_LAYER_SURFACE_V1_ERROR_ENUM_IS_VALID -#define ZWLR_LAYER_SURFACE_V1_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_zwlr_layer_surface_v1 - * Validate a zwlr_layer_surface_v1 error value. - * - * @return true on success, false on error. - * @ref zwlr_layer_surface_v1_error - */ -static inline bool -zwlr_layer_surface_v1_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SURFACE_STATE: - return version >= 1; - case ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SIZE: - return version >= 1; - case ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR: - return version >= 1; - case ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_KEYBOARD_INTERACTIVITY: - return version >= 1; - default: - return false; - } -} -#endif /* ZWLR_LAYER_SURFACE_V1_ERROR_ENUM_IS_VALID */ - -#ifndef ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM -#define ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM -enum zwlr_layer_surface_v1_anchor { - /** - * the top edge of the anchor rectangle - */ - ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP = 1, - /** - * the bottom edge of the anchor rectangle - */ - ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM = 2, - /** - * the left edge of the anchor rectangle - */ - ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT = 4, - /** - * the right edge of the anchor rectangle - */ - ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT = 8, -}; -#endif /* ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM */ - -#ifndef ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM_IS_VALID -#define ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM_IS_VALID -/** - * @ingroup iface_zwlr_layer_surface_v1 - * Validate a zwlr_layer_surface_v1 anchor value. - * - * @return true on success, false on error. - * @ref zwlr_layer_surface_v1_anchor - */ -static inline bool -zwlr_layer_surface_v1_anchor_is_valid(uint32_t value, uint32_t version) { - uint32_t valid = 0; - if (version >= 1) - valid |= ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP; - if (version >= 1) - valid |= ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM; - if (version >= 1) - valid |= ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT; - if (version >= 1) - valid |= ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT; - return (value & ~valid) == 0; -} -#endif /* ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM_IS_VALID */ - -/** - * @ingroup iface_zwlr_layer_surface_v1 - * @struct zwlr_layer_surface_v1_interface - */ -struct zwlr_layer_surface_v1_interface { - /** - * sets the size of the surface - * - * Sets the size of the surface in surface-local coordinates. The - * compositor will display the surface centered with respect to its - * anchors. - * - * If you pass 0 for either value, the compositor will assign it - * and inform you of the assignment in the configure event. You - * must set your anchor to opposite edges in the dimensions you - * omit; not doing so is a protocol error. Both values are 0 by - * default. - * - * Size is double-buffered, see wl_surface.commit. - */ - void (*set_size)(struct wl_client *client, - struct wl_resource *resource, - uint32_t width, - uint32_t height); - /** - * configures the anchor point of the surface - * - * Requests that the compositor anchor the surface to the - * specified edges and corners. If two orthogonal edges are - * specified (e.g. 'top' and 'left'), then the anchor point will be - * the intersection of the edges (e.g. the top left corner of the - * output); otherwise the anchor point will be centered on that - * edge, or in the center if none is specified. - * - * Anchor is double-buffered, see wl_surface.commit. - */ - void (*set_anchor)(struct wl_client *client, - struct wl_resource *resource, - uint32_t anchor); - /** - * configures the exclusive geometry of this surface - * - * Requests that the compositor avoids occluding an area with - * other surfaces. The compositor's use of this information is - * implementation-dependent - do not assume that this region will - * not actually be occluded. - * - * A positive value is only meaningful if the surface is anchored - * to one edge or an edge and both perpendicular edges. If the - * surface is not anchored, anchored to only two perpendicular - * edges (a corner), anchored to only two parallel edges or - * anchored to all edges, a positive value will be treated the same - * as zero. - * - * A positive zone is the distance from the edge in surface-local - * coordinates to consider exclusive. - * - * Surfaces that do not wish to have an exclusive zone may instead - * specify how they should interact with surfaces that do. If set - * to zero, the surface indicates that it would like to be moved to - * avoid occluding surfaces with a positive exclusive zone. If set - * to -1, the surface indicates that it would not like to be moved - * to accommodate for other surfaces, and the compositor should - * extend it all the way to the edges it is anchored to. - * - * For example, a panel might set its exclusive zone to 10, so that - * maximized shell surfaces are not shown on top of it. A - * notification might set its exclusive zone to 0, so that it is - * moved to avoid occluding the panel, but shell surfaces are shown - * underneath it. A wallpaper or lock screen might set their - * exclusive zone to -1, so that they stretch below or over the - * panel. - * - * The default value is 0. - * - * Exclusive zone is double-buffered, see wl_surface.commit. - */ - void (*set_exclusive_zone)(struct wl_client *client, - struct wl_resource *resource, - int32_t zone); - /** - * sets a margin from the anchor point - * - * Requests that the surface be placed some distance away from - * the anchor point on the output, in surface-local coordinates. - * Setting this value for edges you are not anchored to has no - * effect. - * - * The exclusive zone includes the margin. - * - * Margin is double-buffered, see wl_surface.commit. - */ - void (*set_margin)(struct wl_client *client, - struct wl_resource *resource, - int32_t top, - int32_t right, - int32_t bottom, - int32_t left); - /** - * requests keyboard events - * - * Set how keyboard events are delivered to this surface. By - * default, layer shell surfaces do not receive keyboard events; - * this request can be used to change this. - * - * This setting is inherited by child surfaces set by the get_popup - * request. - * - * Layer surfaces receive pointer, touch, and tablet events - * normally. If you do not want to receive them, set the input - * region on your surface to an empty region. - * - * Keyboard interactivity is double-buffered, see - * wl_surface.commit. - */ - void (*set_keyboard_interactivity)(struct wl_client *client, - struct wl_resource *resource, - uint32_t keyboard_interactivity); - /** - * assign this layer_surface as an xdg_popup parent - * - * This assigns an xdg_popup's parent to this layer_surface. This - * popup should have been created via xdg_surface::get_popup with - * the parent set to NULL, and this request must be invoked before - * committing the popup's initial state. - * - * See the documentation of xdg_popup for more details about what - * an xdg_popup is and how it is used. - */ - void (*get_popup)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *popup); - /** - * ack a configure event - * - * When a configure event is received, if a client commits the - * surface in response to the configure event, then the client must - * make an ack_configure request sometime before the commit - * request, passing along the serial of the configure event. - * - * If the client receives multiple configure events before it can - * respond to one, it only has to ack the last configure event. - * - * A client is not required to commit immediately after sending an - * ack_configure request - it may even ack_configure several times - * before its next surface commit. - * - * A client may send multiple ack_configure requests before - * committing, but only the last request sent before a commit - * indicates which configure event the client really is responding - * to. - * @param serial the serial from the configure event - */ - void (*ack_configure)(struct wl_client *client, - struct wl_resource *resource, - uint32_t serial); - /** - * destroy the layer_surface - * - * This request destroys the layer surface. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * change the layer of the surface - * - * Change the layer that the surface is rendered on. - * - * Layer is double-buffered, see wl_surface.commit. - * @param layer layer to move this surface to - * @since 2 - */ - void (*set_layer)(struct wl_client *client, - struct wl_resource *resource, - uint32_t layer); -}; - -#define ZWLR_LAYER_SURFACE_V1_CONFIGURE 0 -#define ZWLR_LAYER_SURFACE_V1_CLOSED 1 - -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_CONFIGURE_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_CLOSED_SINCE_VERSION 1 - -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_SET_SIZE_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_SET_ANCHOR_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_ZONE_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_SET_MARGIN_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_SET_KEYBOARD_INTERACTIVITY_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_GET_POPUP_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_ACK_CONFIGURE_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_layer_surface_v1 - */ -#define ZWLR_LAYER_SURFACE_V1_SET_LAYER_SINCE_VERSION 2 - -/** - * @ingroup iface_zwlr_layer_surface_v1 - * Sends an configure event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zwlr_layer_surface_v1_send_configure(struct wl_resource *resource_, uint32_t serial, uint32_t width, uint32_t height) -{ - wl_resource_post_event(resource_, ZWLR_LAYER_SURFACE_V1_CONFIGURE, serial, width, height); -} - -/** - * @ingroup iface_zwlr_layer_surface_v1 - * Sends an closed event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zwlr_layer_surface_v1_send_closed(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZWLR_LAYER_SURFACE_V1_CLOSED); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/wlr-output-power-management-unstable-v1-protocol.h b/protocols/wlr-output-power-management-unstable-v1-protocol.h deleted file mode 100644 index 93d6a58..0000000 --- a/protocols/wlr-output-power-management-unstable-v1-protocol.h +++ /dev/null @@ -1,285 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -#ifndef WLR_OUTPUT_POWER_MANAGEMENT_UNSTABLE_V1_SERVER_PROTOCOL_H -#define WLR_OUTPUT_POWER_MANAGEMENT_UNSTABLE_V1_SERVER_PROTOCOL_H - -#include -#include -#include "wayland-server.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct wl_client; -struct wl_resource; - -/** - * @page page_wlr_output_power_management_unstable_v1 The wlr_output_power_management_unstable_v1 protocol - * Control power management modes of outputs - * - * @section page_desc_wlr_output_power_management_unstable_v1 Description - * - * This protocol allows clients to control power management modes - * of outputs that are currently part of the compositor space. The - * intent is to allow special clients like desktop shells to power - * down outputs when the system is idle. - * - * To modify outputs not currently part of the compositor space see - * wlr-output-management. - * - * Warning! The protocol described in this file is experimental and - * backward incompatible changes may be made. Backward compatible changes - * may be added together with the corresponding interface version bump. - * Backward incompatible changes are done by bumping the version number in - * the protocol and interface names and resetting the interface version. - * Once the protocol is to be declared stable, the 'z' prefix and the - * version number in the protocol and interface names are removed and the - * interface version number is reset. - * - * @section page_ifaces_wlr_output_power_management_unstable_v1 Interfaces - * - @subpage page_iface_zwlr_output_power_manager_v1 - manager to create per-output power management - * - @subpage page_iface_zwlr_output_power_v1 - adjust power management mode for an output - * @section page_copyright_wlr_output_power_management_unstable_v1 Copyright - *
- *
- * Copyright © 2019 Purism SPC
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * 
- */ -struct wl_output; -struct zwlr_output_power_manager_v1; -struct zwlr_output_power_v1; - -#ifndef ZWLR_OUTPUT_POWER_MANAGER_V1_INTERFACE -#define ZWLR_OUTPUT_POWER_MANAGER_V1_INTERFACE -/** - * @page page_iface_zwlr_output_power_manager_v1 zwlr_output_power_manager_v1 - * @section page_iface_zwlr_output_power_manager_v1_desc Description - * - * This interface is a manager that allows creating per-output power - * management mode controls. - * @section page_iface_zwlr_output_power_manager_v1_api API - * See @ref iface_zwlr_output_power_manager_v1. - */ -/** - * @defgroup iface_zwlr_output_power_manager_v1 The zwlr_output_power_manager_v1 interface - * - * This interface is a manager that allows creating per-output power - * management mode controls. - */ -extern const struct wl_interface zwlr_output_power_manager_v1_interface; -#endif -#ifndef ZWLR_OUTPUT_POWER_V1_INTERFACE -#define ZWLR_OUTPUT_POWER_V1_INTERFACE -/** - * @page page_iface_zwlr_output_power_v1 zwlr_output_power_v1 - * @section page_iface_zwlr_output_power_v1_desc Description - * - * This object offers requests to set the power management mode of - * an output. - * @section page_iface_zwlr_output_power_v1_api API - * See @ref iface_zwlr_output_power_v1. - */ -/** - * @defgroup iface_zwlr_output_power_v1 The zwlr_output_power_v1 interface - * - * This object offers requests to set the power management mode of - * an output. - */ -extern const struct wl_interface zwlr_output_power_v1_interface; -#endif - -/** - * @ingroup iface_zwlr_output_power_manager_v1 - * @struct zwlr_output_power_manager_v1_interface - */ -struct zwlr_output_power_manager_v1_interface { - /** - * get a power management for an output - * - * Create a output power management mode control that can be used - * to adjust the power management mode for a given output. - */ - void (*get_output_power)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct wl_resource *output); - /** - * destroy the manager - * - * All objects created by the manager will still remain valid, - * until their appropriate destroy request has been called. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); -}; - - -/** - * @ingroup iface_zwlr_output_power_manager_v1 - */ -#define ZWLR_OUTPUT_POWER_MANAGER_V1_GET_OUTPUT_POWER_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_output_power_manager_v1 - */ -#define ZWLR_OUTPUT_POWER_MANAGER_V1_DESTROY_SINCE_VERSION 1 - -#ifndef ZWLR_OUTPUT_POWER_V1_MODE_ENUM -#define ZWLR_OUTPUT_POWER_V1_MODE_ENUM -enum zwlr_output_power_v1_mode { - /** - * Output is turned off. - */ - ZWLR_OUTPUT_POWER_V1_MODE_OFF = 0, - /** - * Output is turned on, no power saving - */ - ZWLR_OUTPUT_POWER_V1_MODE_ON = 1, -}; -#endif /* ZWLR_OUTPUT_POWER_V1_MODE_ENUM */ - -#ifndef ZWLR_OUTPUT_POWER_V1_MODE_ENUM_IS_VALID -#define ZWLR_OUTPUT_POWER_V1_MODE_ENUM_IS_VALID -/** - * @ingroup iface_zwlr_output_power_v1 - * Validate a zwlr_output_power_v1 mode value. - * - * @return true on success, false on error. - * @ref zwlr_output_power_v1_mode - */ -static inline bool -zwlr_output_power_v1_mode_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWLR_OUTPUT_POWER_V1_MODE_OFF: - return version >= 1; - case ZWLR_OUTPUT_POWER_V1_MODE_ON: - return version >= 1; - default: - return false; - } -} -#endif /* ZWLR_OUTPUT_POWER_V1_MODE_ENUM_IS_VALID */ - -#ifndef ZWLR_OUTPUT_POWER_V1_ERROR_ENUM -#define ZWLR_OUTPUT_POWER_V1_ERROR_ENUM -enum zwlr_output_power_v1_error { - /** - * inexistent power save mode - */ - ZWLR_OUTPUT_POWER_V1_ERROR_INVALID_MODE = 1, -}; -#endif /* ZWLR_OUTPUT_POWER_V1_ERROR_ENUM */ - -#ifndef ZWLR_OUTPUT_POWER_V1_ERROR_ENUM_IS_VALID -#define ZWLR_OUTPUT_POWER_V1_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_zwlr_output_power_v1 - * Validate a zwlr_output_power_v1 error value. - * - * @return true on success, false on error. - * @ref zwlr_output_power_v1_error - */ -static inline bool -zwlr_output_power_v1_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case ZWLR_OUTPUT_POWER_V1_ERROR_INVALID_MODE: - return version >= 1; - default: - return false; - } -} -#endif /* ZWLR_OUTPUT_POWER_V1_ERROR_ENUM_IS_VALID */ - -/** - * @ingroup iface_zwlr_output_power_v1 - * @struct zwlr_output_power_v1_interface - */ -struct zwlr_output_power_v1_interface { - /** - * Set an outputs power save mode - * - * Set an output's power save mode to the given mode. The mode - * change is effective immediately. If the output does not support - * the given mode a failed event is sent. - * @param mode the power save mode to set - */ - void (*set_mode)(struct wl_client *client, - struct wl_resource *resource, - uint32_t mode); - /** - * destroy this power management - * - * Destroys the output power management mode control object. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); -}; - -#define ZWLR_OUTPUT_POWER_V1_MODE 0 -#define ZWLR_OUTPUT_POWER_V1_FAILED 1 - -/** - * @ingroup iface_zwlr_output_power_v1 - */ -#define ZWLR_OUTPUT_POWER_V1_MODE_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_output_power_v1 - */ -#define ZWLR_OUTPUT_POWER_V1_FAILED_SINCE_VERSION 1 - -/** - * @ingroup iface_zwlr_output_power_v1 - */ -#define ZWLR_OUTPUT_POWER_V1_SET_MODE_SINCE_VERSION 1 -/** - * @ingroup iface_zwlr_output_power_v1 - */ -#define ZWLR_OUTPUT_POWER_V1_DESTROY_SINCE_VERSION 1 - -/** - * @ingroup iface_zwlr_output_power_v1 - * Sends an mode event to the client owning the resource. - * @param resource_ The client's resource - * @param mode the output's new power management mode - */ -static inline void -zwlr_output_power_v1_send_mode(struct wl_resource *resource_, uint32_t mode) -{ - wl_resource_post_event(resource_, ZWLR_OUTPUT_POWER_V1_MODE, mode); -} - -/** - * @ingroup iface_zwlr_output_power_v1 - * Sends an failed event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -zwlr_output_power_v1_send_failed(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, ZWLR_OUTPUT_POWER_V1_FAILED); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/protocols/xdg-shell-protocol.h b/protocols/xdg-shell-protocol.h deleted file mode 100644 index 1ce3039..0000000 --- a/protocols/xdg-shell-protocol.h +++ /dev/null @@ -1,2392 +0,0 @@ -/* Generated by wayland-scanner 1.25.0 */ - -#ifndef XDG_SHELL_SERVER_PROTOCOL_H -#define XDG_SHELL_SERVER_PROTOCOL_H - -#include -#include -#include "wayland-server.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct wl_client; -struct wl_resource; - -/** - * @page page_xdg_shell The xdg_shell protocol - * @section page_ifaces_xdg_shell Interfaces - * - @subpage page_iface_xdg_wm_base - create desktop-style surfaces - * - @subpage page_iface_xdg_positioner - child surface positioner - * - @subpage page_iface_xdg_surface - desktop user interface surface base interface - * - @subpage page_iface_xdg_toplevel - toplevel surface - * - @subpage page_iface_xdg_popup - short-lived, popup surfaces for menus - * @section page_copyright_xdg_shell Copyright - *
- *
- * Copyright © 2008-2013 Kristian Høgsberg
- * Copyright © 2013      Rafael Antognolli
- * Copyright © 2013      Jasper St. Pierre
- * Copyright © 2010-2013 Intel Corporation
- * Copyright © 2015-2017 Samsung Electronics Co., Ltd
- * Copyright © 2015-2017 Red Hat Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- * 
- */ -struct wl_output; -struct wl_seat; -struct wl_surface; -struct xdg_popup; -struct xdg_positioner; -struct xdg_surface; -struct xdg_toplevel; -struct xdg_wm_base; - -#ifndef XDG_WM_BASE_INTERFACE -#define XDG_WM_BASE_INTERFACE -/** - * @page page_iface_xdg_wm_base xdg_wm_base - * @section page_iface_xdg_wm_base_desc Description - * - * The xdg_wm_base interface is exposed as a global object enabling clients - * to turn their wl_surfaces into windows in a desktop environment. It - * defines the basic functionality needed for clients and the compositor to - * create windows that can be dragged, resized, maximized, etc, as well as - * creating transient windows such as popup menus. - * @section page_iface_xdg_wm_base_api API - * See @ref iface_xdg_wm_base. - */ -/** - * @defgroup iface_xdg_wm_base The xdg_wm_base interface - * - * The xdg_wm_base interface is exposed as a global object enabling clients - * to turn their wl_surfaces into windows in a desktop environment. It - * defines the basic functionality needed for clients and the compositor to - * create windows that can be dragged, resized, maximized, etc, as well as - * creating transient windows such as popup menus. - */ -extern const struct wl_interface xdg_wm_base_interface; -#endif -#ifndef XDG_POSITIONER_INTERFACE -#define XDG_POSITIONER_INTERFACE -/** - * @page page_iface_xdg_positioner xdg_positioner - * @section page_iface_xdg_positioner_desc Description - * - * The xdg_positioner provides a collection of rules for the placement of a - * child surface relative to a parent surface. Rules can be defined to ensure - * the child surface remains within the visible area's borders, and to - * specify how the child surface changes its position, such as sliding along - * an axis, or flipping around a rectangle. These positioner-created rules are - * constrained by the requirement that a child surface must intersect with or - * be at least partially adjacent to its parent surface. - * - * See the various requests for details about possible rules. - * - * At the time of the request, the compositor makes a copy of the rules - * specified by the xdg_positioner. Thus, after the request is complete the - * xdg_positioner object can be destroyed or reused; further changes to the - * object will have no effect on previous usages. - * - * For an xdg_positioner object to be considered complete, it must have a - * non-zero size set by set_size, and a non-zero anchor rectangle set by - * set_anchor_rect. Passing an incomplete xdg_positioner object when - * positioning a surface raises an invalid_positioner error. - * @section page_iface_xdg_positioner_api API - * See @ref iface_xdg_positioner. - */ -/** - * @defgroup iface_xdg_positioner The xdg_positioner interface - * - * The xdg_positioner provides a collection of rules for the placement of a - * child surface relative to a parent surface. Rules can be defined to ensure - * the child surface remains within the visible area's borders, and to - * specify how the child surface changes its position, such as sliding along - * an axis, or flipping around a rectangle. These positioner-created rules are - * constrained by the requirement that a child surface must intersect with or - * be at least partially adjacent to its parent surface. - * - * See the various requests for details about possible rules. - * - * At the time of the request, the compositor makes a copy of the rules - * specified by the xdg_positioner. Thus, after the request is complete the - * xdg_positioner object can be destroyed or reused; further changes to the - * object will have no effect on previous usages. - * - * For an xdg_positioner object to be considered complete, it must have a - * non-zero size set by set_size, and a non-zero anchor rectangle set by - * set_anchor_rect. Passing an incomplete xdg_positioner object when - * positioning a surface raises an invalid_positioner error. - */ -extern const struct wl_interface xdg_positioner_interface; -#endif -#ifndef XDG_SURFACE_INTERFACE -#define XDG_SURFACE_INTERFACE -/** - * @page page_iface_xdg_surface xdg_surface - * @section page_iface_xdg_surface_desc Description - * - * An interface that may be implemented by a wl_surface, for - * implementations that provide a desktop-style user interface. - * - * It provides a base set of functionality required to construct user - * interface elements requiring management by the compositor, such as - * toplevel windows, menus, etc. The types of functionality are split into - * xdg_surface roles. - * - * Creating an xdg_surface does not set the role for a wl_surface. In order - * to map an xdg_surface, the client must create a role-specific object - * using, e.g., get_toplevel, get_popup. The wl_surface for any given - * xdg_surface can have at most one role, and may not be assigned any role - * not based on xdg_surface. - * - * A role must be assigned before any other requests are made to the - * xdg_surface object. - * - * The client must call wl_surface.commit on the corresponding wl_surface - * for the xdg_surface state to take effect. - * - * Creating an xdg_surface from a wl_surface which has a buffer attached or - * committed is a client error, and any attempts by a client to attach or - * manipulate a buffer prior to the first xdg_surface.configure call must - * also be treated as errors. - * - * After creating a role-specific object and setting it up (e.g. by sending - * the title, app ID, size constraints, parent, etc), the client must - * perform an initial commit without any buffer attached. The compositor - * will reply with initial wl_surface state such as - * wl_surface.preferred_buffer_scale followed by an xdg_surface.configure - * event. The client must acknowledge it and is then allowed to attach a - * buffer to map the surface. - * - * Mapping an xdg_surface-based role surface is defined as making it - * possible for the surface to be shown by the compositor. Note that - * a mapped surface is not guaranteed to be visible once it is mapped. - * - * For an xdg_surface to be mapped by the compositor, the following - * conditions must be met: - * (1) the client has assigned an xdg_surface-based role to the surface - * (2) the client has set and committed the xdg_surface state and the - * role-dependent state to the surface - * (3) the client has committed a buffer to the surface - * - * A newly-unmapped surface is considered to have met condition (1) out - * of the 3 required conditions for mapping a surface if its role surface - * has not been destroyed, i.e. the client must perform the initial commit - * again before attaching a buffer. - * @section page_iface_xdg_surface_api API - * See @ref iface_xdg_surface. - */ -/** - * @defgroup iface_xdg_surface The xdg_surface interface - * - * An interface that may be implemented by a wl_surface, for - * implementations that provide a desktop-style user interface. - * - * It provides a base set of functionality required to construct user - * interface elements requiring management by the compositor, such as - * toplevel windows, menus, etc. The types of functionality are split into - * xdg_surface roles. - * - * Creating an xdg_surface does not set the role for a wl_surface. In order - * to map an xdg_surface, the client must create a role-specific object - * using, e.g., get_toplevel, get_popup. The wl_surface for any given - * xdg_surface can have at most one role, and may not be assigned any role - * not based on xdg_surface. - * - * A role must be assigned before any other requests are made to the - * xdg_surface object. - * - * The client must call wl_surface.commit on the corresponding wl_surface - * for the xdg_surface state to take effect. - * - * Creating an xdg_surface from a wl_surface which has a buffer attached or - * committed is a client error, and any attempts by a client to attach or - * manipulate a buffer prior to the first xdg_surface.configure call must - * also be treated as errors. - * - * After creating a role-specific object and setting it up (e.g. by sending - * the title, app ID, size constraints, parent, etc), the client must - * perform an initial commit without any buffer attached. The compositor - * will reply with initial wl_surface state such as - * wl_surface.preferred_buffer_scale followed by an xdg_surface.configure - * event. The client must acknowledge it and is then allowed to attach a - * buffer to map the surface. - * - * Mapping an xdg_surface-based role surface is defined as making it - * possible for the surface to be shown by the compositor. Note that - * a mapped surface is not guaranteed to be visible once it is mapped. - * - * For an xdg_surface to be mapped by the compositor, the following - * conditions must be met: - * (1) the client has assigned an xdg_surface-based role to the surface - * (2) the client has set and committed the xdg_surface state and the - * role-dependent state to the surface - * (3) the client has committed a buffer to the surface - * - * A newly-unmapped surface is considered to have met condition (1) out - * of the 3 required conditions for mapping a surface if its role surface - * has not been destroyed, i.e. the client must perform the initial commit - * again before attaching a buffer. - */ -extern const struct wl_interface xdg_surface_interface; -#endif -#ifndef XDG_TOPLEVEL_INTERFACE -#define XDG_TOPLEVEL_INTERFACE -/** - * @page page_iface_xdg_toplevel xdg_toplevel - * @section page_iface_xdg_toplevel_desc Description - * - * This interface defines an xdg_surface role which allows a surface to, - * among other things, set window-like properties such as maximize, - * fullscreen, and minimize, set application-specific metadata like title and - * id, and well as trigger user interactive operations such as interactive - * resize and move. - * - * An xdg_toplevel by default is responsible for providing the full intended - * visual representation of the toplevel, which depending on the window - * state, may mean things like a title bar, window controls and drop shadow. - * - * Unmapping an xdg_toplevel means that the surface cannot be shown - * by the compositor until it is explicitly mapped again. - * All active operations (e.g., move, resize) are canceled and all - * attributes (e.g. title, state, stacking, ...) are discarded for - * an xdg_toplevel surface when it is unmapped. The xdg_toplevel returns to - * the state it had right after xdg_surface.get_toplevel. The client - * can re-map the toplevel by performing a commit without any buffer - * attached, waiting for a configure event and handling it as usual (see - * xdg_surface description). - * - * Attaching a null buffer to a toplevel unmaps the surface. - * @section page_iface_xdg_toplevel_api API - * See @ref iface_xdg_toplevel. - */ -/** - * @defgroup iface_xdg_toplevel The xdg_toplevel interface - * - * This interface defines an xdg_surface role which allows a surface to, - * among other things, set window-like properties such as maximize, - * fullscreen, and minimize, set application-specific metadata like title and - * id, and well as trigger user interactive operations such as interactive - * resize and move. - * - * An xdg_toplevel by default is responsible for providing the full intended - * visual representation of the toplevel, which depending on the window - * state, may mean things like a title bar, window controls and drop shadow. - * - * Unmapping an xdg_toplevel means that the surface cannot be shown - * by the compositor until it is explicitly mapped again. - * All active operations (e.g., move, resize) are canceled and all - * attributes (e.g. title, state, stacking, ...) are discarded for - * an xdg_toplevel surface when it is unmapped. The xdg_toplevel returns to - * the state it had right after xdg_surface.get_toplevel. The client - * can re-map the toplevel by performing a commit without any buffer - * attached, waiting for a configure event and handling it as usual (see - * xdg_surface description). - * - * Attaching a null buffer to a toplevel unmaps the surface. - */ -extern const struct wl_interface xdg_toplevel_interface; -#endif -#ifndef XDG_POPUP_INTERFACE -#define XDG_POPUP_INTERFACE -/** - * @page page_iface_xdg_popup xdg_popup - * @section page_iface_xdg_popup_desc Description - * - * A popup surface is a short-lived, temporary surface. It can be used to - * implement for example menus, popovers, tooltips and other similar user - * interface concepts. - * - * A popup can be made to take an explicit grab. See xdg_popup.grab for - * details. - * - * When the popup is dismissed, a popup_done event will be sent out, and at - * the same time the surface will be unmapped. See the xdg_popup.popup_done - * event for details. - * - * Explicitly destroying the xdg_popup object will also dismiss the popup and - * unmap the surface. Clients that want to dismiss the popup when another - * surface of their own is clicked should dismiss the popup using the destroy - * request. - * - * A newly created xdg_popup will be stacked on top of all previously created - * xdg_popup surfaces associated with the same xdg_toplevel. - * - * The parent of an xdg_popup must be mapped (see the xdg_surface - * description) before the xdg_popup itself. - * - * The client must call wl_surface.commit on the corresponding wl_surface - * for the xdg_popup state to take effect. - * @section page_iface_xdg_popup_api API - * See @ref iface_xdg_popup. - */ -/** - * @defgroup iface_xdg_popup The xdg_popup interface - * - * A popup surface is a short-lived, temporary surface. It can be used to - * implement for example menus, popovers, tooltips and other similar user - * interface concepts. - * - * A popup can be made to take an explicit grab. See xdg_popup.grab for - * details. - * - * When the popup is dismissed, a popup_done event will be sent out, and at - * the same time the surface will be unmapped. See the xdg_popup.popup_done - * event for details. - * - * Explicitly destroying the xdg_popup object will also dismiss the popup and - * unmap the surface. Clients that want to dismiss the popup when another - * surface of their own is clicked should dismiss the popup using the destroy - * request. - * - * A newly created xdg_popup will be stacked on top of all previously created - * xdg_popup surfaces associated with the same xdg_toplevel. - * - * The parent of an xdg_popup must be mapped (see the xdg_surface - * description) before the xdg_popup itself. - * - * The client must call wl_surface.commit on the corresponding wl_surface - * for the xdg_popup state to take effect. - */ -extern const struct wl_interface xdg_popup_interface; -#endif - -#ifndef XDG_WM_BASE_ERROR_ENUM -#define XDG_WM_BASE_ERROR_ENUM -enum xdg_wm_base_error { - /** - * given wl_surface has another role - */ - XDG_WM_BASE_ERROR_ROLE = 0, - /** - * xdg_wm_base was destroyed before children - */ - XDG_WM_BASE_ERROR_DEFUNCT_SURFACES = 1, - /** - * the client tried to map or destroy a non-topmost popup - */ - XDG_WM_BASE_ERROR_NOT_THE_TOPMOST_POPUP = 2, - /** - * the client specified an invalid popup parent surface - */ - XDG_WM_BASE_ERROR_INVALID_POPUP_PARENT = 3, - /** - * the client provided an invalid surface state - */ - XDG_WM_BASE_ERROR_INVALID_SURFACE_STATE = 4, - /** - * the client provided an invalid positioner - */ - XDG_WM_BASE_ERROR_INVALID_POSITIONER = 5, - /** - * the client didn’t respond to a ping event in time - */ - XDG_WM_BASE_ERROR_UNRESPONSIVE = 6, -}; -#endif /* XDG_WM_BASE_ERROR_ENUM */ - -#ifndef XDG_WM_BASE_ERROR_ENUM_IS_VALID -#define XDG_WM_BASE_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_xdg_wm_base - * Validate a xdg_wm_base error value. - * - * @return true on success, false on error. - * @ref xdg_wm_base_error - */ -static inline bool -xdg_wm_base_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_WM_BASE_ERROR_ROLE: - return version >= 1; - case XDG_WM_BASE_ERROR_DEFUNCT_SURFACES: - return version >= 1; - case XDG_WM_BASE_ERROR_NOT_THE_TOPMOST_POPUP: - return version >= 1; - case XDG_WM_BASE_ERROR_INVALID_POPUP_PARENT: - return version >= 1; - case XDG_WM_BASE_ERROR_INVALID_SURFACE_STATE: - return version >= 1; - case XDG_WM_BASE_ERROR_INVALID_POSITIONER: - return version >= 1; - case XDG_WM_BASE_ERROR_UNRESPONSIVE: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_WM_BASE_ERROR_ENUM_IS_VALID */ - -/** - * @ingroup iface_xdg_wm_base - * @struct xdg_wm_base_interface - */ -struct xdg_wm_base_interface { - /** - * destroy xdg_wm_base - * - * Destroy this xdg_wm_base object. - * - * Destroying a bound xdg_wm_base object while there are surfaces - * still alive created by this xdg_wm_base object instance is - * illegal and will result in a defunct_surfaces error. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * create a positioner object - * - * Create a positioner object. A positioner object is used to - * position surfaces relative to some parent surface. See the - * interface description and xdg_surface.get_popup for details. - */ - void (*create_positioner)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id); - /** - * create a shell surface from a surface - * - * This creates an xdg_surface for the given surface. An - * xdg_surface is used as basis to define a role to a given - * surface, such as xdg_toplevel or xdg_popup. It also manages - * functionality shared between xdg_surface based surface roles. - * - * While xdg_surface itself is not a role, the corresponding - * surface may only be assigned a role extending xdg_surface, such - * as xdg_toplevel or xdg_popup. It is illegal to create an - * xdg_surface for a wl_surface which already has anassigned role - * and this will result in a role error. - * - * See the documentation of xdg_surface for more details about what - * an xdg_surface is and how it is used. - */ - void (*get_xdg_surface)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct wl_resource *surface); - /** - * respond to a ping event - * - * A client must respond to a ping event with a pong request or - * the client may be deemed unresponsive. See xdg_wm_base.ping and - * xdg_wm_base.error.unresponsive. - * @param serial serial of the ping event - */ - void (*pong)(struct wl_client *client, - struct wl_resource *resource, - uint32_t serial); -}; - -#define XDG_WM_BASE_PING 0 - -/** - * @ingroup iface_xdg_wm_base - */ -#define XDG_WM_BASE_PING_SINCE_VERSION 1 - -/** - * @ingroup iface_xdg_wm_base - */ -#define XDG_WM_BASE_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_wm_base - */ -#define XDG_WM_BASE_CREATE_POSITIONER_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_wm_base - */ -#define XDG_WM_BASE_GET_XDG_SURFACE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_wm_base - */ -#define XDG_WM_BASE_PONG_SINCE_VERSION 1 - -/** - * @ingroup iface_xdg_wm_base - * Sends an ping event to the client owning the resource. - * @param resource_ The client's resource - * @param serial pass this to the pong request - */ -static inline void -xdg_wm_base_send_ping(struct wl_resource *resource_, uint32_t serial) -{ - wl_resource_post_event(resource_, XDG_WM_BASE_PING, serial); -} - -#ifndef XDG_POSITIONER_ERROR_ENUM -#define XDG_POSITIONER_ERROR_ENUM -enum xdg_positioner_error { - /** - * invalid input provided - */ - XDG_POSITIONER_ERROR_INVALID_INPUT = 0, -}; -#endif /* XDG_POSITIONER_ERROR_ENUM */ - -#ifndef XDG_POSITIONER_ERROR_ENUM_IS_VALID -#define XDG_POSITIONER_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_xdg_positioner - * Validate a xdg_positioner error value. - * - * @return true on success, false on error. - * @ref xdg_positioner_error - */ -static inline bool -xdg_positioner_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_POSITIONER_ERROR_INVALID_INPUT: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_POSITIONER_ERROR_ENUM_IS_VALID */ - -#ifndef XDG_POSITIONER_ANCHOR_ENUM -#define XDG_POSITIONER_ANCHOR_ENUM -enum xdg_positioner_anchor { - XDG_POSITIONER_ANCHOR_NONE = 0, - XDG_POSITIONER_ANCHOR_TOP = 1, - XDG_POSITIONER_ANCHOR_BOTTOM = 2, - XDG_POSITIONER_ANCHOR_LEFT = 3, - XDG_POSITIONER_ANCHOR_RIGHT = 4, - XDG_POSITIONER_ANCHOR_TOP_LEFT = 5, - XDG_POSITIONER_ANCHOR_BOTTOM_LEFT = 6, - XDG_POSITIONER_ANCHOR_TOP_RIGHT = 7, - XDG_POSITIONER_ANCHOR_BOTTOM_RIGHT = 8, -}; -#endif /* XDG_POSITIONER_ANCHOR_ENUM */ - -#ifndef XDG_POSITIONER_ANCHOR_ENUM_IS_VALID -#define XDG_POSITIONER_ANCHOR_ENUM_IS_VALID -/** - * @ingroup iface_xdg_positioner - * Validate a xdg_positioner anchor value. - * - * @return true on success, false on error. - * @ref xdg_positioner_anchor - */ -static inline bool -xdg_positioner_anchor_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_POSITIONER_ANCHOR_NONE: - return version >= 1; - case XDG_POSITIONER_ANCHOR_TOP: - return version >= 1; - case XDG_POSITIONER_ANCHOR_BOTTOM: - return version >= 1; - case XDG_POSITIONER_ANCHOR_LEFT: - return version >= 1; - case XDG_POSITIONER_ANCHOR_RIGHT: - return version >= 1; - case XDG_POSITIONER_ANCHOR_TOP_LEFT: - return version >= 1; - case XDG_POSITIONER_ANCHOR_BOTTOM_LEFT: - return version >= 1; - case XDG_POSITIONER_ANCHOR_TOP_RIGHT: - return version >= 1; - case XDG_POSITIONER_ANCHOR_BOTTOM_RIGHT: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_POSITIONER_ANCHOR_ENUM_IS_VALID */ - -#ifndef XDG_POSITIONER_GRAVITY_ENUM -#define XDG_POSITIONER_GRAVITY_ENUM -enum xdg_positioner_gravity { - XDG_POSITIONER_GRAVITY_NONE = 0, - XDG_POSITIONER_GRAVITY_TOP = 1, - XDG_POSITIONER_GRAVITY_BOTTOM = 2, - XDG_POSITIONER_GRAVITY_LEFT = 3, - XDG_POSITIONER_GRAVITY_RIGHT = 4, - XDG_POSITIONER_GRAVITY_TOP_LEFT = 5, - XDG_POSITIONER_GRAVITY_BOTTOM_LEFT = 6, - XDG_POSITIONER_GRAVITY_TOP_RIGHT = 7, - XDG_POSITIONER_GRAVITY_BOTTOM_RIGHT = 8, -}; -#endif /* XDG_POSITIONER_GRAVITY_ENUM */ - -#ifndef XDG_POSITIONER_GRAVITY_ENUM_IS_VALID -#define XDG_POSITIONER_GRAVITY_ENUM_IS_VALID -/** - * @ingroup iface_xdg_positioner - * Validate a xdg_positioner gravity value. - * - * @return true on success, false on error. - * @ref xdg_positioner_gravity - */ -static inline bool -xdg_positioner_gravity_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_POSITIONER_GRAVITY_NONE: - return version >= 1; - case XDG_POSITIONER_GRAVITY_TOP: - return version >= 1; - case XDG_POSITIONER_GRAVITY_BOTTOM: - return version >= 1; - case XDG_POSITIONER_GRAVITY_LEFT: - return version >= 1; - case XDG_POSITIONER_GRAVITY_RIGHT: - return version >= 1; - case XDG_POSITIONER_GRAVITY_TOP_LEFT: - return version >= 1; - case XDG_POSITIONER_GRAVITY_BOTTOM_LEFT: - return version >= 1; - case XDG_POSITIONER_GRAVITY_TOP_RIGHT: - return version >= 1; - case XDG_POSITIONER_GRAVITY_BOTTOM_RIGHT: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_POSITIONER_GRAVITY_ENUM_IS_VALID */ - -#ifndef XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM -#define XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM -/** - * @ingroup iface_xdg_positioner - * constraint adjustments - * - * The constraint adjustment value define ways the compositor will adjust - * the position of the surface, if the unadjusted position would result - * in the surface being partly constrained. - * - * Whether a surface is considered 'constrained' is left to the compositor - * to determine. For example, the surface may be partly outside the - * compositor's defined 'work area', thus necessitating the child surface's - * position be adjusted until it is entirely inside the work area. - * - * The adjustments can be combined, according to a defined precedence: 1) - * Flip, 2) Slide, 3) Resize. - */ -enum xdg_positioner_constraint_adjustment { - /** - * don't move the child surface when constrained - * - * Don't alter the surface position even if it is constrained on - * some axis, for example partially outside the edge of an output. - */ - XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_NONE = 0, - /** - * move along the x axis until unconstrained - * - * Slide the surface along the x axis until it is no longer - * constrained. - * - * First try to slide towards the direction of the gravity on the x - * axis until either the edge in the opposite direction of the - * gravity is unconstrained or the edge in the direction of the - * gravity is constrained. - * - * Then try to slide towards the opposite direction of the gravity - * on the x axis until either the edge in the direction of the - * gravity is unconstrained or the edge in the opposite direction - * of the gravity is constrained. - */ - XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_X = 1, - /** - * move along the y axis until unconstrained - * - * Slide the surface along the y axis until it is no longer - * constrained. - * - * First try to slide towards the direction of the gravity on the y - * axis until either the edge in the opposite direction of the - * gravity is unconstrained or the edge in the direction of the - * gravity is constrained. - * - * Then try to slide towards the opposite direction of the gravity - * on the y axis until either the edge in the direction of the - * gravity is unconstrained or the edge in the opposite direction - * of the gravity is constrained. - */ - XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_Y = 2, - /** - * invert the anchor and gravity on the x axis - * - * Invert the anchor and gravity on the x axis if the surface is - * constrained on the x axis. For example, if the left edge of the - * surface is constrained, the gravity is 'left' and the anchor is - * 'left', change the gravity to 'right' and the anchor to 'right'. - * - * If the adjusted position also ends up being constrained, the - * resulting position of the flip_x adjustment will be the one - * before the adjustment. - */ - XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_X = 4, - /** - * invert the anchor and gravity on the y axis - * - * Invert the anchor and gravity on the y axis if the surface is - * constrained on the y axis. For example, if the bottom edge of - * the surface is constrained, the gravity is 'bottom' and the - * anchor is 'bottom', change the gravity to 'top' and the anchor - * to 'top'. - * - * The adjusted position is calculated given the original anchor - * rectangle and offset, but with the new flipped anchor and - * gravity values. - * - * If the adjusted position also ends up being constrained, the - * resulting position of the flip_y adjustment will be the one - * before the adjustment. - */ - XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_Y = 8, - /** - * horizontally resize the surface - * - * Resize the surface horizontally so that it is completely - * unconstrained. - */ - XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_X = 16, - /** - * vertically resize the surface - * - * Resize the surface vertically so that it is completely - * unconstrained. - */ - XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_Y = 32, -}; -#endif /* XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM */ - -#ifndef XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM_IS_VALID -#define XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM_IS_VALID -/** - * @ingroup iface_xdg_positioner - * Validate a xdg_positioner constraint_adjustment value. - * - * @return true on success, false on error. - * @ref xdg_positioner_constraint_adjustment - */ -static inline bool -xdg_positioner_constraint_adjustment_is_valid(uint32_t value, uint32_t version) { - uint32_t valid = 0; - if (version >= 1) - valid |= XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_NONE; - if (version >= 1) - valid |= XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_X; - if (version >= 1) - valid |= XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_SLIDE_Y; - if (version >= 1) - valid |= XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_X; - if (version >= 1) - valid |= XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_FLIP_Y; - if (version >= 1) - valid |= XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_X; - if (version >= 1) - valid |= XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_RESIZE_Y; - return (value & ~valid) == 0; -} -#endif /* XDG_POSITIONER_CONSTRAINT_ADJUSTMENT_ENUM_IS_VALID */ - -/** - * @ingroup iface_xdg_positioner - * @struct xdg_positioner_interface - */ -struct xdg_positioner_interface { - /** - * destroy the xdg_positioner object - * - * Notify the compositor that the xdg_positioner will no longer - * be used. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * set the size of the to-be positioned rectangle - * - * Set the size of the surface that is to be positioned with the - * positioner object. The size is in surface-local coordinates and - * corresponds to the window geometry. See - * xdg_surface.set_window_geometry. - * - * If a zero or negative size is set the invalid_input error is - * raised. - * @param width width of positioned rectangle - * @param height height of positioned rectangle - */ - void (*set_size)(struct wl_client *client, - struct wl_resource *resource, - int32_t width, - int32_t height); - /** - * set the anchor rectangle within the parent surface - * - * Specify the anchor rectangle within the parent surface that - * the child surface will be placed relative to. The rectangle is - * relative to the window geometry as defined by - * xdg_surface.set_window_geometry of the parent surface. - * - * When the xdg_positioner object is used to position a child - * surface, the anchor rectangle may not extend outside the window - * geometry of the positioned child's parent surface. - * - * If a negative size is set the invalid_input error is raised. - * @param x x position of anchor rectangle - * @param y y position of anchor rectangle - * @param width width of anchor rectangle - * @param height height of anchor rectangle - */ - void (*set_anchor_rect)(struct wl_client *client, - struct wl_resource *resource, - int32_t x, - int32_t y, - int32_t width, - int32_t height); - /** - * set anchor rectangle anchor - * - * Defines the anchor point for the anchor rectangle. The - * specified anchor is used to derive an anchor point that the - * child surface will be positioned relative to. If a corner anchor - * is set (e.g. 'top_left' or 'bottom_right'), the anchor point - * will be at the specified corner; otherwise, the derived anchor - * point will be centered on the specified edge, or in the center - * of the anchor rectangle if no edge is specified. - * @param anchor anchor point - */ - void (*set_anchor)(struct wl_client *client, - struct wl_resource *resource, - uint32_t anchor); - /** - * set child surface gravity - * - * Defines in what direction a surface should be positioned, - * relative to the anchor point of the parent surface. If a corner - * gravity is specified (e.g. 'bottom_right' or 'top_left'), then - * the child surface will be placed towards the specified gravity; - * otherwise, the child surface will be centered over the anchor - * point on any axis that had no gravity specified. If the gravity - * is not in the ‘gravity’ enum, an invalid_input error is - * raised. - * @param gravity gravity direction - */ - void (*set_gravity)(struct wl_client *client, - struct wl_resource *resource, - uint32_t gravity); - /** - * set the adjustment to be done when constrained - * - * Specify how the window should be positioned if the originally - * intended position caused the surface to be constrained, meaning - * at least partially outside positioning boundaries set by the - * compositor. The adjustment is set by constructing a bitmask - * describing the adjustment to be made when the surface is - * constrained on that axis. - * - * If no bit for one axis is set, the compositor will assume that - * the child surface should not change its position on that axis - * when constrained. - * - * If more than one bit for one axis is set, the order of how - * adjustments are applied is specified in the corresponding - * adjustment descriptions. - * - * The default adjustment is none. - * @param constraint_adjustment bit mask of constraint adjustments - */ - void (*set_constraint_adjustment)(struct wl_client *client, - struct wl_resource *resource, - uint32_t constraint_adjustment); - /** - * set surface position offset - * - * Specify the surface position offset relative to the position - * of the anchor on the anchor rectangle and the anchor on the - * surface. For example if the anchor of the anchor rectangle is at - * (x, y), the surface has the gravity bottom|right, and the offset - * is (ox, oy), the calculated surface position will be (x + ox, y - * + oy). The offset position of the surface is the one used for - * constraint testing. See set_constraint_adjustment. - * - * An example use case is placing a popup menu on top of a user - * interface element, while aligning the user interface element of - * the parent surface with some user interface element placed - * somewhere in the popup surface. - * @param x surface position x offset - * @param y surface position y offset - */ - void (*set_offset)(struct wl_client *client, - struct wl_resource *resource, - int32_t x, - int32_t y); - /** - * continuously reconstrain the surface - * - * When set reactive, the surface is reconstrained if the - * conditions used for constraining changed, e.g. the parent window - * moved. - * - * If the conditions changed and the popup was reconstrained, an - * xdg_popup.configure event is sent with updated geometry, - * followed by an xdg_surface.configure event. - * @since 3 - */ - void (*set_reactive)(struct wl_client *client, - struct wl_resource *resource); - /** - * set parent size - * - * Set the parent window geometry the compositor should use when - * positioning the popup. The compositor may use this information - * to determine the future state the popup should be constrained - * using. If this doesn't match the dimension of the parent the - * popup is eventually positioned against, the behavior is - * undefined. - * - * The arguments are given in the surface-local coordinate space. - * @param parent_width future window geometry width of parent - * @param parent_height future window geometry height of parent - * @since 3 - */ - void (*set_parent_size)(struct wl_client *client, - struct wl_resource *resource, - int32_t parent_width, - int32_t parent_height); - /** - * set parent configure this is a response to - * - * Set the serial of an xdg_surface.configure event this - * positioner will be used in response to. The compositor may use - * this information together with set_parent_size to determine what - * future state the popup should be constrained using. - * @param serial serial of parent configure event - * @since 3 - */ - void (*set_parent_configure)(struct wl_client *client, - struct wl_resource *resource, - uint32_t serial); -}; - - -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_SIZE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_ANCHOR_RECT_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_ANCHOR_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_GRAVITY_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_CONSTRAINT_ADJUSTMENT_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_OFFSET_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_REACTIVE_SINCE_VERSION 3 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_PARENT_SIZE_SINCE_VERSION 3 -/** - * @ingroup iface_xdg_positioner - */ -#define XDG_POSITIONER_SET_PARENT_CONFIGURE_SINCE_VERSION 3 - -#ifndef XDG_SURFACE_ERROR_ENUM -#define XDG_SURFACE_ERROR_ENUM -enum xdg_surface_error { - /** - * Surface was not fully constructed - */ - XDG_SURFACE_ERROR_NOT_CONSTRUCTED = 1, - /** - * Surface was already constructed - */ - XDG_SURFACE_ERROR_ALREADY_CONSTRUCTED = 2, - /** - * Attaching a buffer to an unconfigured surface - */ - XDG_SURFACE_ERROR_UNCONFIGURED_BUFFER = 3, - /** - * Invalid serial number when acking a configure event - */ - XDG_SURFACE_ERROR_INVALID_SERIAL = 4, - /** - * Width or height was zero or negative - */ - XDG_SURFACE_ERROR_INVALID_SIZE = 5, - /** - * Surface was destroyed before its role object - */ - XDG_SURFACE_ERROR_DEFUNCT_ROLE_OBJECT = 6, -}; -#endif /* XDG_SURFACE_ERROR_ENUM */ - -#ifndef XDG_SURFACE_ERROR_ENUM_IS_VALID -#define XDG_SURFACE_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_xdg_surface - * Validate a xdg_surface error value. - * - * @return true on success, false on error. - * @ref xdg_surface_error - */ -static inline bool -xdg_surface_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_SURFACE_ERROR_NOT_CONSTRUCTED: - return version >= 1; - case XDG_SURFACE_ERROR_ALREADY_CONSTRUCTED: - return version >= 1; - case XDG_SURFACE_ERROR_UNCONFIGURED_BUFFER: - return version >= 1; - case XDG_SURFACE_ERROR_INVALID_SERIAL: - return version >= 1; - case XDG_SURFACE_ERROR_INVALID_SIZE: - return version >= 1; - case XDG_SURFACE_ERROR_DEFUNCT_ROLE_OBJECT: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_SURFACE_ERROR_ENUM_IS_VALID */ - -/** - * @ingroup iface_xdg_surface - * @struct xdg_surface_interface - */ -struct xdg_surface_interface { - /** - * destroy the xdg_surface - * - * Destroy the xdg_surface object. An xdg_surface must only be - * destroyed after its role object has been destroyed, otherwise a - * defunct_role_object error is raised. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * assign the xdg_toplevel surface role - * - * This creates an xdg_toplevel object for the given xdg_surface - * and gives the associated wl_surface the xdg_toplevel role. - * - * See the documentation of xdg_toplevel for more details about - * what an xdg_toplevel is and how it is used. - */ - void (*get_toplevel)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id); - /** - * assign the xdg_popup surface role - * - * This creates an xdg_popup object for the given xdg_surface and - * gives the associated wl_surface the xdg_popup role. - * - * If null is passed as a parent, a parent surface must be - * specified using some other protocol, before committing the - * initial state. - * - * See the documentation of xdg_popup for more details about what - * an xdg_popup is and how it is used. - * @param parent parent surface for this popup - * @param positioner positioner for this popup - */ - void (*get_popup)(struct wl_client *client, - struct wl_resource *resource, - uint32_t id, - struct wl_resource *parent, - struct wl_resource *positioner); - /** - * set the new window geometry - * - * The window geometry of a surface is its "visible bounds" from - * the user's perspective. Client-side decorations often have - * invisible portions like drop-shadows which should be ignored for - * the purposes of aligning, placing and constraining windows. Note - * that in some situations, compositors may clip rendering to the - * window geometry, so the client should avoid putting functional - * elements outside of it. - * - * The window geometry is double-buffered state, see - * wl_surface.commit. - * - * When maintaining a position, the compositor should treat the (x, - * y) coordinate of the window geometry as the top left corner of - * the window. A client changing the (x, y) window geometry - * coordinate should in general not alter the position of the - * window. - * - * Once the window geometry of the surface is set, it is not - * possible to unset it, and it will remain the same until - * set_window_geometry is called again, even if a new subsurface or - * buffer is attached. - * - * If never set, the value is the full bounds of the surface, - * including any subsurfaces. This updates dynamically on every - * commit. This unset is meant for extremely simple clients. - * - * The arguments are given in the surface-local coordinate space of - * the wl_surface associated with this xdg_surface, and may extend - * outside of the wl_surface itself to mark parts of the subsurface - * tree as part of the window geometry. - * - * 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. - * - * The effective geometry will not be recalculated unless a new - * call to set_window_geometry is done and the new pending surface - * state is subsequently applied. - * - * The width and height of the effective window geometry must be - * greater than zero. Setting an invalid size will raise an - * invalid_size error. - * @param x x coordinate of the top-left corner of the window inside this surface - * @param y y coordinate of the top-left corner of the window inside this surface - * @param width width of the window - * @param height height of the window - */ - void (*set_window_geometry)(struct wl_client *client, - struct wl_resource *resource, - int32_t x, - int32_t y, - int32_t width, - int32_t height); - /** - * ack a configure event - * - * When a configure event is received, if a client commits the - * surface in response to the configure event, then the client must - * make an ack_configure request sometime before the commit - * request, passing along the serial of the configure event. - * - * For instance, for toplevel surfaces the compositor might use - * this information to move a surface to the top left only when the - * client has drawn itself for the maximized or fullscreen state. - * - * If the client receives multiple configure events before it can - * respond to one, it only has to ack the last configure event. - * Acking a configure event that was never sent raises an - * invalid_serial error. - * - * A client is not required to commit immediately after sending an - * ack_configure request - it may even ack_configure several times - * before its next surface commit. - * - * A client may send multiple ack_configure requests before - * committing, but only the last request sent before a commit - * indicates which configure event the client really is responding - * to. - * - * Sending an ack_configure request consumes the serial number sent - * with the request, as well as serial numbers sent by all - * configure events sent on this xdg_surface prior to the configure - * event referenced by the committed serial. - * - * It is an error to issue multiple ack_configure requests - * referencing a serial from the same configure event, or to issue - * an ack_configure request referencing a serial from a configure - * event issued before the event identified by the last - * ack_configure request for the same xdg_surface. Doing so will - * raise an invalid_serial error. - * @param serial the serial from the configure event - */ - void (*ack_configure)(struct wl_client *client, - struct wl_resource *resource, - uint32_t serial); -}; - -#define XDG_SURFACE_CONFIGURE 0 - -/** - * @ingroup iface_xdg_surface - */ -#define XDG_SURFACE_CONFIGURE_SINCE_VERSION 1 - -/** - * @ingroup iface_xdg_surface - */ -#define XDG_SURFACE_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_surface - */ -#define XDG_SURFACE_GET_TOPLEVEL_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_surface - */ -#define XDG_SURFACE_GET_POPUP_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_surface - */ -#define XDG_SURFACE_SET_WINDOW_GEOMETRY_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_surface - */ -#define XDG_SURFACE_ACK_CONFIGURE_SINCE_VERSION 1 - -/** - * @ingroup iface_xdg_surface - * Sends an configure event to the client owning the resource. - * @param resource_ The client's resource - * @param serial serial of the configure event - */ -static inline void -xdg_surface_send_configure(struct wl_resource *resource_, uint32_t serial) -{ - wl_resource_post_event(resource_, XDG_SURFACE_CONFIGURE, serial); -} - -#ifndef XDG_TOPLEVEL_ERROR_ENUM -#define XDG_TOPLEVEL_ERROR_ENUM -enum xdg_toplevel_error { - /** - * provided value is not a valid variant of the resize_edge enum - */ - XDG_TOPLEVEL_ERROR_INVALID_RESIZE_EDGE = 0, - /** - * invalid parent toplevel - */ - XDG_TOPLEVEL_ERROR_INVALID_PARENT = 1, - /** - * client provided an invalid min or max size - */ - XDG_TOPLEVEL_ERROR_INVALID_SIZE = 2, -}; -#endif /* XDG_TOPLEVEL_ERROR_ENUM */ - -#ifndef XDG_TOPLEVEL_ERROR_ENUM_IS_VALID -#define XDG_TOPLEVEL_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_xdg_toplevel - * Validate a xdg_toplevel error value. - * - * @return true on success, false on error. - * @ref xdg_toplevel_error - */ -static inline bool -xdg_toplevel_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_TOPLEVEL_ERROR_INVALID_RESIZE_EDGE: - return version >= 1; - case XDG_TOPLEVEL_ERROR_INVALID_PARENT: - return version >= 1; - case XDG_TOPLEVEL_ERROR_INVALID_SIZE: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_TOPLEVEL_ERROR_ENUM_IS_VALID */ - -#ifndef XDG_TOPLEVEL_RESIZE_EDGE_ENUM -#define XDG_TOPLEVEL_RESIZE_EDGE_ENUM -/** - * @ingroup iface_xdg_toplevel - * edge values for resizing - * - * These values are used to indicate which edge of a surface - * is being dragged in a resize operation. - */ -enum xdg_toplevel_resize_edge { - XDG_TOPLEVEL_RESIZE_EDGE_NONE = 0, - XDG_TOPLEVEL_RESIZE_EDGE_TOP = 1, - XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM = 2, - XDG_TOPLEVEL_RESIZE_EDGE_LEFT = 4, - XDG_TOPLEVEL_RESIZE_EDGE_TOP_LEFT = 5, - XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_LEFT = 6, - XDG_TOPLEVEL_RESIZE_EDGE_RIGHT = 8, - XDG_TOPLEVEL_RESIZE_EDGE_TOP_RIGHT = 9, - XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_RIGHT = 10, -}; -#endif /* XDG_TOPLEVEL_RESIZE_EDGE_ENUM */ - -#ifndef XDG_TOPLEVEL_RESIZE_EDGE_ENUM_IS_VALID -#define XDG_TOPLEVEL_RESIZE_EDGE_ENUM_IS_VALID -/** - * @ingroup iface_xdg_toplevel - * Validate a xdg_toplevel resize_edge value. - * - * @return true on success, false on error. - * @ref xdg_toplevel_resize_edge - */ -static inline bool -xdg_toplevel_resize_edge_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_TOPLEVEL_RESIZE_EDGE_NONE: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_TOP: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_LEFT: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_TOP_LEFT: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_LEFT: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_RIGHT: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_TOP_RIGHT: - return version >= 1; - case XDG_TOPLEVEL_RESIZE_EDGE_BOTTOM_RIGHT: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_TOPLEVEL_RESIZE_EDGE_ENUM_IS_VALID */ - -#ifndef XDG_TOPLEVEL_STATE_ENUM -#define XDG_TOPLEVEL_STATE_ENUM -/** - * @ingroup iface_xdg_toplevel - * types of state on the surface - * - * The different state values used on the surface. This is designed for - * state values like maximized, fullscreen. It is paired with the - * configure event to ensure that both the client and the compositor - * setting the state can be synchronized. - * - * States set in this way are double-buffered, see wl_surface.commit. - */ -enum xdg_toplevel_state { - /** - * the surface is maximized - * the surface is maximized - * - * The surface is maximized. The window geometry specified in the - * configure event must be obeyed by the client, or the - * xdg_wm_base.invalid_surface_state error is raised. - * - * The client should draw without shadow or other decoration - * outside of the window geometry. - */ - XDG_TOPLEVEL_STATE_MAXIMIZED = 1, - /** - * the surface is fullscreen - * the surface is fullscreen - * - * The surface is fullscreen. The window geometry specified in - * the configure event is a maximum; the client cannot resize - * beyond it. For a surface to cover the whole fullscreened area, - * the geometry dimensions must be obeyed by the client. For more - * details, see xdg_toplevel.set_fullscreen. - */ - XDG_TOPLEVEL_STATE_FULLSCREEN = 2, - /** - * the surface is being resized - * the surface is being resized - * - * The surface is being resized. The window geometry specified in - * the configure event is a maximum; the client cannot resize - * beyond it. Clients that have aspect ratio or cell sizing - * configuration can use a smaller size, however. - */ - XDG_TOPLEVEL_STATE_RESIZING = 3, - /** - * the surface is now activated - * the surface is now activated - * - * Client window decorations should be painted as if the window - * is active. Do not assume this means that the window actually has - * keyboard or pointer focus. - */ - XDG_TOPLEVEL_STATE_ACTIVATED = 4, - /** - * the surface’s left edge is tiled - * - * The window is currently in a tiled layout and the left edge is - * considered to be adjacent to another part of the tiling grid. - * - * The client should draw without shadow or other decoration - * outside of the window geometry on the left edge. - * @since 2 - */ - XDG_TOPLEVEL_STATE_TILED_LEFT = 5, - /** - * the surface’s right edge is tiled - * - * The window is currently in a tiled layout and the right edge - * is considered to be adjacent to another part of the tiling grid. - * - * The client should draw without shadow or other decoration - * outside of the window geometry on the right edge. - * @since 2 - */ - XDG_TOPLEVEL_STATE_TILED_RIGHT = 6, - /** - * the surface’s top edge is tiled - * - * The window is currently in a tiled layout and the top edge is - * considered to be adjacent to another part of the tiling grid. - * - * The client should draw without shadow or other decoration - * outside of the window geometry on the top edge. - * @since 2 - */ - XDG_TOPLEVEL_STATE_TILED_TOP = 7, - /** - * the surface’s bottom edge is tiled - * - * The window is currently in a tiled layout and the bottom edge - * is considered to be adjacent to another part of the tiling grid. - * - * The client should draw without shadow or other decoration - * outside of the window geometry on the bottom edge. - * @since 2 - */ - XDG_TOPLEVEL_STATE_TILED_BOTTOM = 8, - /** - * surface repaint is suspended - * - * The surface is currently not ordinarily being repainted; for - * example because its content is occluded by another window, or - * its outputs are switched off due to screen locking. - * @since 6 - */ - XDG_TOPLEVEL_STATE_SUSPENDED = 9, - /** - * the surface’s left edge is constrained - * - * The left edge of the window is currently constrained, meaning - * it shouldn't attempt to resize from that edge. It can for - * example mean it's tiled next to a monitor edge on the - * constrained side of the window. - * @since 7 - */ - XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT = 10, - /** - * the surface’s right edge is constrained - * - * The right edge of the window is currently constrained, meaning - * it shouldn't attempt to resize from that edge. It can for - * example mean it's tiled next to a monitor edge on the - * constrained side of the window. - * @since 7 - */ - XDG_TOPLEVEL_STATE_CONSTRAINED_RIGHT = 11, - /** - * the surface’s top edge is constrained - * - * The top edge of the window is currently constrained, meaning - * it shouldn't attempt to resize from that edge. It can for - * example mean it's tiled next to a monitor edge on the - * constrained side of the window. - * @since 7 - */ - XDG_TOPLEVEL_STATE_CONSTRAINED_TOP = 12, - /** - * the surface’s bottom edge is constrained - * - * The bottom edge of the window is currently constrained, - * meaning it shouldn't attempt to resize from that edge. It can - * for example mean it's tiled next to a monitor edge on the - * constrained side of the window. - * @since 7 - */ - XDG_TOPLEVEL_STATE_CONSTRAINED_BOTTOM = 13, -}; -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_TILED_LEFT_SINCE_VERSION 2 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_TILED_RIGHT_SINCE_VERSION 2 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_TILED_TOP_SINCE_VERSION 2 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_TILED_BOTTOM_SINCE_VERSION 2 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_SUSPENDED_SINCE_VERSION 6 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT_SINCE_VERSION 7 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_CONSTRAINED_RIGHT_SINCE_VERSION 7 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_CONSTRAINED_TOP_SINCE_VERSION 7 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_STATE_CONSTRAINED_BOTTOM_SINCE_VERSION 7 -#endif /* XDG_TOPLEVEL_STATE_ENUM */ - -#ifndef XDG_TOPLEVEL_STATE_ENUM_IS_VALID -#define XDG_TOPLEVEL_STATE_ENUM_IS_VALID -/** - * @ingroup iface_xdg_toplevel - * Validate a xdg_toplevel state value. - * - * @return true on success, false on error. - * @ref xdg_toplevel_state - */ -static inline bool -xdg_toplevel_state_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_TOPLEVEL_STATE_MAXIMIZED: - return version >= 1; - case XDG_TOPLEVEL_STATE_FULLSCREEN: - return version >= 1; - case XDG_TOPLEVEL_STATE_RESIZING: - return version >= 1; - case XDG_TOPLEVEL_STATE_ACTIVATED: - return version >= 1; - case XDG_TOPLEVEL_STATE_TILED_LEFT: - return version >= 2; - case XDG_TOPLEVEL_STATE_TILED_RIGHT: - return version >= 2; - case XDG_TOPLEVEL_STATE_TILED_TOP: - return version >= 2; - case XDG_TOPLEVEL_STATE_TILED_BOTTOM: - return version >= 2; - case XDG_TOPLEVEL_STATE_SUSPENDED: - return version >= 6; - case XDG_TOPLEVEL_STATE_CONSTRAINED_LEFT: - return version >= 7; - case XDG_TOPLEVEL_STATE_CONSTRAINED_RIGHT: - return version >= 7; - case XDG_TOPLEVEL_STATE_CONSTRAINED_TOP: - return version >= 7; - case XDG_TOPLEVEL_STATE_CONSTRAINED_BOTTOM: - return version >= 7; - default: - return false; - } -} -#endif /* XDG_TOPLEVEL_STATE_ENUM_IS_VALID */ - -#ifndef XDG_TOPLEVEL_WM_CAPABILITIES_ENUM -#define XDG_TOPLEVEL_WM_CAPABILITIES_ENUM -enum xdg_toplevel_wm_capabilities { - /** - * show_window_menu is available - */ - XDG_TOPLEVEL_WM_CAPABILITIES_WINDOW_MENU = 1, - /** - * set_maximized and unset_maximized are available - */ - XDG_TOPLEVEL_WM_CAPABILITIES_MAXIMIZE = 2, - /** - * set_fullscreen and unset_fullscreen are available - */ - XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN = 3, - /** - * set_minimized is available - */ - XDG_TOPLEVEL_WM_CAPABILITIES_MINIMIZE = 4, -}; -#endif /* XDG_TOPLEVEL_WM_CAPABILITIES_ENUM */ - -#ifndef XDG_TOPLEVEL_WM_CAPABILITIES_ENUM_IS_VALID -#define XDG_TOPLEVEL_WM_CAPABILITIES_ENUM_IS_VALID -/** - * @ingroup iface_xdg_toplevel - * Validate a xdg_toplevel wm_capabilities value. - * - * @return true on success, false on error. - * @ref xdg_toplevel_wm_capabilities - */ -static inline bool -xdg_toplevel_wm_capabilities_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_TOPLEVEL_WM_CAPABILITIES_WINDOW_MENU: - return version >= 1; - case XDG_TOPLEVEL_WM_CAPABILITIES_MAXIMIZE: - return version >= 1; - case XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN: - return version >= 1; - case XDG_TOPLEVEL_WM_CAPABILITIES_MINIMIZE: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_TOPLEVEL_WM_CAPABILITIES_ENUM_IS_VALID */ - -/** - * @ingroup iface_xdg_toplevel - * @struct xdg_toplevel_interface - */ -struct xdg_toplevel_interface { - /** - * destroy the xdg_toplevel - * - * This request destroys the role surface and unmaps the surface; - * see "Unmapping" behavior in interface section for details. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * set the parent of this surface - * - * Set the "parent" of this surface. This surface should be - * stacked above the parent surface and all other ancestor - * surfaces. - * - * Parent surfaces should be set on dialogs, toolboxes, or other - * "auxiliary" surfaces, so that the parent is raised when the - * dialog is raised. - * - * Setting a null parent for a child surface unsets its parent. - * Setting a null parent for a surface which currently has no - * parent is a no-op. - * - * Only mapped surfaces can have child surfaces. Setting a parent - * which is not mapped is equivalent to setting a null parent. If a - * surface becomes unmapped, its children's parent is set to the - * parent of the now-unmapped surface. If the now-unmapped surface - * has no parent, its children's parent is unset. If the - * now-unmapped surface becomes mapped again, its parent-child - * relationship is not restored. - * - * The parent toplevel must not be one of the child toplevel's - * descendants, and the parent must be different from the child - * toplevel, otherwise the invalid_parent protocol error is raised. - * @param parent parent surface for this surface - */ - void (*set_parent)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *parent); - /** - * set surface title - * - * Set a short title for the surface. - * - * This string may be used to identify the surface in a task bar, - * window list, or other user interface elements provided by the - * compositor. - * - * The string must be encoded in UTF-8. - * @param title title of the surface - */ - void (*set_title)(struct wl_client *client, - struct wl_resource *resource, - const char *title); - /** - * set application ID - * - * Set an application identifier for the surface. - * - * The app ID identifies the general class of applications to which - * the surface belongs. The compositor can use this to group - * multiple surfaces together, or to determine how to launch a new - * application. - * - * For D-Bus activatable applications, the app ID is used as the - * D-Bus service name. - * - * The compositor shell will try to group application surfaces - * together by their app ID. As a best practice, it is suggested to - * select app ID's that match the basename of the application's - * .desktop file. For example, "org.freedesktop.FooViewer" where - * the .desktop file is "org.freedesktop.FooViewer.desktop". - * - * Like other properties, a set_app_id request can be sent after - * the xdg_toplevel has been mapped to update the property. - * - * See the desktop-entry specification [0] for more details on - * application identifiers and how they relate to well-known D-Bus - * names and .desktop files. - * - * [0] https://standards.freedesktop.org/desktop-entry-spec/ - * @param app_id application identifier surface belongs to - */ - void (*set_app_id)(struct wl_client *client, - struct wl_resource *resource, - const char *app_id); - /** - * show the window menu - * - * Clients implementing client-side decorations might want to - * show a context menu when right-clicking on the decorations, - * giving the user a menu that they can use to maximize or minimize - * the window. - * - * This request asks the compositor to pop up such a window menu at - * the given position, relative to the local surface coordinates of - * the parent surface. There are no guarantees as to what menu - * items the window menu contains, or even if a window menu will be - * drawn at all. - * - * This request must be used in response to some sort of user - * action like a button press, key press, or touch down event. - * @param seat the wl_seat of the user event - * @param serial the serial of the user event - * @param x the x position to pop up the window menu at - * @param y the y position to pop up the window menu at - */ - void (*show_window_menu)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *seat, - uint32_t serial, - int32_t x, - int32_t y); - /** - * start an interactive move - * - * Start an interactive, user-driven move of the surface. - * - * This request must be used in response to some sort of user - * action like a button press, key press, or touch down event. The - * passed serial is used to determine the type of interactive move - * (touch, pointer, etc). - * - * The server may ignore move requests depending on the state of - * the surface (e.g. fullscreen or maximized), or if the passed - * serial is no longer valid. - * - * If triggered, the surface will lose the focus of the device - * (wl_pointer, wl_touch, etc) used for the move. It is up to the - * compositor to visually indicate that the move is taking place, - * such as updating a pointer cursor, during the move. There is no - * guarantee that the device focus will return when the move is - * completed. - * @param seat the wl_seat of the user event - * @param serial the serial of the user event - */ - void (*move)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *seat, - uint32_t serial); - /** - * start an interactive resize - * - * Start a user-driven, interactive resize of the surface. - * - * This request must be used in response to some sort of user - * action like a button press, key press, or touch down event. The - * passed serial is used to determine the type of interactive - * resize (touch, pointer, etc). - * - * The server may ignore resize requests depending on the state of - * the surface (e.g. fullscreen or maximized). - * - * If triggered, the client will receive configure events with the - * "resize" state enum value and the expected sizes. See the - * "resize" enum value for more details about what is required. The - * client must also acknowledge configure events using - * "ack_configure". After the resize is completed, the client will - * receive another "configure" event without the resize state. - * - * If triggered, the surface also will lose the focus of the device - * (wl_pointer, wl_touch, etc) used for the resize. It is up to the - * compositor to visually indicate that the resize is taking place, - * such as updating a pointer cursor, during the resize. There is - * no guarantee that the device focus will return when the resize - * is completed. - * - * The edges parameter specifies how the surface should be resized, - * and is one of the values of the resize_edge enum. Values not - * matching a variant of the enum will cause the - * invalid_resize_edge protocol error. The compositor may use this - * information to update the surface position for example when - * dragging the top left corner. The compositor may also use this - * information to adapt its behavior, e.g. choose an appropriate - * cursor image. - * @param seat the wl_seat of the user event - * @param serial the serial of the user event - * @param edges which edge or corner is being dragged - */ - void (*resize)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *seat, - uint32_t serial, - uint32_t edges); - /** - * set the maximum size - * - * Set a maximum size for the window. - * - * The client can specify a maximum size so that the compositor - * does not try to configure the window beyond this size. - * - * The width and height arguments are in window geometry - * coordinates. See xdg_surface.set_window_geometry. - * - * Values set in this way are double-buffered, see - * wl_surface.commit. - * - * The compositor can use this information to allow or disallow - * different states like maximize or fullscreen and draw accurate - * animations. - * - * Similarly, a tiling window manager may use this information to - * place and resize client windows in a more effective way. - * - * The client should not rely on the compositor to obey the maximum - * size. The compositor may decide to ignore the values set by the - * client and request a larger size. - * - * If never set, or a value of zero in the request, means that the - * client has no expected maximum size in the given dimension. As a - * result, a client wishing to reset the maximum size to an - * unspecified state can use zero for width and height in the - * request. - * - * Requesting a maximum size to be smaller than the minimum size of - * a surface is illegal and will result in an invalid_size error. - * - * The width and height must be greater than or equal to zero. - * Using strictly negative values for width or height will result - * in an invalid_size error. - * @param width maximum width of the window - * @param height maximum height of the window - */ - void (*set_max_size)(struct wl_client *client, - struct wl_resource *resource, - int32_t width, - int32_t height); - /** - * set the minimum size - * - * Set a minimum size for the window. - * - * The client can specify a minimum size so that the compositor - * does not try to configure the window below this size. - * - * The width and height arguments are in window geometry - * coordinates. See xdg_surface.set_window_geometry. - * - * Values set in this way are double-buffered, see - * wl_surface.commit. - * - * The compositor can use this information to allow or disallow - * different states like maximize or fullscreen and draw accurate - * animations. - * - * Similarly, a tiling window manager may use this information to - * place and resize client windows in a more effective way. - * - * The client should not rely on the compositor to obey the minimum - * size. The compositor may decide to ignore the values set by the - * client and request a smaller size. - * - * If never set, or a value of zero in the request, means that the - * client has no expected minimum size in the given dimension. As a - * result, a client wishing to reset the minimum size to an - * unspecified state can use zero for width and height in the - * request. - * - * Requesting a minimum size to be larger than the maximum size of - * a surface is illegal and will result in an invalid_size error. - * - * The width and height must be greater than or equal to zero. - * Using strictly negative values for width and height will result - * in an invalid_size error. - * @param width minimum width of the window - * @param height minimum height of the window - */ - void (*set_min_size)(struct wl_client *client, - struct wl_resource *resource, - int32_t width, - int32_t height); - /** - * maximize the window - * - * Maximize the surface. - * - * After requesting that the surface should be maximized, the - * compositor will respond by emitting a configure event. Whether - * this configure actually sets the window maximized is subject to - * compositor policies. The client must then update its content, - * drawing in the configured state. The client must also - * acknowledge the configure when committing the new content (see - * ack_configure). - * - * It is up to the compositor to decide how and where to maximize - * the surface, for example which output and what region of the - * screen should be used. - * - * If the surface was already maximized, the compositor will still - * emit a configure event with the "maximized" state. - * - * If the surface is in a fullscreen state, this request has no - * direct effect. It may alter the state the surface is returned to - * when unmaximized unless overridden by the compositor. - */ - void (*set_maximized)(struct wl_client *client, - struct wl_resource *resource); - /** - * unmaximize the window - * - * Unmaximize the surface. - * - * After requesting that the surface should be unmaximized, the - * compositor will respond by emitting a configure event. Whether - * this actually un-maximizes the window is subject to compositor - * policies. If available and applicable, the compositor will - * include the window geometry dimensions the window had prior to - * being maximized in the configure event. The client must then - * update its content, drawing it in the configured state. The - * client must also acknowledge the configure when committing the - * new content (see ack_configure). - * - * It is up to the compositor to position the surface after it was - * unmaximized; usually the position the surface had before - * maximizing, if applicable. - * - * If the surface was already not maximized, the compositor will - * still emit a configure event without the "maximized" state. - * - * If the surface is in a fullscreen state, this request has no - * direct effect. It may alter the state the surface is returned to - * when unmaximized unless overridden by the compositor. - */ - void (*unset_maximized)(struct wl_client *client, - struct wl_resource *resource); - /** - * set the window as fullscreen on an output - * - * Make the surface fullscreen. - * - * After requesting that the surface should be fullscreened, the - * compositor will respond by emitting a configure event. Whether - * the client is actually put into a fullscreen state is subject to - * compositor policies. The client must also acknowledge the - * configure when committing the new content (see ack_configure). - * - * The output passed by the request indicates the client's - * preference as to which display it should be set fullscreen on. - * If this value is NULL, it's up to the compositor to choose which - * display will be used to map this surface. - * - * If the surface doesn't cover the whole output, the compositor - * will position the surface in the center of the output and - * compensate with border fill covering the rest of the output. The - * content of the border fill is undefined, but should be assumed - * to be in some way that attempts to blend into the surrounding - * area (e.g. solid black). - * - * If the fullscreened surface is not opaque, the compositor must - * make sure that other screen content not part of the same surface - * tree (made up of subsurfaces, popups or similarly coupled - * surfaces) are not visible below the fullscreened surface. - * @param output preferred output to place surface on - */ - void (*set_fullscreen)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *output); - /** - * unset the window as fullscreen - * - * Make the surface no longer fullscreen. - * - * After requesting that the surface should be unfullscreened, the - * compositor will respond by emitting a configure event. Whether - * this actually removes the fullscreen state of the client is - * subject to compositor policies. - * - * Making a surface unfullscreen sets states for the surface based - * on the following: * the state(s) it may have had before becoming - * fullscreen * any state(s) decided by the compositor * any - * state(s) requested by the client while the surface was - * fullscreen - * - * The compositor may include the previous window geometry - * dimensions in the configure event, if applicable. - * - * The client must also acknowledge the configure when committing - * the new content (see ack_configure). - */ - void (*unset_fullscreen)(struct wl_client *client, - struct wl_resource *resource); - /** - * set the window as minimized - * - * Request that the compositor minimize your surface. There is no - * way to know if the surface is currently minimized, nor is there - * any way to unset minimization on this surface. - * - * If you are looking to throttle redrawing when minimized, please - * instead use the wl_surface.frame event for this, as this will - * also work with live previews on windows in Alt-Tab, Expose or - * similar compositor features. - */ - void (*set_minimized)(struct wl_client *client, - struct wl_resource *resource); -}; - -#define XDG_TOPLEVEL_CONFIGURE 0 -#define XDG_TOPLEVEL_CLOSE 1 -#define XDG_TOPLEVEL_CONFIGURE_BOUNDS 2 -#define XDG_TOPLEVEL_WM_CAPABILITIES 3 - -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_CONFIGURE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_CLOSE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_CONFIGURE_BOUNDS_SINCE_VERSION 4 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_WM_CAPABILITIES_SINCE_VERSION 5 - -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_PARENT_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_TITLE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_APP_ID_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SHOW_WINDOW_MENU_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_MOVE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_RESIZE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_MAX_SIZE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_MIN_SIZE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_MAXIMIZED_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_UNSET_MAXIMIZED_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_FULLSCREEN_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_UNSET_FULLSCREEN_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_toplevel - */ -#define XDG_TOPLEVEL_SET_MINIMIZED_SINCE_VERSION 1 - -/** - * @ingroup iface_xdg_toplevel - * Sends an configure event to the client owning the resource. - * @param resource_ The client's resource - * @param width suggested width of window - * @param height suggested height of window - * @param states suggested states of the window - */ -static inline void -xdg_toplevel_send_configure(struct wl_resource *resource_, int32_t width, int32_t height, struct wl_array *states) -{ - wl_resource_post_event(resource_, XDG_TOPLEVEL_CONFIGURE, width, height, states); -} - -/** - * @ingroup iface_xdg_toplevel - * Sends an close event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -xdg_toplevel_send_close(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, XDG_TOPLEVEL_CLOSE); -} - -/** - * @ingroup iface_xdg_toplevel - * Sends an configure_bounds event to the client owning the resource. - * @param resource_ The client's resource - * @param width suggested maximum width of surface - * @param height suggested maximum height of surface - */ -static inline void -xdg_toplevel_send_configure_bounds(struct wl_resource *resource_, int32_t width, int32_t height) -{ - wl_resource_post_event(resource_, XDG_TOPLEVEL_CONFIGURE_BOUNDS, width, height); -} - -/** - * @ingroup iface_xdg_toplevel - * Sends an wm_capabilities event to the client owning the resource. - * @param resource_ The client's resource - * @param capabilities array of 32-bit capabilities - */ -static inline void -xdg_toplevel_send_wm_capabilities(struct wl_resource *resource_, struct wl_array *capabilities) -{ - wl_resource_post_event(resource_, XDG_TOPLEVEL_WM_CAPABILITIES, capabilities); -} - -#ifndef XDG_POPUP_ERROR_ENUM -#define XDG_POPUP_ERROR_ENUM -enum xdg_popup_error { - /** - * tried to grab after being mapped - */ - XDG_POPUP_ERROR_INVALID_GRAB = 0, -}; -#endif /* XDG_POPUP_ERROR_ENUM */ - -#ifndef XDG_POPUP_ERROR_ENUM_IS_VALID -#define XDG_POPUP_ERROR_ENUM_IS_VALID -/** - * @ingroup iface_xdg_popup - * Validate a xdg_popup error value. - * - * @return true on success, false on error. - * @ref xdg_popup_error - */ -static inline bool -xdg_popup_error_is_valid(uint32_t value, uint32_t version) { - switch (value) { - case XDG_POPUP_ERROR_INVALID_GRAB: - return version >= 1; - default: - return false; - } -} -#endif /* XDG_POPUP_ERROR_ENUM_IS_VALID */ - -/** - * @ingroup iface_xdg_popup - * @struct xdg_popup_interface - */ -struct xdg_popup_interface { - /** - * remove xdg_popup interface - * - * This destroys the popup. Explicitly destroying the xdg_popup - * object will also dismiss the popup, and unmap the surface. - * - * If this xdg_popup is not the "topmost" popup, the - * xdg_wm_base.not_the_topmost_popup protocol error will be sent. - */ - void (*destroy)(struct wl_client *client, - struct wl_resource *resource); - /** - * make the popup take an explicit grab - * - * This request makes the created popup take an explicit grab. An - * explicit grab will be dismissed when the user dismisses the - * popup, or when the client destroys the xdg_popup. This can be - * done by the user clicking outside the surface, using the - * keyboard, or even locking the screen through closing the lid or - * a timeout. - * - * If the compositor denies the grab, the popup will be immediately - * dismissed. - * - * This request must be used in response to some sort of user - * action like a button press, key press, or touch down event. The - * serial number of the event should be passed as 'serial'. - * - * The parent of a grabbing popup must either be an xdg_toplevel - * surface or another xdg_popup with an explicit grab. If the - * parent is another xdg_popup it means that the popups are nested, - * with this popup now being the topmost popup. - * - * Nested popups must be destroyed in the reverse order they were - * created in, e.g. the only popup you are allowed to destroy at - * all times is the topmost one. - * - * When compositors choose to dismiss a popup, they may dismiss - * every nested grabbing popup as well. When a compositor dismisses - * popups, it will follow the same dismissing order as required - * from the client. - * - * If the topmost grabbing popup is destroyed, the grab will be - * returned to the parent of the popup, if that parent previously - * had an explicit grab. - * - * If the parent is a grabbing popup which has already been - * dismissed, this popup will be immediately dismissed. If the - * parent is a popup that did not take an explicit grab, an error - * will be raised. - * - * During a popup grab, the client owning the grab will receive - * pointer and touch events for all their surfaces as normal - * (similar to an "owner-events" grab in X11 parlance), while the - * top most grabbing popup will always have keyboard focus. - * @param seat the wl_seat of the user event - * @param serial the serial of the user event - */ - void (*grab)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *seat, - uint32_t serial); - /** - * recalculate the popup's location - * - * Reposition an already-mapped popup. The popup will be placed - * given the details in the passed xdg_positioner object, and a - * xdg_popup.repositioned followed by xdg_popup.configure and - * xdg_surface.configure will be emitted in response. Any - * parameters set by the previous positioner will be discarded. - * - * The passed token will be sent in the corresponding - * xdg_popup.repositioned event. The new popup position will not - * take effect until the corresponding configure event is - * acknowledged by the client. See xdg_popup.repositioned for - * details. The token itself is opaque, and has no other special - * meaning. - * - * If multiple reposition requests are sent, the compositor may - * skip all but the last one. - * - * If the popup is repositioned in response to a configure event - * for its parent, the client should send an - * xdg_positioner.set_parent_configure and possibly an - * xdg_positioner.set_parent_size request to allow the compositor - * to properly constrain the popup. - * - * If the popup is repositioned together with a parent that is - * being resized, but not in response to a configure event, the - * client should send an xdg_positioner.set_parent_size request. - * @param token reposition request token - * @since 3 - */ - void (*reposition)(struct wl_client *client, - struct wl_resource *resource, - struct wl_resource *positioner, - uint32_t token); -}; - -#define XDG_POPUP_CONFIGURE 0 -#define XDG_POPUP_POPUP_DONE 1 -#define XDG_POPUP_REPOSITIONED 2 - -/** - * @ingroup iface_xdg_popup - */ -#define XDG_POPUP_CONFIGURE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_popup - */ -#define XDG_POPUP_POPUP_DONE_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_popup - */ -#define XDG_POPUP_REPOSITIONED_SINCE_VERSION 3 - -/** - * @ingroup iface_xdg_popup - */ -#define XDG_POPUP_DESTROY_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_popup - */ -#define XDG_POPUP_GRAB_SINCE_VERSION 1 -/** - * @ingroup iface_xdg_popup - */ -#define XDG_POPUP_REPOSITION_SINCE_VERSION 3 - -/** - * @ingroup iface_xdg_popup - * Sends an configure event to the client owning the resource. - * @param resource_ The client's resource - * @param x x position relative to parent surface window geometry - * @param y y position relative to parent surface window geometry - * @param width window geometry width - * @param height window geometry height - */ -static inline void -xdg_popup_send_configure(struct wl_resource *resource_, int32_t x, int32_t y, int32_t width, int32_t height) -{ - wl_resource_post_event(resource_, XDG_POPUP_CONFIGURE, x, y, width, height); -} - -/** - * @ingroup iface_xdg_popup - * Sends an popup_done event to the client owning the resource. - * @param resource_ The client's resource - */ -static inline void -xdg_popup_send_popup_done(struct wl_resource *resource_) -{ - wl_resource_post_event(resource_, XDG_POPUP_POPUP_DONE); -} - -/** - * @ingroup iface_xdg_popup - * Sends an repositioned event to the client owning the resource. - * @param resource_ The client's resource - * @param token reposition request token - */ -static inline void -xdg_popup_send_repositioned(struct wl_resource *resource_, uint32_t token) -{ - wl_resource_post_event(resource_, XDG_POPUP_REPOSITIONED, token); -} - -#ifdef __cplusplus -} -#endif - -#endif