/* 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