]> git.lizzy.rs Git - bspwm.git/blob - types.h
94b430426e8fe51652bc07ef5ddc7130b719c8bb
[bspwm.git] / types.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 } splittype_t;
18
19 typedef enum {
20     MODE_AUTOMATIC,
21     MODE_MANUAL
22 } splitmode_t;
23
24 typedef struct {
25     xcb_window_t win;
26     bool floating;
27     bool fullscreen;
28     bool urgent;
29     bool locked;
30 } Client;
31
32 typedef struct {
33     splittype_t split_type;
34     double split_ratio;
35     splitmode_t split_mode;
36     xcb_rectangle_t rectangle;
37     struct Node *first_child;
38     struct Node *second_child;
39     struct Node *parent;
40     Client *client; /* equals NULL except for leaves */
41 } Node;
42
43 typedef struct {
44     Node *prev;
45 } NodeFocusHistory;
46
47 typedef struct {
48     Client *prev;
49 } ClientFocusHistory;
50
51 typedef struct {
52     Node *tree;
53     Node *focus;
54     NodeFocusHistory *focus_history;
55 } TilingLayer;
56
57 typedef struct {
58     Client *clients;
59     Client *focus;
60     ClientFocusHistory *focus_history;
61 } FloatingLayer;
62
63 typedef struct {
64     char *name;
65     layout_t layout;
66     layer_t focus;
67     TilingLayer tiling_layer;
68     FloatingLayer floating_layer;
69     struct Desktop *previous;
70     struct Desktop *next;
71 } Desktop;
72
73 #endif