6 #include <xcb/xcb_event.h>
9 #define SPLIT_RATIO 0.5
10 #define DEFAULT_DESK_NAME "Desktop"
11 #define DEFAULT_MON_NAME "Monitor"
12 #define MISSING_VALUE "N/A"
46 SEND_OPTION_DONT_FOLLOW
53 CLIENT_SKIP_CLASS_EQUAL,
54 CLIENT_SKIP_CLASS_DIFFER
80 ROTATE_COUNTER_CLOCKWISE,
108 char class_name[MAXLEN];
109 split_mode_t born_as;
110 unsigned int border_width;
112 bool transient; /* transient window are always floating */
114 bool locked; /* protects window from being closed */
116 xcb_rectangle_t floating_rectangle;
117 xcb_rectangle_t tiled_rectangle;
120 typedef struct node_t node_t;
122 split_type_t split_type;
124 xcb_rectangle_t rectangle;
125 bool vacant; /* vacant nodes only hold floating clients */
127 node_t *second_child;
129 client_t *client; /* NULL except for leaves */
132 typedef struct desktop_t desktop_t;
143 typedef struct monitor_t monitor_t;
146 xcb_rectangle_t rectangle;
152 desktop_t *last_desk;
153 desktop_t *desk_head;
154 desktop_t *desk_tail;
169 typedef struct rule_t rule_t;
173 rule_effect_t effect;
187 } desktop_location_t;
190 xcb_point_t position;
191 pointer_action_t action;
192 xcb_rectangle_t rectangle;
199 node_t *make_node(void);
200 monitor_t *make_monitor(xcb_rectangle_t *);
201 monitor_t *find_monitor(char *);
202 void add_monitor(xcb_rectangle_t *);
203 void remove_monitor(monitor_t *);
204 desktop_t *make_desktop(const char *);
205 void add_desktop(monitor_t *, char *);
206 void empty_desktop(desktop_t *);
207 void remove_desktop(monitor_t *, desktop_t *);
208 client_t *make_client(xcb_window_t);
209 rule_t *make_rule(void);
210 pointer_state_t *make_pointer_state(void);