i3
data.h
Go to the documentation of this file.
1 /*
2  * vim:ts=4:sw=4:expandtab
3  *
4  * i3 - an improved dynamic tiling window manager
5  * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
6  *
7  * include/data.h: This file defines all data structures used by i3
8  *
9  */
10 #pragma once
11 
12 #include "libi3.h"
13 
14 #define SN_API_NOT_YET_FROZEN 1
15 #include <libsn/sn-launcher.h>
16 
17 #include <xcb/randr.h>
18 #include <stdbool.h>
19 #include <pcre.h>
20 #include <sys/time.h>
21 
22 #include "queue.h"
23 
24 /*
25  * To get the big concept: There are helper structures like struct
26  * Workspace_Assignment. Every struct which is also defined as type (see
27  * forward definitions) is considered to be a major structure, thus important.
28  *
29  * The following things are all stored in a 'Con', from very high level (the
30  * biggest Cons) to very small (a single window):
31  *
32  * 1) X11 root window (as big as all your outputs combined)
33  * 2) output (like LVDS1)
34  * 3) content container, dockarea containers
35  * 4) workspaces
36  * 5) split containers
37  * ... (you can arbitrarily nest split containers)
38  * 6) X11 window containers
39  *
40  */
41 
42 /* Forward definitions */
43 typedef struct Binding Binding;
44 typedef struct Rect Rect;
45 typedef struct xoutput Output;
46 typedef struct Con Con;
47 typedef struct Match Match;
48 typedef struct Assignment Assignment;
49 typedef struct Window i3Window;
50 typedef struct mark_t mark_t;
51 
52 /******************************************************************************
53  * Helper types
54  *****************************************************************************/
55 typedef enum { D_LEFT,
59 typedef enum { NO_ORIENTATION = 0,
62 typedef enum { BEFORE,
64 typedef enum { BS_NORMAL = 0,
65  BS_NONE = 1,
67 
70 typedef enum { DONT_KILL_WINDOW = 0,
73 
75 typedef enum { ADJ_NONE = 0,
80 
81 typedef enum { HEBM_NONE = ADJ_NONE,
86 
87 typedef enum { MM_REPLACE,
89 
93 typedef enum {
94  L_DEFAULT = 0,
95  L_STACKED = 1,
96  L_TABBED = 2,
98  L_OUTPUT = 4,
99  L_SPLITV = 5,
100  L_SPLITH = 6
102 
106 typedef enum {
108  B_MOUSE = 1
110 
114 typedef enum {
119  I3_XKB_GROUP_MASK_4 = (1 << 3)
121 
128 typedef uint32_t i3_event_state_mask_t;
129 
133 typedef enum {
137 
141 typedef enum {
147 
158 struct Rect {
159  uint32_t x;
160  uint32_t y;
161  uint32_t width;
162  uint32_t height;
163 };
164 
170 struct reservedpx {
171  uint32_t left;
172  uint32_t right;
173  uint32_t top;
174  uint32_t bottom;
175 };
176 
182 struct width_height {
183  uint32_t w;
184  uint32_t h;
185 };
186 
196  struct width_height con_rect;
202 };
203 
209  char *name;
210  char *output;
211 
214 };
215 
216 struct Ignore_Event {
217  int sequence;
219  time_t added;
220 
222  ignore_events;
223 };
224 
232  char *id;
234  char *workspace;
236  SnLauncherContext *context;
239  time_t delete_at;
240 
242  sequences;
243 };
244 
254 struct regex {
255  char *pattern;
256  pcre *regex;
257  pcre_extra *extra;
258 };
259 
266  xcb_keycode_t keycode;
268 
270  keycodes;
271 };
272 
273 /******************************************************************************
274  * Major types
275  *****************************************************************************/
276 
283 struct Binding {
284  /* The type of input this binding is for. (Mouse bindings are not yet
285  * implemented. All bindings are currently assumed to be keyboard bindings.) */
287 
290  enum {
291  /* This binding will only be executed upon KeyPress events */
292  B_UPON_KEYPRESS = 0,
293  /* This binding will be executed either upon a KeyRelease event, or… */
294  B_UPON_KEYRELEASE = 1,
295  /* …upon a KeyRelease event, even if the modifiers don’t match. This
296  * state is triggered from get_binding() when the corresponding
297  * KeyPress (!) happens, so that users can release the modifier keys
298  * before releasing the actual key. */
299  B_UPON_KEYRELEASE_IGNORE_MODS = 2,
300  } release;
301 
304  bool border;
305 
310 
314 
316  uint32_t keycode;
317 
322 
326  char *symbol;
327 
331  TAILQ_HEAD(keycodes_head, Binding_Keycode)
332  keycodes_head;
333 
335  char *command;
336 
339 };
340 
348 struct Autostart {
350  char *command;
354 
357 
360 };
361 
362 struct output_name {
363  char *name;
364 
366  names;
367 };
368 
376 struct xoutput {
378  xcb_randr_output_t id;
379 
382  bool active;
383 
386  bool changed;
388  bool primary;
389 
393  SLIST_HEAD(names_head, output_name)
394  names_head;
395 
397  Con *con;
398 
400  Rect rect;
401 
404 };
405 
411 struct Window {
412  xcb_window_t id;
413 
416  xcb_window_t leader;
417  xcb_window_t transient_for;
418 
421  uint32_t nr_assignments;
423 
424  char *class_class;
426 
429 
433  char *role;
434 
437 
440 
443 
447 
449  xcb_atom_t window_type;
450 
452  uint32_t wm_desktop;
453 
455  enum { W_NODOCK = 0,
456  W_DOCK_TOP = 1,
457  W_DOCK_BOTTOM = 2 } dock;
458 
460  struct timeval urgent;
461 
463  struct reservedpx reserved;
464 
466  uint16_t depth;
467 
468  /* the wanted size of the window, used in combination with size
469  * increments (see below). */
472 
473  /* minimum increment size specified for the window (in pixels) */
476 
477  /* Minimum size specified for the window. */
480 
481  /* Maximum size specified for the window. */
484 
485  /* aspect ratio from WM_NORMAL_HINTS (MPlayer uses this for example) */
488 
490  bool shaped;
493 
494  /* Time when the window became managed. Used to determine whether a window
495  * should be swallowed after initial management. */
497 };
498 
507 struct Match {
508  /* Set if a criterion was specified incorrectly. */
509  char *error;
510 
511  struct regex *title;
513  struct regex *class;
514  struct regex *instance;
515  struct regex *mark;
517  struct regex *workspace;
518  xcb_atom_t window_type;
519  enum {
520  U_DONTCHECK = -1,
521  U_LATEST = 0,
522  U_OLDEST = 1
523  } urgent;
524  enum {
525  M_DONTCHECK = -1,
526  M_NODOCK = 0,
527  M_DOCK_ANY = 1,
528  M_DOCK_TOP = 2,
529  M_DOCK_BOTTOM = 3
530  } dock;
531  xcb_window_t id;
532  enum { WM_ANY = 0,
534  WM_FLOATING } window_mode;
536 
537  /* Where the window looking for a match should be inserted:
538  *
539  * M_HERE = the matched container will be replaced by the window
540  * (layout saving)
541  * M_ASSIGN_WS = the matched container will be inserted in the target_ws.
542  * M_BELOW = the window will be inserted as a child of the matched container
543  * (dockareas)
544  *
545  */
546  enum { M_HERE = 0,
548  M_BELOW } insert_where;
549 
551  matches;
552 
553  /* Whether this match was generated when restarting i3 inplace.
554  * Leads to not setting focus when managing a new window, because the old
555  * focus stack should be restored. */
556  bool restart_mode;
557 };
558 
567 struct Assignment {
579  enum {
580  A_ANY = 0,
581  A_COMMAND = (1 << 0),
582  A_TO_WORKSPACE = (1 << 1),
583  A_NO_FOCUS = (1 << 2),
584  A_TO_WORKSPACE_NUMBER = (1 << 3),
585  A_TO_OUTPUT = (1 << 4)
586  } type;
587 
590 
592  union {
593  char *command;
594  char *workspace;
595  char *output;
596  } dest;
597 
600 };
601 
603 typedef enum { CF_NONE = 0,
606 
607 struct mark_t {
608  char *name;
609 
612 };
613 
618 struct Con {
619  bool mapped;
620 
621  /* Should this container be marked urgent? This gets set when the window
622  * inside this container (if any) sets the urgency hint, for example. */
623  bool urgent;
624 
630  uint8_t ignore_unmap;
631 
632  /* The surface used for the frame window. */
636 
637  enum {
638  CT_ROOT = 0,
639  CT_OUTPUT = 1,
640  CT_CON = 2,
641  CT_FLOATING_CON = 3,
642  CT_WORKSPACE = 4,
643  CT_DOCKAREA = 5
644  } type;
645 
648  int num;
649 
650  struct Con *parent;
651 
652  /* The position and size for this con. These coordinates are absolute. Note
653  * that the rect of a container does not include the decoration. */
654  struct Rect rect;
655  /* The position and size of the actual client window. These coordinates are
656  * relative to the container's rect. */
657  struct Rect window_rect;
658  /* The position and size of the container's decoration. These coordinates
659  * are relative to the container's parent's rect. */
660  struct Rect deco_rect;
662  struct Rect geometry;
663 
664  char *name;
665 
668 
669  /* a sticky-group is an identifier which bundles several containers to a
670  * group. The contents are shared between all of them, that is they are
671  * displayed on whichever of the containers is currently visible */
673 
674  /* user-definable marks to jump to this container later */
675  TAILQ_HEAD(marks_head, mark_t)
676  marks_head;
677  /* cached to decide whether a redraw is needed */
678  bool mark_changed;
679 
680  double percent;
681 
682  /* the x11 border pixel attribute */
683  int border_width;
684  int current_border_width;
685 
686  struct Window *window;
687 
688  /* timer used for disabling urgency */
689  struct ev_timer *urgency_timer;
690 
693 
694  /* Only workspace-containers can have floating clients */
695  TAILQ_HEAD(floating_head, Con)
696  floating_head;
697 
698  TAILQ_HEAD(nodes_head, Con)
699  nodes_head;
700 
701  TAILQ_HEAD(focus_head, Con)
702  focus_head;
703 
704  TAILQ_HEAD(swallow_head, Match)
705  swallow_head;
706 
707  fullscreen_mode_t fullscreen_mode;
708 
709  /* Whether this window should stick to the glass. This corresponds to
710  * the _NET_WM_STATE_STICKY atom and will only be respected if the
711  * window is floating. */
712  bool sticky;
713 
714  /* layout is the layout of this container: one of split[v|h], stacked or
715  * tabbed. Special containers in the tree (above workspaces) have special
716  * layouts like dockarea or output.
717  *
718  * last_split_layout is one of splitv or splith to support the old "layout
719  * default" command which by now should be "layout splitv" or "layout
720  * splith" explicitly.
721  *
722  * workspace_layout is only for type == CT_WORKSPACE cons. When you change
723  * the layout of a workspace without any children, i3 cannot just set the
724  * layout (because workspaces need to be splitv/splith to allow focus
725  * parent and opening new containers). Instead, it stores the requested
726  * layout in workspace_layout and creates a new split container with that
727  * layout whenever a new container is attached to the workspace. */
728  layout_t layout, last_split_layout, workspace_layout;
729  border_style_t border_style;
736  enum {
737  FLOATING_AUTO_OFF = 0,
738  FLOATING_USER_OFF = 1,
739  FLOATING_AUTO_ON = 2,
740  FLOATING_USER_ON = 3
741  } floating;
742 
744  nodes;
745 
748 
751 
753  floating_windows;
754 
756  void (*on_remove_child)(Con *);
757 
758  enum {
759  /* Not a scratchpad window. */
760  SCRATCHPAD_NONE = 0,
761 
762  /* Just moved to scratchpad, not resized by the user yet.
763  * Window will be auto-centered and sized appropriately. */
764  SCRATCHPAD_FRESH = 1,
765 
766  /* The user changed position/size of the scratchpad window. */
767  SCRATCHPAD_CHANGED = 2
768  } scratchpad_state;
769 
770  /* The ID of this container before restarting. Necessary to correctly
771  * interpret back-references in the JSON (such as the focus stack). */
772  int old_id;
773 
774  /* Depth of the container window */
775  uint16_t depth;
776 
777  /* The colormap for this con if a custom one is used. */
778  xcb_colormap_t colormap;
779 };
Workspace_Assignment::name
char * name
Definition: data.h:209
VERT
@ VERT
Definition: data.h:61
color_t
Definition: libi3.h:413
Ignore_Event
Definition: data.h:216
L_OUTPUT
@ L_OUTPUT
Definition: data.h:98
Con::urgent
bool urgent
Definition: data.h:623
POINTER_WARPING_NONE
@ POINTER_WARPING_NONE
Definition: data.h:135
i3String
struct _i3String i3String
Opaque data structure for storing strings.
Definition: libi3.h:48
Startup_Sequence::id
char * id
startup ID for this sequence, generated by libstartup-notification
Definition: data.h:232
Con::num
int num
the workspace number, if this Con is of type CT_WORKSPACE and the workspace is not a named workspace ...
Definition: data.h:648
Window::input_shaped
bool input_shaped
The window has a nonrectangular input shape.
Definition: data.h:492
Window::wm_desktop
uint32_t wm_desktop
The _NET_WM_DESKTOP for this window.
Definition: data.h:452
Binding_Keycode::modifiers
i3_event_state_mask_t modifiers
Definition: data.h:267
AFTER
@ AFTER
Definition: data.h:63
orientation_t
orientation_t
Definition: data.h:59
Match::instance
struct regex * instance
Definition: data.h:514
L_DEFAULT
@ L_DEFAULT
Definition: data.h:94
Ignore_Event::response_type
int response_type
Definition: data.h:218
Window::width_increment
int width_increment
Definition: data.h:474
width_height::w
uint32_t w
Definition: data.h:183
xoutput
An Output is a physical output on your graphics driver.
Definition: data.h:376
reservedpx::right
uint32_t right
Definition: data.h:172
Workspace_Assignment::output
char * output
Definition: data.h:210
L_SPLITV
@ L_SPLITV
Definition: data.h:99
Window::nr_assignments
uint32_t nr_assignments
Pointers to the Assignments which were already ran for this Window (assignments run only once)
Definition: data.h:421
Ignore_Event::sequence
int sequence
Definition: data.h:217
ADJ_LOWER_SCREEN_EDGE
@ ADJ_LOWER_SCREEN_EDGE
Definition: data.h:79
focus_wrapping_t
focus_wrapping_t
Focus wrapping modes.
Definition: data.h:141
Window::min_aspect_ratio
double min_aspect_ratio
Definition: data.h:486
Rect
Stores a rectangle, for example the size of a window, the child window etc.
Definition: data.h:158
deco_render_params::border_style
int border_style
Definition: data.h:195
D_LEFT
@ D_LEFT
Definition: data.h:55
Window::id
xcb_window_t id
Definition: data.h:412
surface_t
Definition: libi3.h:561
border_style_t
border_style_t
Definition: data.h:64
MM_REPLACE
@ MM_REPLACE
Definition: data.h:87
ADJ_RIGHT_SCREEN_EDGE
@ ADJ_RIGHT_SCREEN_EDGE
Definition: data.h:77
HEBM_SMART
@ HEBM_SMART
Definition: data.h:85
Binding_Keycode::keycode
xcb_keycode_t keycode
Definition: data.h:266
I3_XKB_GROUP_MASK_ANY
@ I3_XKB_GROUP_MASK_ANY
Definition: data.h:115
deco_render_params::color
struct Colortriple * color
Definition: data.h:194
NO_ORIENTATION
@ NO_ORIENTATION
Definition: data.h:59
regex
Regular expression wrapper.
Definition: data.h:254
warping_t
warping_t
Mouse pointer warping modes.
Definition: data.h:133
Startup_Sequence::delete_at
time_t delete_at
time at which this sequence should be deleted (after it was marked as completed)
Definition: data.h:239
Rect::width
uint32_t width
Definition: data.h:161
KILL_CLIENT
@ KILL_CLIENT
Definition: data.h:72
autostarts
struct autostarts_head autostarts
Definition: main.c:77
Match
A "match" is a data structure which acts like a mask or expression to match certain windows or not.
Definition: data.h:507
Binding::whole_window
bool whole_window
If this is true for a mouse binding, the binding should be executed when the button is pressed over a...
Definition: data.h:309
regex::pattern
char * pattern
Definition: data.h:255
L_DOCKAREA
@ L_DOCKAREA
Definition: data.h:97
Match::mark
struct regex * mark
Definition: data.h:515
BS_PIXEL
@ BS_PIXEL
Definition: data.h:66
mark_t::name
char * name
Definition: data.h:608
all_cons
struct all_cons_head all_cons
Definition: tree.c:15
layout_t
layout_t
Container layouts.
Definition: data.h:93
Con::pixmap_recreated
bool pixmap_recreated
Definition: data.h:635
Window::min_width
int min_width
Definition: data.h:478
xoutput::id
xcb_randr_output_t id
Output id, so that we can requery the output directly later.
Definition: data.h:378
Window::role
char * role
The WM_WINDOW_ROLE of this window (for example, the pidgin buddy window sets "buddy list").
Definition: data.h:433
reservedpx::bottom
uint32_t bottom
Definition: data.h:174
Window::transient_for
xcb_window_t transient_for
Definition: data.h:417
POINTER_WARPING_OUTPUT
@ POINTER_WARPING_OUTPUT
Definition: data.h:134
L_SPLITH
@ L_SPLITH
Definition: data.h:100
xoutput::to_be_disabled
bool to_be_disabled
Definition: data.h:387
deco_render_params::parent_layout
layout_t parent_layout
Definition: data.h:200
Binding
Holds a keybinding, consisting of a keycode combined with modifiers and the command which is executed...
Definition: data.h:283
width_height::h
uint32_t h
Definition: data.h:184
deco_render_params::con_rect
struct width_height con_rect
Definition: data.h:196
CF_OUTPUT
@ CF_OUTPUT
Definition: data.h:604
I3_XKB_GROUP_MASK_3
@ I3_XKB_GROUP_MASK_3
Definition: data.h:118
Window::min_height
int min_height
Definition: data.h:479
Window::name_x_changed
bool name_x_changed
Flag to force re-rendering the decoration upon changes.
Definition: data.h:436
Window::window_type
xcb_atom_t window_type
The _NET_WM_WINDOW_TYPE for this window.
Definition: data.h:449
L_TABBED
@ L_TABBED
Definition: data.h:96
Assignment::output
char * output
Definition: data.h:595
HEBM_HORIZONTAL
@ HEBM_HORIZONTAL
Definition: data.h:83
Window::shaped
bool shaped
The window has a nonrectangular shape.
Definition: data.h:490
Window::class_instance
char * class_instance
Definition: data.h:425
deco_render_params::con_window_rect
struct width_height con_window_rect
Definition: data.h:197
CF_NONE
@ CF_NONE
Definition: data.h:603
FOCUS_WRAPPING_OFF
@ FOCUS_WRAPPING_OFF
Definition: data.h:142
I3_XKB_GROUP_MASK_4
@ I3_XKB_GROUP_MASK_4
Definition: data.h:119
I3_XKB_GROUP_MASK_2
@ I3_XKB_GROUP_MASK_2
Definition: data.h:117
Window::max_width
int max_width
Definition: data.h:482
output_name::name
char * name
Definition: data.h:363
Window::base_width
int base_width
Definition: data.h:470
i3_event_state_mask_t
uint32_t i3_event_state_mask_t
The lower 16 bits contain a xcb_key_but_mask_t, the higher 16 bits contain an i3_xkb_group_mask_t.
Definition: data.h:128
MM_ADD
@ MM_ADD
Definition: data.h:88
HEBM_NONE
@ HEBM_NONE
Definition: data.h:81
Assignment::command
char * command
Definition: data.h:593
Con
A 'Con' represents everything from the X11 root window down to a single X11 window.
Definition: data.h:618
FOCUS_WRAPPING_ON
@ FOCUS_WRAPPING_ON
Definition: data.h:143
Match::window_type
xcb_atom_t window_type
Definition: data.h:518
SLIST_ENTRY
#define SLIST_ENTRY(type)
Definition: queue.h:101
Assignment::workspace
char * workspace
Definition: data.h:594
Window::needs_take_focus
bool needs_take_focus
Whether the application needs to receive WM_TAKE_FOCUS.
Definition: data.h:442
D_RIGHT
@ D_RIGHT
Definition: data.h:56
Binding::exclude_titlebar
bool exclude_titlebar
If this is true for a mouse binding, the binding should only be executed if the button press was not ...
Definition: data.h:313
queue.h
D_DOWN
@ D_DOWN
Definition: data.h:58
Binding::input_type
input_type_t input_type
Definition: data.h:286
B_MOUSE
@ B_MOUSE
Definition: data.h:108
Workspace_Assignment::ws_assignments
ws_assignments
Definition: data.h:213
kill_window_t
kill_window_t
parameter to specify whether tree_close_internal() and x_window_kill() should kill only this specific...
Definition: data.h:70
Con::colormap
xcb_colormap_t colormap
Definition: data.h:778
ADJ_NONE
@ ADJ_NONE
Definition: data.h:75
Match::application
struct regex * application
Definition: data.h:512
Window
A 'Window' is a type which contains an xcb_window_t and all the related information (hints like _NET_...
Definition: data.h:411
deco_render_params::background
color_t background
Definition: data.h:199
position_t
position_t
Definition: data.h:62
width_height
Stores a width/height pair, used as part of deco_render_params to check whether the rects width/heigh...
Definition: data.h:182
Window::doesnt_accept_focus
bool doesnt_accept_focus
Whether this window accepts focus.
Definition: data.h:446
Match::con_id
Con * con_id
Definition: data.h:535
Match::error
char * error
Definition: data.h:509
Con::frame_buffer
surface_t frame_buffer
Definition: data.h:634
Rect::height
uint32_t height
Definition: data.h:162
L_STACKED
@ L_STACKED
Definition: data.h:95
BEFORE
@ BEFORE
Definition: data.h:62
output_name
Definition: data.h:362
DONT_KILL_WINDOW
@ DONT_KILL_WINDOW
Definition: data.h:70
Rect::x
uint32_t x
Definition: data.h:159
Window::base_height
int base_height
Definition: data.h:471
Binding_Keycode
Stores a resolved keycode (from a keysym), including the modifier mask.
Definition: data.h:265
autostarts_always
struct autostarts_always_head autostarts_always
Definition: main.c:80
ADJ_LEFT_SCREEN_EDGE
@ ADJ_LEFT_SCREEN_EDGE
Definition: data.h:76
Assignment
An Assignment makes specific windows go to a specific workspace/output or run a command for that wind...
Definition: data.h:567
Colortriple
Part of the struct Config.
Definition: configuration.h:54
Match::WM_TILING
@ WM_TILING
Definition: data.h:533
Workspace_Assignment
Stores which workspace (by name or number) goes to which output.
Definition: data.h:208
HEBM_BOTH
@ HEBM_BOTH
Definition: data.h:84
focused
struct Con * focused
Definition: tree.c:13
Autostart::command
char * command
Command, like in command mode.
Definition: data.h:350
Binding::symbol
char * symbol
Symbol the user specified in configfile, if any.
Definition: data.h:326
regex::regex
pcre * regex
Definition: data.h:256
Match::id
xcb_window_t id
Definition: data.h:531
marks
struct pending_marks * marks
HEBM_VERTICAL
@ HEBM_VERTICAL
Definition: data.h:82
Con::title_format
char * title_format
The format with which the window's name should be displayed.
Definition: data.h:667
hide_edge_borders_mode_t
hide_edge_borders_mode_t
Definition: data.h:81
Binding::keycode
uint32_t keycode
Keycode to bind.
Definition: data.h:316
Con::depth
uint16_t depth
Definition: data.h:775
reservedpx::left
uint32_t left
Definition: data.h:171
outputs
struct outputs_head outputs
Definition: randr.c:21
I3_XKB_GROUP_MASK_1
@ I3_XKB_GROUP_MASK_1
Definition: data.h:116
Rect::y
uint32_t y
Definition: data.h:160
fullscreen_mode_t
fullscreen_mode_t
Fullscreen modes.
Definition: data.h:603
Window::leader
xcb_window_t leader
Holds the xcb_window_t (just an ID) for the leader window (logical parent for toolwindows and similar...
Definition: data.h:416
reservedpx::top
uint32_t top
Definition: data.h:173
bindings
struct bindings_head * bindings
Definition: main.c:74
Autostart
Holds a command specified by either an:
Definition: data.h:348
Window::height_increment
int height_increment
Definition: data.h:475
xoutput::changed
bool changed
Internal flags, necessary for querying RandR screens (happens in two stages)
Definition: data.h:386
adjacent_t
adjacent_t
describes if the window is adjacent to the output (physical screen) edges.
Definition: data.h:75
ADJ_UPPER_SCREEN_EDGE
@ ADJ_UPPER_SCREEN_EDGE
Definition: data.h:78
Binding::border
bool border
If this is true for a mouse binding, the binding should be executed when the button is pressed over t...
Definition: data.h:304
Con::old_id
int old_id
Definition: data.h:772
Con::parent
struct Con * parent
Definition: data.h:650
Assignment::match
Match match
the criteria to check if a window matches
Definition: data.h:589
Match::title
struct regex * title
Definition: data.h:511
Con::ignore_unmap
uint8_t ignore_unmap
This counter contains the number of UnmapNotify events for this container (or, more precisely,...
Definition: data.h:630
Autostart::no_startup_id
bool no_startup_id
no_startup_id flag for start_application().
Definition: data.h:353
BS_NONE
@ BS_NONE
Definition: data.h:65
Match::workspace
struct regex * workspace
Definition: data.h:517
Window::managed_since
time_t managed_since
Definition: data.h:496
B_KEYBOARD
@ B_KEYBOARD
Definition: data.h:107
xoutput::primary
bool primary
Definition: data.h:388
xoutput::active
bool active
Whether the output is currently active (has a CRTC attached with a valid mode)
Definition: data.h:382
SLIST_HEAD
#define SLIST_HEAD(name, type)
Definition: queue.h:93
Startup_Sequence::workspace
char * workspace
workspace on which this startup was initiated
Definition: data.h:234
Window::class_class
char * class_class
Definition: data.h:424
Con::name
char * name
Definition: data.h:664
Ignore_Event::added
time_t added
Definition: data.h:219
Con::mapped
bool mapped
Definition: data.h:619
Window::uses_net_wm_name
bool uses_net_wm_name
Whether the application used _NET_WM_NAME.
Definition: data.h:439
i3_xkb_group_mask_t
i3_xkb_group_mask_t
Bitmask for matching XCB_XKB_GROUP_1 to XCB_XKB_GROUP_4.
Definition: data.h:114
TAILQ_ENTRY
#define TAILQ_ENTRY(type)
Definition: queue.h:327
assignments
struct assignments_head assignments
Definition: main.c:83
Window::name
i3String * name
The name of the window.
Definition: data.h:428
Window::ran_assignments
Assignment ** ran_assignments
Definition: data.h:422
mark_mode_t
mark_mode_t
Definition: data.h:87
Window::depth
uint16_t depth
Depth of the window.
Definition: data.h:466
Con::sticky_group
char * sticky_group
Definition: data.h:672
BS_NORMAL
@ BS_NORMAL
Definition: data.h:64
KILL_WINDOW
@ KILL_WINDOW
Definition: data.h:71
Startup_Sequence::context
SnLauncherContext * context
libstartup-notification context for this launch
Definition: data.h:236
deco_render_params::con_is_leaf
bool con_is_leaf
Definition: data.h:201
CF_GLOBAL
@ CF_GLOBAL
Definition: data.h:605
Startup_Sequence
Stores internal information about a startup sequence, like the workspace it was initiated on.
Definition: data.h:230
regex::extra
pcre_extra * extra
Definition: data.h:257
FOCUS_WRAPPING_FORCE
@ FOCUS_WRAPPING_FORCE
Definition: data.h:144
deco_render_params
Stores the parameters for rendering a window decoration.
Definition: data.h:193
Binding::event_state_mask
i3_event_state_mask_t event_state_mask
Bitmask which is applied against event->state for KeyPress and KeyRelease events to determine whether...
Definition: data.h:321
HORIZ
@ HORIZ
Definition: data.h:60
Window::max_aspect_ratio
double max_aspect_ratio
Definition: data.h:487
Window::max_height
int max_height
Definition: data.h:483
Con::frame
surface_t frame
Definition: data.h:633
TAILQ_HEAD
#define TAILQ_HEAD(name, type)
Definition: queue.h:318
Match::window_role
struct regex * window_role
Definition: data.h:516
D_UP
@ D_UP
Definition: data.h:57
input_type_t
input_type_t
Binding input types.
Definition: data.h:106
FOCUS_WRAPPING_WORKSPACE
@ FOCUS_WRAPPING_WORKSPACE
Definition: data.h:145
Match::M_ASSIGN_WS
@ M_ASSIGN_WS
Definition: data.h:547
libi3.h
deco_render_params::con_deco_rect
Rect con_deco_rect
Definition: data.h:198
mark_t
Definition: data.h:607
direction_t
direction_t
Definition: data.h:55
reservedpx
Stores the reserved pixels on each screen edge read from a _NET_WM_STRUT_PARTIAL.
Definition: data.h:170