mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
94 lines
2.8 KiB
C
94 lines
2.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
#ifndef LABWC_PROTOCOLS_COSMIC_WORKSPACES_H
|
|
#define LABWC_PROTOCOLS_COSMIC_WORKSPACES_H
|
|
|
|
#include <stdbool.h>
|
|
#include <wayland-server-core.h>
|
|
|
|
struct wlr_output;
|
|
|
|
struct lab_cosmic_workspace_manager {
|
|
struct wl_global *global;
|
|
struct wl_list groups;
|
|
uint32_t caps;
|
|
struct wl_event_source *idle_source;
|
|
struct wl_event_loop *event_loop;
|
|
|
|
struct {
|
|
struct wl_listener display_destroy;
|
|
} on;
|
|
|
|
struct wl_list resources;
|
|
};
|
|
|
|
struct lab_cosmic_workspace_group {
|
|
struct lab_cosmic_workspace_manager *manager;
|
|
struct wl_list workspaces;
|
|
struct wl_array capabilities;
|
|
struct {
|
|
struct wl_signal create_workspace;
|
|
struct wl_signal destroy;
|
|
} events;
|
|
|
|
struct wl_list link;
|
|
struct wl_list outputs;
|
|
struct wl_list resources;
|
|
};
|
|
|
|
struct lab_cosmic_workspace {
|
|
struct lab_cosmic_workspace_group *group;
|
|
char *name;
|
|
struct wl_array coordinates;
|
|
struct wl_array capabilities;
|
|
uint32_t state; /* enum lab_cosmic_workspace_state */
|
|
uint32_t state_pending; /* enum lab_cosmic_workspace_state */
|
|
|
|
struct {
|
|
struct wl_signal activate;
|
|
struct wl_signal deactivate;
|
|
struct wl_signal remove;
|
|
struct wl_signal destroy;
|
|
} events;
|
|
|
|
struct wl_list link;
|
|
struct wl_list resources;
|
|
};
|
|
|
|
enum lab_cosmic_workspace_caps {
|
|
CW_CAP_NONE = 0,
|
|
CW_CAP_GRP_ALL = 0x000000ff,
|
|
CW_CAP_WS_ALL = 0x0000ff00,
|
|
|
|
/* group caps */
|
|
CW_CAP_GRP_WS_CREATE = 1 << 0,
|
|
|
|
/* workspace caps */
|
|
CW_CAP_WS_ACTIVATE = 1 << 8,
|
|
CW_CAP_WS_DEACTIVATE = 1 << 9,
|
|
CW_CAP_WS_REMOVE = 1 << 10,
|
|
};
|
|
|
|
struct lab_cosmic_workspace_manager *lab_cosmic_workspace_manager_create(
|
|
struct wl_display *display, uint32_t caps, uint32_t version);
|
|
|
|
struct lab_cosmic_workspace_group *lab_cosmic_workspace_group_create(
|
|
struct lab_cosmic_workspace_manager *manager);
|
|
|
|
void lab_cosmic_workspace_group_output_enter(
|
|
struct lab_cosmic_workspace_group *group, struct wlr_output *output);
|
|
|
|
void lab_cosmic_workspace_group_output_leave(
|
|
|
|
struct lab_cosmic_workspace_group *group, struct wlr_output *output);
|
|
void lab_cosmic_workspace_group_destroy(struct lab_cosmic_workspace_group *group);
|
|
|
|
struct lab_cosmic_workspace *lab_cosmic_workspace_create(struct lab_cosmic_workspace_group *group);
|
|
void lab_cosmic_workspace_set_name(struct lab_cosmic_workspace *workspace, const char *name);
|
|
void lab_cosmic_workspace_set_active(struct lab_cosmic_workspace *workspace, bool enabled);
|
|
void lab_cosmic_workspace_set_urgent(struct lab_cosmic_workspace *workspace, bool enabled);
|
|
void lab_cosmic_workspace_set_hidden(struct lab_cosmic_workspace *workspace, bool enabled);
|
|
void lab_cosmic_workspace_set_coordinates(struct lab_cosmic_workspace *workspace,
|
|
struct wl_array *coordinates);
|
|
void lab_cosmic_workspace_destroy(struct lab_cosmic_workspace *workspace);
|
|
|
|
#endif /* LABWC_PROTOCOLS_COSMIC_WORKSPACES_H */
|