2018-03-30 14:41:33 +11:00
|
|
|
#ifndef _SWAY_LAYOUT_H
|
|
|
|
#define _SWAY_LAYOUT_H
|
|
|
|
#include <wlr/types/wlr_output_layout.h>
|
2018-04-07 01:49:27 +10:00
|
|
|
#include <wlr/render/wlr_texture.h>
|
2018-03-30 14:41:33 +11:00
|
|
|
#include "sway/tree/container.h"
|
|
|
|
|
|
|
|
enum movement_direction {
|
|
|
|
MOVE_LEFT,
|
|
|
|
MOVE_RIGHT,
|
|
|
|
MOVE_UP,
|
|
|
|
MOVE_DOWN,
|
|
|
|
MOVE_PARENT,
|
|
|
|
MOVE_CHILD,
|
|
|
|
};
|
|
|
|
|
2018-04-05 11:32:31 +10:00
|
|
|
enum resize_edge {
|
2018-07-18 16:13:28 +10:00
|
|
|
RESIZE_EDGE_NONE = 0,
|
|
|
|
RESIZE_EDGE_LEFT = 1,
|
|
|
|
RESIZE_EDGE_RIGHT = 2,
|
|
|
|
RESIZE_EDGE_TOP = 4,
|
|
|
|
RESIZE_EDGE_BOTTOM = 8,
|
2018-04-05 11:32:31 +10:00
|
|
|
};
|
|
|
|
|
2018-03-30 14:41:33 +11:00
|
|
|
struct sway_container;
|
|
|
|
|
|
|
|
struct sway_root {
|
|
|
|
struct wlr_output_layout *output_layout;
|
|
|
|
|
|
|
|
struct wl_listener output_layout_change;
|
|
|
|
|
2018-04-03 04:35:43 +10:00
|
|
|
struct wl_list xwayland_unmanaged; // sway_xwayland_unmanaged::link
|
2018-06-09 22:26:03 +10:00
|
|
|
struct wl_list drag_icons; // sway_drag_icon::link
|
2018-03-30 14:41:33 +11:00
|
|
|
|
2018-04-07 01:49:27 +10:00
|
|
|
struct wlr_texture *debug_tree;
|
|
|
|
|
2018-06-07 10:10:42 +10:00
|
|
|
struct wl_list outputs; // sway_output::link
|
2018-06-06 07:56:32 +10:00
|
|
|
|
2018-07-22 22:28:20 +10:00
|
|
|
list_t *scratchpad; // struct sway_container
|
|
|
|
|
2018-03-30 14:41:33 +11:00
|
|
|
struct {
|
|
|
|
struct wl_signal new_container;
|
|
|
|
} events;
|
|
|
|
};
|
|
|
|
|
|
|
|
void layout_init(void);
|
|
|
|
|
2018-04-01 11:21:26 +10:00
|
|
|
void container_add_child(struct sway_container *parent,
|
|
|
|
struct sway_container *child);
|
2018-03-30 14:41:33 +11:00
|
|
|
|
|
|
|
struct sway_container *container_add_sibling(struct sway_container *parent,
|
|
|
|
struct sway_container *child);
|
|
|
|
|
|
|
|
struct sway_container *container_remove_child(struct sway_container *child);
|
|
|
|
|
2018-04-03 12:37:21 +10:00
|
|
|
struct sway_container *container_replace_child(struct sway_container *child,
|
|
|
|
struct sway_container *new_child);
|
2018-03-31 02:58:17 +11:00
|
|
|
|
2018-03-31 01:31:21 +11:00
|
|
|
void container_move_to(struct sway_container* container,
|
|
|
|
struct sway_container* destination);
|
|
|
|
|
2018-04-01 11:21:26 +10:00
|
|
|
void container_move(struct sway_container *container,
|
|
|
|
enum movement_direction dir, int move_amt);
|
|
|
|
|
|
|
|
enum sway_container_layout container_get_default_layout(
|
2018-04-04 03:23:34 +10:00
|
|
|
struct sway_container *con);
|
2018-03-30 14:41:33 +11:00
|
|
|
|
|
|
|
void container_sort_workspaces(struct sway_container *output);
|
|
|
|
|
|
|
|
struct sway_container *container_get_in_direction(struct sway_container
|
|
|
|
*container, struct sway_seat *seat, enum movement_direction dir);
|
|
|
|
|
2018-03-31 15:44:17 +11:00
|
|
|
struct sway_container *container_split(struct sway_container *child,
|
|
|
|
enum sway_container_layout layout);
|
|
|
|
|
2018-04-05 11:32:31 +10:00
|
|
|
void container_recursive_resize(struct sway_container *container,
|
|
|
|
double amount, enum resize_edge edge);
|
|
|
|
|
2018-05-27 01:02:21 +10:00
|
|
|
void container_swap(struct sway_container *con1, struct sway_container *con2);
|
|
|
|
|
2018-03-30 14:41:33 +11:00
|
|
|
#endif
|