bspwm/types.h

86 lines
1.4 KiB
C
Raw Normal View History

2012-07-31 14:32:13 +02:00
#ifndef _TYPES_H
#define _TYPES_H
2012-08-18 11:18:19 +02:00
#include <xcb/xcb.h>
#include <xcb/xcb_event.h>
2012-08-20 22:38:29 +02:00
#include "helpers.h"
2012-07-30 10:29:21 +02:00
typedef enum {
TYPE_HORIZONTAL,
TYPE_VERTICAL
2012-08-02 09:54:32 +02:00
} split_type_t;
2012-07-30 10:29:21 +02:00
2012-08-19 10:34:08 +02:00
typedef enum {
MODE_AUTOMATIC,
MODE_MANUAL
} split_mode_t;
2012-08-20 12:20:12 +02:00
typedef enum {
MOVE_PULL,
MOVE_PUSH
} fence_move_t;
typedef enum {
CHANGE_INCREASE,
CHANGE_DECREASE
} value_change_t;
2012-07-30 10:29:21 +02:00
typedef enum {
2012-08-17 22:18:26 +02:00
ROTATE_CLOCK_WISE,
ROTATE_COUNTER_CW,
ROTATE_FULL_CYCLE
} rotate_t;
2012-08-04 21:24:47 +02:00
2012-08-03 19:40:26 +02:00
typedef enum {
DIR_LEFT,
DIR_UP,
DIR_RIGHT,
DIR_DOWN
2012-08-17 22:18:26 +02:00
} direction_t;
2012-07-30 10:29:21 +02:00
typedef struct {
2012-08-18 22:36:46 +02:00
xcb_window_t window;
2012-07-30 10:29:21 +02:00
bool floating;
2012-08-20 22:38:29 +02:00
bool maximized;
2012-07-30 10:29:21 +02:00
bool fullscreen;
bool locked;
} Client;
2012-08-17 22:18:26 +02:00
typedef struct Node Node;
struct Node {
2012-08-02 09:54:32 +02:00
split_type_t split_type;
2012-07-30 10:29:21 +02:00
double split_ratio;
xcb_rectangle_t rectangle;
2012-08-20 12:20:12 +02:00
bool vacant; /* vacant nodes only hold floating clients */
2012-08-17 22:18:26 +02:00
Node *first_child;
Node *second_child;
Node *parent;
2012-07-30 10:29:21 +02:00
Client *client; /* equals NULL except for leaves */
2012-08-17 22:18:26 +02:00
};
2012-07-30 10:29:21 +02:00
2012-08-20 15:20:16 +02:00
typedef struct Rule Rule;
struct Rule {
char *class_name;
char *desk_name;
bool floating;
bool maximized;
2012-08-20 15:20:16 +02:00
bool fullscreen;
bool locked;
2012-08-20 15:20:16 +02:00
Rule *next;
};
2012-08-17 22:18:26 +02:00
typedef struct Desktop Desktop;
struct Desktop {
2012-07-30 10:29:21 +02:00
char *name;
Node *root;
Node *focus;
Node *prev_focus;
2012-08-17 22:18:26 +02:00
Desktop *previous;
Desktop *next;
};
2012-07-31 14:32:13 +02:00
2012-08-18 11:18:19 +02:00
Node *make_node(void);
Desktop *make_desktop(void);
2012-07-31 14:32:13 +02:00
#endif