6 * This file defines all data structures used by i3
11 /* Forward definitions */
12 typedef struct Cell Cell;
13 typedef struct Font Font;
14 typedef struct Container Container;
15 typedef struct Client Client;
18 typedef enum { D_LEFT, D_RIGHT, D_UP, D_DOWN } direction_t;
19 struct table_dimensions_t {
25 * Defines a position in the table
34 * We need to save the height of a font because it is required for each drawing of
35 * text but relatively hard to get. As soon as a new font needs to be loaded, a
36 * Font-entry will be filled for later use.
45 * A client is X11-speak for a window.
49 /* TODO: this is NOT final */
50 Cell old_position; /* if you set a client to floating and set it back to managed,
51 it does remember its old position and *tries* to get back there */
53 /* Backpointer. A client is inside a container */
58 xcb_gcontext_t titlegc;
62 /* The following entry provides the necessary list pointers to use Client with LIST_* macros */
63 CIRCLEQ_ENTRY(Client) clients;
67 * A container is either in default or stacking mode. It sits inside the table.
71 /* Those are speaking for themselves: */
72 Client *currently_focused;
74 /* Position of the container inside our table */
77 /* Width/Height of the container. Changeable by the user */
80 /* Ensure MODE_DEFAULT maps to 0 because we use calloc for initialization later */
81 enum { MODE_DEFAULT = 0, MODE_STACK = 1 } mode;
82 CIRCLEQ_HEAD(client_head, Client) clients;