]> git.lizzy.rs Git - bspwm.git/blob - structures.h
big Makefile
[bspwm.git] / structures.h
1 #ifndef _TYPES_H
2 #define _TYPES_H
3
4 typedef enum {
5     LAYOUT_TILED,
6     LAYOUT_MAX
7 } layout_t;
8
9 typedef enum {
10     LAYER_TILING,
11     LAYER_FLOATING
12 } layer_t;
13
14 typedef enum {
15     TYPE_HORIZONTAL,
16     TYPE_VERTICAL
17 } split_type_t;
18
19 typedef enum {
20     ROTATE_CWISE,
21     ROTATE_CCWISE
22 } tree_rotate_t;
23
24 typedef enum {
25     DIR_LEFT,
26     DIR_UP,
27     DIR_RIGHT,
28     DIR_DOWN
29 } pair_dir_t;
30
31 typedef struct {
32     xcb_window_t win;
33     bool floating;
34     bool fullscreen;
35     bool urgent;
36     bool locked;
37 } Client;
38
39 typedef struct {
40     split_type_t split_type;
41     double split_ratio;
42     xcb_rectangle_t rectangle;
43     struct Node *first_child;
44     struct Node *second_child;
45     struct Node *parent;
46     Client *client; /* equals NULL except for leaves */
47 } Node;
48
49 typedef struct {
50     Node *node;
51     struct NodeFocusHistory *prev;
52 } NodeFocusHistory;
53
54 typedef struct {
55     Node *head;
56     Node *focus;
57     NodeFocusHistory *focus_history;
58 } Layer;
59
60 typedef Layer TilingLayer;
61 typedef Layer FloatingLayer;
62
63 typedef struct {
64     char *name;
65     Layer tiling_layer;
66     Layer floating_layer;
67     layer_t selected_layer;
68     layout_t tiling_layout;
69     struct Desktop *previous;
70     struct Desktop *next;
71 } Desktop;
72
73 #endif