aboutsummaryrefslogtreecommitdiffstats
path: root/include/sway/tree/layout.h
blob: ba2656233bcff7023abbe0a1f7e8327208b5c1e6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#ifndef _SWAY_LAYOUT_H
#define _SWAY_LAYOUT_H
#include <wlr/types/wlr_output_layout.h>
#include <wlr/render/wlr_texture.h>
#include "sway/tree/container.h"

enum movement_direction {
	MOVE_LEFT,
	MOVE_RIGHT,
	MOVE_UP,
	MOVE_DOWN,
	MOVE_PARENT,
	MOVE_CHILD,
};

enum resize_edge {
	RESIZE_EDGE_LEFT,
	RESIZE_EDGE_RIGHT,
	RESIZE_EDGE_TOP,
	RESIZE_EDGE_BOTTOM,
};

struct sway_container;

struct sway_root {
	struct wlr_output_layout *output_layout;

	struct wl_listener output_layout_change;

	struct wl_list xwayland_unmanaged; // sway_xwayland_unmanaged::link
	struct wl_list drag_icons; // sway_drag_icon::link

	struct wlr_texture *debug_tree;

	struct wl_list outputs; // sway_output::link

	struct {
		struct wl_signal new_container;
	} events;
};

void layout_init(void);

void container_add_child(struct sway_container *parent,
		struct sway_container *child);

struct sway_container *container_add_sibling(struct sway_container *parent,
		struct sway_container *child);

struct sway_container *container_remove_child(struct sway_container *child);

struct sway_container *container_replace_child(struct sway_container *child,
		struct sway_container *new_child);

void container_move_to(struct sway_container* container,
		struct sway_container* destination);

void container_move(struct sway_container *container,
		enum movement_direction dir, int move_amt);

enum sway_container_layout container_get_default_layout(
		struct sway_container *con);

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);

struct sway_container *container_split(struct sway_container *child,
		enum sway_container_layout layout);

void container_recursive_resize(struct sway_container *container,
		double amount, enum resize_edge edge);

void container_swap(struct sway_container *con1, struct sway_container *con2);

#endif