bspwm/README.mkd

67 lines
3.8 KiB
Markdown
Raw Normal View History

2012-08-02 22:49:40 +02:00
![logo](https://github.com/baskerville/bspwm/raw/master/resources/bspwm_logo.png)
2012-07-28 19:35:18 +02:00
2012-08-02 22:49:40 +02:00
## Description
2012-07-28 10:14:30 +02:00
- 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*.
- Only two methods of node insertion will be provided: *replace* and *pair*.
2012-07-28 19:35:18 +02:00
Example: insertion of a new node (number 4) into the given tree with the
*replace* method:
2012-07-28 10:14:30 +02:00
2012-07-28 19:35:18 +02:00
b c
/ \ / \
3 a --> 4 b
^ / \ ^ / \
2 1 3 a
/ \
2 1
+-------------------------+ +-------------------------+
| | | | | |
| | 2 | | | 3 |
| | | | | |
| 3 |------------| --> | 4 |------------|
| ^ | | | ^ | | |
| | 1 | | | 2 | 1 |
| | | | | | |
+-------------------------+ +-------------------------+
2012-07-28 10:14:30 +02:00
2012-07-28 19:35:18 +02:00
And with the *pair* method:
2012-07-28 10:14:30 +02:00
2012-07-28 19:35:18 +02:00
b b
/ \ / \
3 a --> c a
^ / \ / \ / \
2 1 4 3 2 1
^
+-------------------------+ +-------------------------+
| | | | | |
| | 2 | | 4 | 2 |
| | | | ^ | |
| 3 |------------| --> |------------|------------|
| ^ | | | | |
| | 1 | | 3 | 1 |
| | | | | |
+-------------------------+ +-------------------------+
2012-07-28 10:14:30 +02:00
- Each container node is a split rectangle.
- Several tree transformations will be provided: directional leaf swap, node
pulling, rotation, contraction, dilatation...
2012-08-02 22:49:40 +02:00
## Planned Features
2012-07-28 10:14:30 +02:00
2012-07-28 21:49:01 +02:00
- Directional focus movement.
- Float individual windows.
2012-07-28 10:14:30 +02:00
- Resize and move floating windows with the keyboard.
- Resize and move floating windows on a regular magnetic grid (the granularity of the grid might be related to GCD(screen\_width, screen\_height)).
- 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.
- 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).
2012-07-30 19:43:54 +02:00
- Directional *pair* splitting preselection (feedback in the window border).
2012-07-28 10:14:30 +02:00
- Don't automatically give the focus to toolbar windows.
2012-07-28 19:35:18 +02:00
- 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.
2012-08-02 21:53:27 +02:00
- Change settings and call methods at runtime.
2012-07-30 19:43:54 +02:00
- Configuration file in Lua.