i3
tree.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  * tree.c: Everything that primarily modifies the layout tree data structure.
8  *
9  */
10 #pragma once
11 
12 #include <config.h>
13 
14 extern Con *croot;
15 /* TODO: i am not sure yet how much access to the focused container should
16  * be permitted to source files */
17 extern Con *focused;
18 TAILQ_HEAD(all_cons_head, Con);
19 extern struct all_cons_head all_cons;
20 
27 void tree_init(xcb_get_geometry_reply_t *geometry);
28 
33 Con *tree_open_con(Con *con, i3Window *window);
34 
40 void tree_split(Con *con, orientation_t orientation);
41 
46 bool level_up(void);
47 
52 bool level_down(void);
53 
59 void tree_render(void);
60 
65 void tree_next(Con *con, direction_t direction);
66 
71 Con *get_tree_next_sibling(Con *con, position_t direction);
72 
82 bool tree_close_internal(Con *con, kill_window_t kill_window, bool dont_kill_parent);
83 
88 bool tree_restore(const char *path, xcb_get_geometry_reply_t *geometry);
89 
103 void tree_flatten(Con *child);
position_t
Definition: data.h:60
orientation_t
Definition: data.h:57
kill_window_t
parameter to specify whether tree_close_internal() and x_window_kill() should kill only this specific...
Definition: data.h:68
direction_t
Definition: data.h:53
bool tree_restore(const char *path, xcb_get_geometry_reply_t *geometry)
Loads tree from ~/.i3/_restart.json (used for in-place restarts).
Definition: tree.c:66
void tree_flatten(Con *child)
tree_flatten() removes pairs of redundant split containers, e.g.
Definition: tree.c:651
void tree_next(Con *con, direction_t direction)
Changes focus in the given direction.
Definition: tree.c:587
bool level_up(void)
Moves focus one level up.
Definition: tree.c:386
bool level_down(void)
Moves focus one level down.
Definition: tree.c:409
Con * focused
Definition: tree.c:13
TAILQ_HEAD(all_cons_head, Con)
Con * get_tree_next_sibling(Con *con, position_t direction)
Get the previous / next sibling.
Definition: tree.c:629
bool tree_close_internal(Con *con, kill_window_t kill_window, bool dont_kill_parent)
Closes the given container including all children.
Definition: tree.c:191
void tree_init(xcb_get_geometry_reply_t *geometry)
Initializes the tree by creating the root node, adding all RandR outputs to the tree (that means rand...
Definition: tree.c:130
Con * tree_open_con(Con *con, i3Window *window)
Opens an empty container in the current container.
Definition: tree.c:149
struct all_cons_head all_cons
Definition: tree.c:15
void tree_render(void)
Renders the tree, that is rendering all outputs using render_con() and pushing the changes to X11 usi...
Definition: tree.c:451
void tree_split(Con *con, orientation_t orientation)
Splits (horizontally or vertically) the given container by creating a new container which contains th...
Definition: tree.c:327
Con * croot
Definition: tree.c:12
A 'Window' is a type which contains an xcb_window_t and all the related information (hints like _NET_...
Definition: data.h:394
A 'Con' represents everything from the X11 root window down to a single X11 window.
Definition: data.h:613