109 lines
2.2 KiB
C
109 lines
2.2 KiB
C
#pragma once
|
|
|
|
#include "wm_types.h"
|
|
|
|
typedef enum wm_command_type_t {
|
|
WM_COMMAND_NONE,
|
|
WM_COMMAND_MANAGE_WINDOW,
|
|
WM_COMMAND_UNMANAGE_WINDOW,
|
|
WM_COMMAND_FOCUS_WINDOW,
|
|
WM_COMMAND_FOCUS_DIRECTION,
|
|
WM_COMMAND_RAISE_WINDOW,
|
|
WM_COMMAND_LOWER_WINDOW,
|
|
WM_COMMAND_SWITCH_WORKSPACE,
|
|
WM_COMMAND_SEND_WINDOW_TO_WORKSPACE,
|
|
WM_COMMAND_SEND_WINDOW_TO_OUTPUT,
|
|
WM_COMMAND_TOGGLE_FLOATING,
|
|
WM_COMMAND_TOGGLE_MAXIMIZE,
|
|
WM_COMMAND_TOGGLE_FULLSCREEN,
|
|
WM_COMMAND_TOGGLE_MINIMIZE,
|
|
WM_COMMAND_MOVE_FLOATING_WINDOW,
|
|
WM_COMMAND_RESIZE_FLOATING_WINDOW,
|
|
WM_COMMAND_SET_LAYOUT,
|
|
WM_COMMAND_REDRAW,
|
|
WM_COMMAND_QUIT,
|
|
} wm_command_type_t;
|
|
|
|
typedef struct wm_command_t {
|
|
wm_command_type_t type;
|
|
union {
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
wm_workspace_id_t workspace_id;
|
|
} manage_window;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} unmanage_window;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} focus_window;
|
|
|
|
struct {
|
|
wm_output_id_t output_id;
|
|
wm_focus_direction_t direction;
|
|
} focus_direction;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} raise_window;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} lower_window;
|
|
|
|
struct {
|
|
wm_output_id_t output_id;
|
|
wm_workspace_id_t workspace_id;
|
|
} switch_workspace;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
wm_workspace_id_t workspace_id;
|
|
} send_window_to_workspace;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
wm_output_id_t output_id;
|
|
wm_cross_output_policy_t policy;
|
|
} send_window_to_output;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} toggle_floating;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} toggle_maximize;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} toggle_fullscreen;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
} toggle_minimize;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
int16_t dx;
|
|
int16_t dy;
|
|
bool commit_workspace_change;
|
|
wm_point_t anchor;
|
|
wm_cross_output_policy_t policy;
|
|
} move_floating_window;
|
|
|
|
struct {
|
|
wm_window_id_t window_id;
|
|
int16_t dw;
|
|
int16_t dh;
|
|
} resize_floating_window;
|
|
|
|
struct {
|
|
wm_workspace_id_t workspace_id;
|
|
wm_layout_id_t layout_id;
|
|
} set_layout;
|
|
} as;
|
|
} wm_command_t;
|