![logo](https://github.com/baskerville/bspwm/raw/master/resources/bspwm_logo.png) ## Description - Windows are represented as the leaves of a binary tree. - To each leaf corresponds exactly one window. - The only nodes which can be focused are the leaves. - The leaves are called *window nodes*. - The other nodes are called *container nodes*. - Each container node is a split rectangle. - Only two methods of node insertion will be provided: *replace* and *pair*. Example: insertion of a new node (number 4) into the given tree with the *replace* method: b c / \ / \ 3 a --> 4 b ^ / \ ^ / \ 2 1 3 a / \ 2 1 +-------------------------+ +-------------------------+ | | | | | | | | 2 | | | 3 | | | | | | | | 3 |------------| --> | 4 |------------| | ^ | | | ^ | | | | | 1 | | | 2 | 1 | | | | | | | | +-------------------------+ +-------------------------+ And with the *pair* method: b b / \ / \ 3 a --> c a ^ / \ / \ / \ 2 1 4 3 2 1 ^ +-------------------------+ +-------------------------+ | | | | | | | | 2 | | 4 | 2 | | | | | ^ | | | 3 |------------| --> |------------|------------| | ^ | | | | | | | 1 | | 3 | 1 | | | | | | | +-------------------------+ +-------------------------+ ## Features - Triple window borders. Rationale: with single borders, it might happen that the color of the window border is too close to the color of its inner or outer environment to be visible. - Directional *pair* splitting preselection (the feedback will be drawn in the window border pixman). - Set or get settings and call methods at runtime. - Configuration file in Lua. ## Planned Features - Don't automatically give the focus to toolbar windows. - 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. - Close every window except the focused one. - Tree transformations: directional leaf swap, node pulling, rotation... - Rounded corners ? (cairo).