/* Generated by wayland-scanner 1.26.0 */ #ifndef FERESE_SHELL_V1_CLIENT_PROTOCOL_H #define FERESE_SHELL_V1_CLIENT_PROTOCOL_H #include #include #include "wayland-client.h" #ifdef __cplusplus extern "C" { #endif /** * @page page_ferese_shell_v1 The ferese_shell_v1 protocol * @section page_ifaces_ferese_shell_v1 Interfaces * - @subpage page_iface_ferese_shell_manager_v1 - create a capability-scoped Ferese shell controller * - @subpage page_iface_ferese_shell_v1 - managed-window metadata and shell control * @section page_copyright_ferese_shell_v1 Copyright *
 *
 * Copyright 2026 Ferese contributors
 *
 * 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 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 ferese_shell_manager_v1; struct ferese_shell_v1; #ifndef FERESE_SHELL_MANAGER_V1_INTERFACE #define FERESE_SHELL_MANAGER_V1_INTERFACE /** * @page page_iface_ferese_shell_manager_v1 ferese_shell_manager_v1 * @section page_iface_ferese_shell_manager_v1_desc Description * * This private global is visible only to clients granted the shell-control * capability. It does not assign a Wayland surface role. * @section page_iface_ferese_shell_manager_v1_api API * See @ref iface_ferese_shell_manager_v1. */ /** * @defgroup iface_ferese_shell_manager_v1 The ferese_shell_manager_v1 interface * * This private global is visible only to clients granted the shell-control * capability. It does not assign a Wayland surface role. */ extern const struct wl_interface ferese_shell_manager_v1_interface; #endif #ifndef FERESE_SHELL_V1_INTERFACE #define FERESE_SHELL_V1_INTERFACE /** * @page page_iface_ferese_shell_v1 ferese_shell_v1 * @section page_iface_ferese_shell_v1_desc Description * * Window, workspace, and output identifiers are unsigned 64-bit values * encoded as high and low 32-bit words. Each snapshot atomically replaces * the prior shell view after snapshot_end. * @section page_iface_ferese_shell_v1_api API * See @ref iface_ferese_shell_v1. */ /** * @defgroup iface_ferese_shell_v1 The ferese_shell_v1 interface * * Window, workspace, and output identifiers are unsigned 64-bit values * encoded as high and low 32-bit words. Each snapshot atomically replaces * the prior shell view after snapshot_end. */ extern const struct wl_interface ferese_shell_v1_interface; #endif #define FERESE_SHELL_MANAGER_V1_GET_SHELL 0 #define FERESE_SHELL_MANAGER_V1_DESTROY 1 /** * @ingroup iface_ferese_shell_manager_v1 */ #define FERESE_SHELL_MANAGER_V1_GET_SHELL_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_manager_v1 */ #define FERESE_SHELL_MANAGER_V1_DESTROY_SINCE_VERSION 1 /** @ingroup iface_ferese_shell_manager_v1 */ static inline void ferese_shell_manager_v1_set_user_data(struct ferese_shell_manager_v1 *ferese_shell_manager_v1, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) ferese_shell_manager_v1, user_data); } /** @ingroup iface_ferese_shell_manager_v1 */ static inline void * ferese_shell_manager_v1_get_user_data(struct ferese_shell_manager_v1 *ferese_shell_manager_v1) { return wl_proxy_get_user_data((struct wl_proxy *) ferese_shell_manager_v1); } static inline uint32_t ferese_shell_manager_v1_get_version(struct ferese_shell_manager_v1 *ferese_shell_manager_v1) { return wl_proxy_get_version((struct wl_proxy *) ferese_shell_manager_v1); } /** * @ingroup iface_ferese_shell_manager_v1 */ static inline struct ferese_shell_v1 * ferese_shell_manager_v1_get_shell(struct ferese_shell_manager_v1 *ferese_shell_manager_v1) { struct wl_proxy *id; id = wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_manager_v1, FERESE_SHELL_MANAGER_V1_GET_SHELL, &ferese_shell_v1_interface, wl_proxy_get_version((struct wl_proxy *) ferese_shell_manager_v1), 0, NULL); return (struct ferese_shell_v1 *) id; } /** * @ingroup iface_ferese_shell_manager_v1 */ static inline void ferese_shell_manager_v1_destroy(struct ferese_shell_manager_v1 *ferese_shell_manager_v1) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_manager_v1, FERESE_SHELL_MANAGER_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_manager_v1), WL_MARSHAL_FLAG_DESTROY); } #ifndef FERESE_SHELL_V1_WINDOW_STATE_ENUM #define FERESE_SHELL_V1_WINDOW_STATE_ENUM enum ferese_shell_v1_window_state { FERESE_SHELL_V1_WINDOW_STATE_FOCUSED = 1, FERESE_SHELL_V1_WINDOW_STATE_URGENT = 2, FERESE_SHELL_V1_WINDOW_STATE_FULLSCREEN = 4, FERESE_SHELL_V1_WINDOW_STATE_FLOATING = 8, }; #endif /* FERESE_SHELL_V1_WINDOW_STATE_ENUM */ #ifndef FERESE_SHELL_V1_FAILED_REQUEST_ENUM #define FERESE_SHELL_V1_FAILED_REQUEST_ENUM enum ferese_shell_v1_failed_request { FERESE_SHELL_V1_FAILED_REQUEST_ACTIVATE_WINDOW = 0, FERESE_SHELL_V1_FAILED_REQUEST_CLOSE_WINDOW = 1, FERESE_SHELL_V1_FAILED_REQUEST_SELECT_OVERVIEW_WINDOW = 2, FERESE_SHELL_V1_FAILED_REQUEST_ACTIVATE_WORKSPACE = 3, }; #endif /* FERESE_SHELL_V1_FAILED_REQUEST_ENUM */ /** * @ingroup iface_ferese_shell_v1 * @struct ferese_shell_v1_listener */ struct ferese_shell_v1_listener { /** */ void (*snapshot_begin)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t serial); /** */ void (*window)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t window_hi, uint32_t window_lo, uint32_t workspace_hi, uint32_t workspace_lo, const char *app_id, const char *title, uint32_t state); /** * @param focused one when this is the focused output */ void (*output)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t output_hi, uint32_t output_lo, const char *name, uint32_t active_workspace_hi, uint32_t active_workspace_lo, uint32_t focused); /** * @param output_hi zero when the workspace has no output * @param output_lo zero when the workspace has no output * @param index one-based position on this output * @param window_count managed windows, including floating windows * @param visible one when displayed on its output * @param focused one when visible on the focused output */ void (*workspace)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t workspace_hi, uint32_t workspace_lo, uint32_t output_hi, uint32_t output_lo, const char *name, uint32_t index, uint32_t window_count, uint32_t visible, uint32_t focused); /** */ void (*snapshot_end)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t serial); /** * @param active one when overview is active */ void (*overview_state)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t active); /** */ void (*request_failed)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t request, uint32_t object_hi, uint32_t object_lo, const char *reason); /** * marks completion of initial protocol setup * * */ void (*capabilities)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t version); /** * complete validated configuration for live reload * * Sent only after the compositor has accepted the complete * configuration. Followed by bounded UTF-8 chunks and config_end. * Clients apply only the completed source, preserving their * current appearance if parsing fails. * @since 2 */ void (*config_begin)(void *data, struct ferese_shell_v1 *ferese_shell_v1); /** * @since 2 */ void (*config_chunk)(void *data, struct ferese_shell_v1 *ferese_shell_v1, const char *source); /** * @since 2 */ void (*config_end)(void *data, struct ferese_shell_v1 *ferese_shell_v1); /** * @since 3 */ void (*logout_cancelled)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t serial); /** * @since 3 */ void (*logout_requested)(void *data, struct ferese_shell_v1 *ferese_shell_v1, uint32_t serial, const char *output_name); /** * toggle the shortcut hint on the focused output * * Explicit requests are independent of the guide-at-login * preference. * @since 5 */ void (*toggle_keybinding_guide)(void *data, struct ferese_shell_v1 *ferese_shell_v1, const char *output_name); /** * toggle the display mode chooser on the focused output * * * @since 6 */ void (*toggle_display_mode)(void *data, struct ferese_shell_v1 *ferese_shell_v1, const char *output_name); /** * physical monitor configuration changed * * Query the output IPC inventory after reconciliation. This * includes disabled monitors and mirror targets without a logical * wl_output. * @since 6 */ void (*monitor_state_changed)(void *data, struct ferese_shell_v1 *ferese_shell_v1); }; /** * @ingroup iface_ferese_shell_v1 */ static inline int ferese_shell_v1_add_listener(struct ferese_shell_v1 *ferese_shell_v1, const struct ferese_shell_v1_listener *listener, void *data) { return wl_proxy_add_listener((struct wl_proxy *) ferese_shell_v1, (void (**)(void)) listener, data); } #define FERESE_SHELL_V1_ACTIVATE_WINDOW 0 #define FERESE_SHELL_V1_CLOSE_WINDOW 1 #define FERESE_SHELL_V1_ACTIVATE_WORKSPACE 2 #define FERESE_SHELL_V1_ENTER_OVERVIEW 3 #define FERESE_SHELL_V1_EXIT_OVERVIEW 4 #define FERESE_SHELL_V1_SELECT_OVERVIEW_WINDOW 5 #define FERESE_SHELL_V1_DESTROY 6 #define FERESE_SHELL_V1_CONFIRM_LOGOUT 7 #define FERESE_SHELL_V1_CANCEL_LOGOUT 8 #define FERESE_SHELL_V1_CONFIRM_LOGOUT_WITH_INHIBITORS 9 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_SNAPSHOT_BEGIN_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_WINDOW_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_OUTPUT_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_WORKSPACE_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_SNAPSHOT_END_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_OVERVIEW_STATE_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_REQUEST_FAILED_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CAPABILITIES_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CONFIG_BEGIN_SINCE_VERSION 2 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CONFIG_CHUNK_SINCE_VERSION 2 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CONFIG_END_SINCE_VERSION 2 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_LOGOUT_CANCELLED_SINCE_VERSION 3 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_LOGOUT_REQUESTED_SINCE_VERSION 3 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_TOGGLE_KEYBINDING_GUIDE_SINCE_VERSION 5 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_TOGGLE_DISPLAY_MODE_SINCE_VERSION 6 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_MONITOR_STATE_CHANGED_SINCE_VERSION 6 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_ACTIVATE_WINDOW_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CLOSE_WINDOW_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_ACTIVATE_WORKSPACE_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_ENTER_OVERVIEW_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_EXIT_OVERVIEW_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_SELECT_OVERVIEW_WINDOW_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_DESTROY_SINCE_VERSION 1 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CONFIRM_LOGOUT_SINCE_VERSION 3 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CANCEL_LOGOUT_SINCE_VERSION 3 /** * @ingroup iface_ferese_shell_v1 */ #define FERESE_SHELL_V1_CONFIRM_LOGOUT_WITH_INHIBITORS_SINCE_VERSION 4 /** @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_set_user_data(struct ferese_shell_v1 *ferese_shell_v1, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) ferese_shell_v1, user_data); } /** @ingroup iface_ferese_shell_v1 */ static inline void * ferese_shell_v1_get_user_data(struct ferese_shell_v1 *ferese_shell_v1) { return wl_proxy_get_user_data((struct wl_proxy *) ferese_shell_v1); } static inline uint32_t ferese_shell_v1_get_version(struct ferese_shell_v1 *ferese_shell_v1) { return wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_activate_window(struct ferese_shell_v1 *ferese_shell_v1, uint32_t window_hi, uint32_t window_lo) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_ACTIVATE_WINDOW, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0, window_hi, window_lo); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_close_window(struct ferese_shell_v1 *ferese_shell_v1, uint32_t window_hi, uint32_t window_lo) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_CLOSE_WINDOW, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0, window_hi, window_lo); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_activate_workspace(struct ferese_shell_v1 *ferese_shell_v1, uint32_t workspace_hi, uint32_t workspace_lo) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_ACTIVATE_WORKSPACE, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0, workspace_hi, workspace_lo); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_enter_overview(struct ferese_shell_v1 *ferese_shell_v1) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_ENTER_OVERVIEW, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_exit_overview(struct ferese_shell_v1 *ferese_shell_v1) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_EXIT_OVERVIEW, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_select_overview_window(struct ferese_shell_v1 *ferese_shell_v1, uint32_t window_hi, uint32_t window_lo) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_SELECT_OVERVIEW_WINDOW, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0, window_hi, window_lo); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_destroy(struct ferese_shell_v1 *ferese_shell_v1) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), WL_MARSHAL_FLAG_DESTROY); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_confirm_logout(struct ferese_shell_v1 *ferese_shell_v1, uint32_t serial) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_CONFIRM_LOGOUT, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0, serial); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_cancel_logout(struct ferese_shell_v1 *ferese_shell_v1, uint32_t serial) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_CANCEL_LOGOUT, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0, serial); } /** * @ingroup iface_ferese_shell_v1 */ static inline void ferese_shell_v1_confirm_logout_with_inhibitors(struct ferese_shell_v1 *ferese_shell_v1, uint32_t serial, uint32_t inhibitor_revision, uint32_t query_token, uint32_t force) { wl_proxy_marshal_flags((struct wl_proxy *) ferese_shell_v1, FERESE_SHELL_V1_CONFIRM_LOGOUT_WITH_INHIBITORS, NULL, wl_proxy_get_version((struct wl_proxy *) ferese_shell_v1), 0, serial, inhibitor_revision, query_token, force); } #ifdef __cplusplus } #endif #endif