/* Generated by wayland-scanner 1.26.0 */ #ifndef FERESE_SHELL_V1_SERVER_PROTOCOL_H #define FERESE_SHELL_V1_SERVER_PROTOCOL_H #include #include #include "wayland-server.h" #ifdef __cplusplus extern "C" { #endif struct wl_client; struct wl_resource; /** * @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 /** * @ingroup iface_ferese_shell_manager_v1 * @struct ferese_shell_manager_v1_interface */ struct ferese_shell_manager_v1_interface { /** */ void (*get_shell)(struct wl_client *client, struct wl_resource *resource, uint32_t id); /** */ void (*destroy)(struct wl_client *client, struct wl_resource *resource); }; /** * @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 #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_WINDOW_STATE_ENUM_IS_VALID #define FERESE_SHELL_V1_WINDOW_STATE_ENUM_IS_VALID /** * @ingroup iface_ferese_shell_v1 * Validate a ferese_shell_v1 window_state value. * * @return true on success, false on error. * @ref ferese_shell_v1_window_state */ static inline bool ferese_shell_v1_window_state_is_valid(uint32_t value, uint32_t version) { uint32_t valid = 0; if (version >= 1) valid |= FERESE_SHELL_V1_WINDOW_STATE_FOCUSED; if (version >= 1) valid |= FERESE_SHELL_V1_WINDOW_STATE_URGENT; if (version >= 1) valid |= FERESE_SHELL_V1_WINDOW_STATE_FULLSCREEN; if (version >= 1) valid |= FERESE_SHELL_V1_WINDOW_STATE_FLOATING; return (value & ~valid) == 0; } #endif /* FERESE_SHELL_V1_WINDOW_STATE_ENUM_IS_VALID */ #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 */ #ifndef FERESE_SHELL_V1_FAILED_REQUEST_ENUM_IS_VALID #define FERESE_SHELL_V1_FAILED_REQUEST_ENUM_IS_VALID /** * @ingroup iface_ferese_shell_v1 * Validate a ferese_shell_v1 failed_request value. * * @return true on success, false on error. * @ref ferese_shell_v1_failed_request */ static inline bool ferese_shell_v1_failed_request_is_valid(uint32_t value, uint32_t version) { switch (value) { case FERESE_SHELL_V1_FAILED_REQUEST_ACTIVATE_WINDOW: return version >= 1; case FERESE_SHELL_V1_FAILED_REQUEST_CLOSE_WINDOW: return version >= 1; case FERESE_SHELL_V1_FAILED_REQUEST_SELECT_OVERVIEW_WINDOW: return version >= 1; case FERESE_SHELL_V1_FAILED_REQUEST_ACTIVATE_WORKSPACE: return version >= 1; default: return false; } } #endif /* FERESE_SHELL_V1_FAILED_REQUEST_ENUM_IS_VALID */ /** * @ingroup iface_ferese_shell_v1 * @struct ferese_shell_v1_interface */ struct ferese_shell_v1_interface { /** */ void (*activate_window)(struct wl_client *client, struct wl_resource *resource, uint32_t window_hi, uint32_t window_lo); /** */ void (*close_window)(struct wl_client *client, struct wl_resource *resource, uint32_t window_hi, uint32_t window_lo); /** */ void (*activate_workspace)(struct wl_client *client, struct wl_resource *resource, uint32_t workspace_hi, uint32_t workspace_lo); /** */ void (*enter_overview)(struct wl_client *client, struct wl_resource *resource); /** */ void (*exit_overview)(struct wl_client *client, struct wl_resource *resource); /** */ void (*select_overview_window)(struct wl_client *client, struct wl_resource *resource, uint32_t window_hi, uint32_t window_lo); /** */ void (*destroy)(struct wl_client *client, struct wl_resource *resource); /** * @since 3 */ void (*confirm_logout)(struct wl_client *client, struct wl_resource *resource, uint32_t serial); /** * @since 3 */ void (*cancel_logout)(struct wl_client *client, struct wl_resource *resource, uint32_t serial); /** * @since 4 */ void (*confirm_logout_with_inhibitors)(struct wl_client *client, struct wl_resource *resource, uint32_t serial, uint32_t inhibitor_revision, uint32_t query_token, uint32_t force); }; #define FERESE_SHELL_V1_SNAPSHOT_BEGIN 0 #define FERESE_SHELL_V1_WINDOW 1 #define FERESE_SHELL_V1_OUTPUT 2 #define FERESE_SHELL_V1_WORKSPACE 3 #define FERESE_SHELL_V1_SNAPSHOT_END 4 #define FERESE_SHELL_V1_OVERVIEW_STATE 5 #define FERESE_SHELL_V1_REQUEST_FAILED 6 #define FERESE_SHELL_V1_CAPABILITIES 7 #define FERESE_SHELL_V1_CONFIG_BEGIN 8 #define FERESE_SHELL_V1_CONFIG_CHUNK 9 #define FERESE_SHELL_V1_CONFIG_END 10 #define FERESE_SHELL_V1_LOGOUT_CANCELLED 11 #define FERESE_SHELL_V1_LOGOUT_REQUESTED 12 #define FERESE_SHELL_V1_TOGGLE_KEYBINDING_GUIDE 13 #define FERESE_SHELL_V1_TOGGLE_DISPLAY_MODE 14 #define FERESE_SHELL_V1_MONITOR_STATE_CHANGED 15 /** * @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 * Sends an snapshot_begin event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_snapshot_begin(struct wl_resource *resource_, uint32_t serial) { wl_resource_post_event(resource_, FERESE_SHELL_V1_SNAPSHOT_BEGIN, serial); } /** * @ingroup iface_ferese_shell_v1 * Sends an window event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_window(struct wl_resource *resource_, 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) { wl_resource_post_event(resource_, FERESE_SHELL_V1_WINDOW, window_hi, window_lo, workspace_hi, workspace_lo, app_id, title, state); } /** * @ingroup iface_ferese_shell_v1 * Sends an output event to the client owning the resource. * @param resource_ The client's resource * @param focused one when this is the focused output */ static inline void ferese_shell_v1_send_output(struct wl_resource *resource_, uint32_t output_hi, uint32_t output_lo, const char *name, uint32_t active_workspace_hi, uint32_t active_workspace_lo, uint32_t focused) { wl_resource_post_event(resource_, FERESE_SHELL_V1_OUTPUT, output_hi, output_lo, name, active_workspace_hi, active_workspace_lo, focused); } /** * @ingroup iface_ferese_shell_v1 * Sends an workspace event to the client owning the resource. * @param resource_ The client's resource * @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 */ static inline void ferese_shell_v1_send_workspace(struct wl_resource *resource_, 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) { wl_resource_post_event(resource_, FERESE_SHELL_V1_WORKSPACE, workspace_hi, workspace_lo, output_hi, output_lo, name, index, window_count, visible, focused); } /** * @ingroup iface_ferese_shell_v1 * Sends an snapshot_end event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_snapshot_end(struct wl_resource *resource_, uint32_t serial) { wl_resource_post_event(resource_, FERESE_SHELL_V1_SNAPSHOT_END, serial); } /** * @ingroup iface_ferese_shell_v1 * Sends an overview_state event to the client owning the resource. * @param resource_ The client's resource * @param active one when overview is active */ static inline void ferese_shell_v1_send_overview_state(struct wl_resource *resource_, uint32_t active) { wl_resource_post_event(resource_, FERESE_SHELL_V1_OVERVIEW_STATE, active); } /** * @ingroup iface_ferese_shell_v1 * Sends an request_failed event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_request_failed(struct wl_resource *resource_, uint32_t request, uint32_t object_hi, uint32_t object_lo, const char *reason) { wl_resource_post_event(resource_, FERESE_SHELL_V1_REQUEST_FAILED, request, object_hi, object_lo, reason); } /** * @ingroup iface_ferese_shell_v1 * Sends an capabilities event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_capabilities(struct wl_resource *resource_, uint32_t version) { wl_resource_post_event(resource_, FERESE_SHELL_V1_CAPABILITIES, version); } /** * @ingroup iface_ferese_shell_v1 * Sends an config_begin event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_config_begin(struct wl_resource *resource_) { wl_resource_post_event(resource_, FERESE_SHELL_V1_CONFIG_BEGIN); } /** * @ingroup iface_ferese_shell_v1 * Sends an config_chunk event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_config_chunk(struct wl_resource *resource_, const char *source) { wl_resource_post_event(resource_, FERESE_SHELL_V1_CONFIG_CHUNK, source); } /** * @ingroup iface_ferese_shell_v1 * Sends an config_end event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_config_end(struct wl_resource *resource_) { wl_resource_post_event(resource_, FERESE_SHELL_V1_CONFIG_END); } /** * @ingroup iface_ferese_shell_v1 * Sends an logout_cancelled event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_logout_cancelled(struct wl_resource *resource_, uint32_t serial) { wl_resource_post_event(resource_, FERESE_SHELL_V1_LOGOUT_CANCELLED, serial); } /** * @ingroup iface_ferese_shell_v1 * Sends an logout_requested event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_logout_requested(struct wl_resource *resource_, uint32_t serial, const char *output_name) { wl_resource_post_event(resource_, FERESE_SHELL_V1_LOGOUT_REQUESTED, serial, output_name); } /** * @ingroup iface_ferese_shell_v1 * Sends an toggle_keybinding_guide event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_toggle_keybinding_guide(struct wl_resource *resource_, const char *output_name) { wl_resource_post_event(resource_, FERESE_SHELL_V1_TOGGLE_KEYBINDING_GUIDE, output_name); } /** * @ingroup iface_ferese_shell_v1 * Sends an toggle_display_mode event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_toggle_display_mode(struct wl_resource *resource_, const char *output_name) { wl_resource_post_event(resource_, FERESE_SHELL_V1_TOGGLE_DISPLAY_MODE, output_name); } /** * @ingroup iface_ferese_shell_v1 * Sends an monitor_state_changed event to the client owning the resource. * @param resource_ The client's resource */ static inline void ferese_shell_v1_send_monitor_state_changed(struct wl_resource *resource_) { wl_resource_post_event(resource_, FERESE_SHELL_V1_MONITOR_STATE_CHANGED); } #ifdef __cplusplus } #endif #endif