2 |-. ,-. ,-. . , , ,-,-.
10 - Windows are represented as the leaves of a binary tree.
11 - To each leaf corresponds exactly one window.
12 - The only nodes which can be focused are the leaves.
13 - The leaves are called *window nodes*.
14 - The other nodes are called *container nodes*.
15 - Only two methods of node insertion will be provided: *replace* and *pair*.
17 Example: insertion of a new node (number 4) into the given tree with the
27 +-------------------------+ +-------------------------+
31 | 3 |------------| --> | 4 |------------|
35 +-------------------------+ +-------------------------+
37 And with the *pair* method:
45 +-------------------------+ +-------------------------+
49 | 3 |------------| --> |------------|------------|
53 +-------------------------+ +-------------------------+
55 - Each container node is a split rectangle.
56 - The splitting method of a container node is either *automatic* or *manual*.
57 - In the *automatic* splitting mode, the split type is vertical if the width of
58 the rectangle of the node is greater that its height and horizontal
60 - Several tree transformations will be provided: directional leaf swap, node
61 pulling, rotation, contraction, dilatation...
65 - Directional focus movement.
66 - Float individual windows (it means there will be a floating layer).
67 - Resize and move floating windows with the keyboard.
68 - Resize and move floating windows on a regular magnetic grid (the granularity of the grid might be related to GCD(screen\_width, screen\_height)).
69 - Double window borders. Rationale: with single borders, it might happen that the color of the window border is too close to the color of the window content to be visible.
70 - For floating windows, double borders will not be enough to always see the external borders: in order to solve the problem a custom X window property will be set, and a patch for `compton` will be provided (the third border will be the generated shadow).
71 - Directional *pair* splitting preselection (feedback in the window border).
72 - Don't automatically give the focus to toolbar windows.
73 - When a fullscreen window looses the focus, its fullscreen state will be set to *false* if the window to be focused is in the same desktop.
74 - Change settings and call methods at runtime.
75 - Configuration file in Lua.