]> git.lizzy.rs Git - bspwm.git/blob - types.h
b84b94c792554e7dcc345acc87212640087dcd1d
[bspwm.git] / types.h
1 typedef enum {
2     false,
3     true
4 } bool;
5
6 typedef enum {
7     LAYOUT_TILED,
8     LAYOUT_MAX
9 } layout_t;
10
11 typedef enum {
12     LAYER_TILING,
13     LAYER_FLOATING
14 } layer_t;
15
16 typedef enum {
17     TYPE_HORIZONTAL,
18     TYPE_VERTICAL
19 } splittype_t;
20
21 typedef enum {
22     MODE_AUTOMATIC,
23     MODE_MANUAL
24 } splitmode_t;
25
26 typedef struct {
27     xcb_window_t win;
28     bool floating;
29     bool fullscreen;
30     bool urgent;
31     bool locked;
32 } Client;
33
34 typedef struct {
35     splittype_t split_type;
36     double split_ratio;
37     splitmode_t split_mode;
38     xcb_rectangle_t rectangle;
39     struct Node *first_child;
40     struct Node *second_child;
41     struct Node *parent;
42     Client *client; /* equals NULL except for leaves */
43 } Node;
44
45 typedef struct {
46     Node *prev;
47 } NodeFocusHistory;
48
49 typedef struct {
50     Client *prev;
51 } ClientFocusHistory;
52
53 typedef struct {
54     Node *tree;
55     Node *focus;
56     NodeFocusHistory *focus_history;
57 } TilingLayer;
58
59 typedef struct {
60     Client *clients;
61     Client *focus;
62     ClientFocusHistory *focus_history;
63 } FloatingLayer;
64
65 typedef struct {
66     char *name;
67     layout_t layout;
68     layer_t focus;
69     TilingLayer tiling_layer;
70     FloatingLayer floating_layer;
71     struct Desktop *previous;
72     struct Desktop *next;
73 } Desktop;