No description
Find a file
2012-07-28 19:35:18 +02:00
README.mkd Fix code blocks 2012-07-28 19:35:18 +02:00

.                       
|-. ,-. ,-. . , , ,-,-. 
| | `-. | | |/|/  | | | 
^-' `-' |-' ' '   ' ' ' 
        |               
        '               

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.

  • 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      |
      |            |            |         |            |            |
      +-------------------------+         +-------------------------+
    
  • Each container node is a split rectangle.

  • The splitting method of a container node is either automatic or manual.

  • In the automatic splitting mode, the split type is vertical if the width of the rectangle of the node is greater that its height and horizontal otherwise.

  • Several tree transformations will be provided: directional leaf swap, node pulling, rotation, contraction, dilatation...

Planned Features

  • Directional focus movement (left, right, up, down).
  • Tree transformations: swap the children of a container node, rotate the tree, expand (or contract): map x -> x^2 (or x -> x^½) to the node's split ratio.
  • Move the focused node up in the tree (decrease its depth).
  • Float individual windows (it means there will be a floating layer).
  • 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).
  • Change settings at runtime (fifo).
  • 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.