189 lines
5.4 KiB
C
189 lines
5.4 KiB
C
#if !defined(HIKARI_WORKSPACE_H)
|
|
#define HIKARI_WORKSPACE_H
|
|
|
|
#include <wayland-server-core.h>
|
|
#include <wayland-util.h>
|
|
|
|
#ifdef HAVE_LAYERSHELL
|
|
struct hikari_layer;
|
|
#endif
|
|
struct hikari_output;
|
|
struct hikari_renderer;
|
|
struct hikari_sheet;
|
|
struct hikari_split;
|
|
struct hikari_view;
|
|
|
|
struct wlr_texture;
|
|
|
|
struct hikari_workspace {
|
|
struct hikari_sheet *sheet;
|
|
struct hikari_sheet *alternate_sheet;
|
|
struct hikari_output *output;
|
|
struct hikari_sheet *sheets;
|
|
struct hikari_view *focus_view;
|
|
|
|
#ifdef HAVE_LAYERSHELL
|
|
struct hikari_layer *focus_layer;
|
|
#endif
|
|
|
|
struct wl_list views;
|
|
};
|
|
|
|
void
|
|
hikari_workspace_init(
|
|
struct hikari_workspace *workspace, struct hikari_output *output);
|
|
|
|
void
|
|
hikari_workspace_fini(struct hikari_workspace *workspace);
|
|
|
|
struct hikari_workspace *
|
|
hikari_workspace_next(struct hikari_workspace *workspace);
|
|
|
|
struct hikari_workspace *
|
|
hikari_workspace_prev(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_merge(
|
|
struct hikari_workspace *workspace, struct hikari_workspace *into);
|
|
|
|
void
|
|
hikari_workspace_focus_view(
|
|
struct hikari_workspace *workspace, struct hikari_view *view);
|
|
|
|
void
|
|
hikari_workspace_move_view(struct hikari_workspace *workspace, int dx, int dy);
|
|
|
|
void
|
|
hikari_workspace_move_view_bottom_left(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_bottom_middle(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_bottom_right(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_center_left(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_center(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_center_right(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_top_left(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_top_middle(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_view_top_right(struct hikari_workspace *workspace);
|
|
|
|
void
|
|
hikari_workspace_move_resize_view(struct hikari_workspace *workspace,
|
|
int dx,
|
|
int dy,
|
|
int dwidth,
|
|
int dheight);
|
|
|
|
void
|
|
hikari_workspace_center_cursor(struct hikari_workspace *workspace);
|
|
|
|
struct hikari_view *
|
|
hikari_workspace_first_view(struct hikari_workspace *workspace);
|
|
|
|
#define WORKSPACE_CYCLE_ACTION(name) \
|
|
struct hikari_view *hikari_workspace_##name( \
|
|
struct hikari_workspace *workspace);
|
|
|
|
WORKSPACE_CYCLE_ACTION(next_view)
|
|
WORKSPACE_CYCLE_ACTION(prev_view)
|
|
WORKSPACE_CYCLE_ACTION(next_layout_view)
|
|
WORKSPACE_CYCLE_ACTION(prev_layout_view)
|
|
WORKSPACE_CYCLE_ACTION(first_layout_view)
|
|
WORKSPACE_CYCLE_ACTION(last_layout_view)
|
|
WORKSPACE_CYCLE_ACTION(first_group_view)
|
|
WORKSPACE_CYCLE_ACTION(last_group_view)
|
|
WORKSPACE_CYCLE_ACTION(next_group_view)
|
|
WORKSPACE_CYCLE_ACTION(prev_group_view)
|
|
WORKSPACE_CYCLE_ACTION(next_group)
|
|
WORKSPACE_CYCLE_ACTION(prev_group)
|
|
WORKSPACE_CYCLE_ACTION(next_sheet_view)
|
|
WORKSPACE_CYCLE_ACTION(prev_sheet_view)
|
|
#undef WORKSPACE_CYCLE_ACTION
|
|
|
|
#define WORKSPACE_ACTION(name) \
|
|
void hikari_workspace_##name(struct hikari_workspace *workspace);
|
|
|
|
WORKSPACE_ACTION(clear)
|
|
WORKSPACE_ACTION(quit_view)
|
|
WORKSPACE_ACTION(display_sheet_0)
|
|
WORKSPACE_ACTION(display_sheet_1)
|
|
WORKSPACE_ACTION(display_sheet_2)
|
|
WORKSPACE_ACTION(display_sheet_3)
|
|
WORKSPACE_ACTION(display_sheet_4)
|
|
WORKSPACE_ACTION(display_sheet_5)
|
|
WORKSPACE_ACTION(display_sheet_6)
|
|
WORKSPACE_ACTION(display_sheet_7)
|
|
WORKSPACE_ACTION(display_sheet_8)
|
|
WORKSPACE_ACTION(display_sheet_9)
|
|
WORKSPACE_ACTION(display_sheet_alternate)
|
|
WORKSPACE_ACTION(display_sheet_current)
|
|
WORKSPACE_ACTION(display_sheet_next)
|
|
WORKSPACE_ACTION(display_sheet_prev)
|
|
WORKSPACE_ACTION(switch_to_next_sheet)
|
|
WORKSPACE_ACTION(switch_to_prev_sheet)
|
|
WORKSPACE_ACTION(switch_to_next_inhabited_sheet)
|
|
WORKSPACE_ACTION(switch_to_prev_inhabited_sheet)
|
|
WORKSPACE_ACTION(raise_view)
|
|
WORKSPACE_ACTION(lower_view)
|
|
WORKSPACE_ACTION(hide_view)
|
|
WORKSPACE_ACTION(snap_view_up)
|
|
WORKSPACE_ACTION(snap_view_down)
|
|
WORKSPACE_ACTION(snap_view_left)
|
|
WORKSPACE_ACTION(snap_view_right)
|
|
WORKSPACE_ACTION(only_view)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_0)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_1)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_2)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_3)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_4)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_5)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_6)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_7)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_8)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_9)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_alternate)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_current)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_next)
|
|
WORKSPACE_ACTION(pin_view_to_sheet_prev)
|
|
WORKSPACE_ACTION(toggle_view_invisible)
|
|
WORKSPACE_ACTION(toggle_view_floating)
|
|
WORKSPACE_ACTION(toggle_view_public)
|
|
WORKSPACE_ACTION(toggle_view_full_maximize)
|
|
WORKSPACE_ACTION(toggle_view_vertical_maximize)
|
|
WORKSPACE_ACTION(toggle_view_horizontal_maximize)
|
|
WORKSPACE_ACTION(toggle_view_horizontal_maximize)
|
|
WORKSPACE_ACTION(reset_view_geometry)
|
|
WORKSPACE_ACTION(show_invisible_sheet_views)
|
|
WORKSPACE_ACTION(exchange_next_view)
|
|
WORKSPACE_ACTION(exchange_prev_view)
|
|
WORKSPACE_ACTION(exchange_main_layout_view)
|
|
WORKSPACE_ACTION(sheet_show_group)
|
|
WORKSPACE_ACTION(show_all_sheet_views)
|
|
WORKSPACE_ACTION(show_all)
|
|
WORKSPACE_ACTION(show_group)
|
|
WORKSPACE_ACTION(show_invisible)
|
|
#undef WORKSPACE_ACTION
|
|
|
|
void
|
|
hikari_workspace_switch_sheet(
|
|
struct hikari_workspace *workspace, struct hikari_sheet *sheet);
|
|
|
|
void
|
|
hikari_workspace_apply_split(
|
|
struct hikari_workspace *workspace, struct hikari_split *split);
|
|
|
|
#endif
|