mpris and bar control impl

gitignore

fix import error
This commit is contained in:
Samuel Onoja committed 2026-10-05 16:12:24 +01:00
1 parent 73f21e20ce
commit 8a0dd7615e
42 files changed
+4026 -227

No files matched your search

+561
View File
@@ -0,0 +1,561 @@
/* Generated by wayland-scanner 1.26.0 */
#ifndef FERESE_SHELL_V1_SERVER_PROTOCOL_H
#define FERESE_SHELL_V1_SERVER_PROTOCOL_H
#include <stdint.h>
#include <stddef.h>
#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
* <pre>
*
* 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.
* </pre>
*/
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