i3/include/tree.h

88 lines
1.7 KiB
C

/*
* vim:ts=4:sw=4:expandtab
*/
#ifndef _TREE_H
#define _TREE_H
extern Con *croot;
/* TODO: i am not sure yet how much access to the focused container should
* be permitted to source files */
extern Con *focused;
TAILQ_HEAD(all_cons_head, Con);
extern struct all_cons_head all_cons;
/**
* Initializes the tree by creating the root node, adding all RandR outputs
* to the tree (that means randr_init() has to be called before) and
* assigning a workspace to each RandR output.
*
*/
void tree_init();
/**
* Opens an empty container in the current container
*
*/
Con *tree_open_con(Con *con);
/**
* Splits (horizontally or vertically) the given container by creating a new
* container which contains the old one and the future ones.
*
*/
void tree_split(Con *con, orientation_t orientation);
/**
* Moves focus one level up.
*
*/
void level_up();
/**
* Moves focus one level down.
*
*/
void level_down();
/**
* Renders the tree, that is rendering all outputs using render_con() and
* pushing the changes to X11 using x_push_changes().
*
*/
void tree_render();
/**
* Closes the current container using tree_close().
*
*/
void tree_close_con();
/**
* Changes focus in the given way (next/previous) and given orientation
* (horizontal/vertical).
*
*/
void tree_next(char way, orientation_t orientation);
/**
* Moves the current container in the given way (next/previous) and given
* orientation (horizontal/vertical).
*
*/
void tree_move(char way, orientation_t orientation);
/**
* Closes the given container including all children
*
*/
void tree_close(Con *con, bool kill_window, bool dont_kill_parent);
/**
* Loads tree from ~/.i3/_restart.json (used for in-place restarts).
*
*/
bool tree_restore();
#endif