* include/data.h: This file defines all data structures used by i3
*
*/
-#ifndef _DATA_H
-#define _DATA_H
+#ifndef I3_DATA_H
+#define I3_DATA_H
#define SN_API_NOT_YET_FROZEN 1
#include <libsn/sn-launcher.h>
*****************************************************************************/
typedef enum { D_LEFT, D_RIGHT, D_UP, D_DOWN } direction_t;
typedef enum { NO_ORIENTATION = 0, HORIZ, VERT } orientation_t;
-typedef enum { BS_NORMAL = 0, BS_NONE = 1, BS_1PIXEL = 2 } border_style_t;
+typedef enum { BS_NORMAL = 0, BS_NONE = 1, BS_PIXEL = 2 } border_style_t;
/** parameter to specify whether tree_close() and x_window_kill() should kill
* only this specific window or the whole X11 client */
/* the x11 border pixel attribute */
int border_width;
+ int current_border_width;
/* minimum increment size specified for the window (in pixels) */
int width_increment;
* inside this container (if any) sets the urgency hint, for example. */
bool urgent;
+ /* timer used for disabling urgency */
+ struct ev_timer *urgency_timer;
+
/* ids/pixmap/graphics context for the frame window */
xcb_window_t frame;
xcb_pixmap_t pixmap;
TAILQ_HEAD(swallow_head, Match) swallow_head;
enum { CF_NONE = 0, CF_OUTPUT = 1, CF_GLOBAL = 2 } fullscreen_mode;
+ /* layout is the layout of this container: one of split[v|h], stacked or
+ * tabbed. Special containers in the tree (above workspaces) have special
+ * layouts like dockarea or output.
+ *
+ * last_split_layout is one of splitv or splith to support the old "layout
+ * default" command which by now should be "layout splitv" or "layout
+ * splith" explicitly.
+ *
+ * workspace_layout is only for type == CT_WORKSPACE cons. When you change
+ * the layout of a workspace without any children, i3 cannot just set the
+ * layout (because workspaces need to be splitv/splith to allow focus
+ * parent and opening new containers). Instead, it stores the requested
+ * layout in workspace_layout and creates a new split container with that
+ * layout whenever a new container is attached to the workspace. */
enum {
L_DEFAULT = 0,
L_STACKED = 1,
L_OUTPUT = 4,
L_SPLITV = 5,
L_SPLITH = 6
- } layout, last_split_layout;
+ } layout, last_split_layout, workspace_layout;
border_style_t border_style;
/** floating? (= not in tiling layout) This cannot be simply a bool
* because we want to keep track of whether the status was set by the