#include <pcre.h>
#include <sys/time.h>
+#include "libi3.h"
#include "queue.h"
/*
* only this specific window or the whole X11 client */
typedef enum { DONT_KILL_WINDOW = 0, KILL_WINDOW = 1, KILL_CLIENT = 2 } kill_window_t;
+/** describes if the window is adjacent to the output (physical screen) edges. */
+typedef enum { ADJ_NONE = 0,
+ ADJ_LEFT_SCREEN_EDGE = (1 << 0),
+ ADJ_RIGHT_SCREEN_EDGE = (1 << 1),
+ ADJ_UPPER_SCREEN_EDGE = (1 << 2),
+ ADJ_LOWER_SCREEN_EDGE = (1 << 4)} adjacent_t;
+
enum {
BIND_NONE = 0,
BIND_SHIFT = XCB_MOD_MASK_SHIFT, /* (1 << 0) */
char *class_class;
char *class_instance;
- /** The name of the window as it will be passed to X11 (in UCS2 if the
- * application supports _NET_WM_NAME, in COMPOUND_TEXT otherwise). */
- char *name_x;
+ /** The name of the window. */
+ i3String *name;
/** The WM_WINDOW_ROLE of this window (for example, the pidgin buddy window
* sets "buddy list"). Useful to match specific windows in assignments or
/** Flag to force re-rendering the decoration upon changes */
bool name_x_changed;
- /** The name of the window as used in JSON (in UTF-8 if the application
- * supports _NET_WM_NAME, in COMPOUND_TEXT otherwise) */
- char *name_json;
-
- /** The length of the name in glyphs (not bytes) */
- size_t name_len;
-
/** Whether the application used _NET_WM_NAME */
bool uses_net_wm_name;
*/
struct Con {
bool mapped;
+ /** whether this is a split container or not */
+ bool split;
enum {
CT_ROOT = 0,
CT_OUTPUT = 1,
CT_WORKSPACE = 4,
CT_DOCKAREA = 5
} type;
- orientation_t orientation;
struct Con *parent;
struct Rect rect;
TAILQ_HEAD(swallow_head, Match) swallow_head;
enum { CF_NONE = 0, CF_OUTPUT = 1, CF_GLOBAL = 2 } fullscreen_mode;
- enum { L_DEFAULT = 0, L_STACKED = 1, L_TABBED = 2, L_DOCKAREA = 3, L_OUTPUT = 4 } layout;
+ enum {
+ L_DEFAULT = 0,
+ L_STACKED = 1,
+ L_TABBED = 2,
+ L_DOCKAREA = 3,
+ L_OUTPUT = 4,
+ L_SPLITV = 5,
+ L_SPLITH = 6
+ } layout, last_split_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