Re: [dev] Binary Space Partitioning Window Manager
I have a wm which organizes windows into a tree, with windows as leaves, and 'containers' as inner nodes. a screen can be attached to any node, and displays the subtree rooted there. If the subtree is a leaf, the window is fullscreen, otherwise, a few windows and containers are displayed simultaneously. I thought this would be nice both conceptually (since it generalizes many other windowing paradigms) and organizationally (I could group things into meaningful hierarchies). In reality, it seems all this extra complication required some nice tools to go along with it (to organize the trees, show minified windows, etc), but this was all a lot more effort. Consequently, I was left with something more unwieldy. Next time I write a wm, I'm going to try a concept which is simple to implement, and most window operations require just a few keystrokes (the arbitrary depth tree traversals violated the 'few'). just saw thoughts, lest you waste time down similar paths (in the tree..). On Sat, Jul 28, 2012 at 10:47:58AM +0200, Bastien Dejean wrote: Hi, I'm planning on writing a window manager with the following characteristics: - 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... Greetings, -- b.d (| |) ^ ^
Re: [dev] Binary Space Partitioning Window Manager
Greetings. On Sat, 28 Jul 2012 11:12:21 +0200 Bastien Dejean nihilh...@gmail.com wrote: Hi, I'm planning on writing a window manager with the following characteristics: - 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*. [...] - 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... [...] What are the practical and productivity gains you expect from such fea‐ tures? What is your reallife example where such features would be need‐ ed? Sincerely, Christoph Lohmann
Re: [dev] Binary Space Partitioning Window Manager
Bastien Dejean nihilh...@gmail.com writes: Hi, I'm planning on writing a window manager with the following characteristics: - Windows are represented as the leaves of a binary tree. You should look at herbstluftwm as it already imlements a binary tree method for window management (manual tiling only). -brandon
Re: [dev] Binary Space Partitioning Window Manager
Quoth Bastien Dejean: I'm planning on writing a window manager with the following characteristics: ... Sounds rather interesting, I approve, give it a go. Two potentiial issues I see: - It wouldn't interact too well with tagging. Presumably. Either whole container nodes and their leaves would have to be assigned tags, or each tag would have its own tree structure. The former might actually not be a bad outcome. - I can't imagine how the interface would work in a non-annoying way. How would one choose the container to replace/pair to? Maybe just doing it on whatever window was focused would be fine. Anyway, ignore Christoph, he's just trying to push mediocrity. Nick
Re: [dev] Binary Space Partitioning Window Manager
Greetings. On Sat, 28 Jul 2012 12:23:55 +0200 Nick suckless-...@njw.me.uk wrote: Anyway, ignore Christoph, he's just trying to push mediocrity. Elitism needs scientific analysis too. Just adding features because it sounds cool will end you up in the same situation as Gnome. Sincerely, Christoph Lohmann
Re: [dev] Binary Space Partitioning Window Manager
Christoph Lohmann: What are the practical and productivity gains you expect from such fea‐ tures? What is your reallife example where such features would be need‐ ed? Hyphenated plain text is... a catastrophe.
Re: [dev] Binary Space Partitioning Window Manager
Brandon Invergo: You should look at herbstluftwm as it already imlements a binary tree method for window management (manual tiling only). I'm actually an herbstluftwm contributor. The problems I have with herbstluftwm's concepts should be easy to deduce from the first message of this thread. Cheers, -- b.d (| |) ^ ^
Re: [dev] Binary Space Partitioning Window Manager
Greetings. On Sat, 28 Jul 2012 13:54:07 +0200 Bastien Dejean nihilh...@gmail.com wrote: Christoph Lohmann: What are the practical and productivity gains you expect from such fea‐ tures? What is your reallife example where such features would be need‐ ed? Hyphenated plain text is... a catastrophe. No. Sincerely, Christoph Lohmann
Re: [dev] Binary Space Partitioning Window Manager
Nick: Two potentiial issues I see: - It wouldn't interact too well with tagging. Presumably. Either whole container nodes and their leaves would have to be assigned tags, or each tag would have its own tree structure. The former might actually not be a bad outcome. I'm afraid I don't see how it could support tagging. Having one tree per *desktop* seems to be the only option. - I can't imagine how the interface would work in a non-annoying way. How would one choose the container to replace/pair to? Maybe just doing it on whatever window was focused would be fine. It is how I intend to do it (the '^' character in my ASCII drawings indicates the focused window). Thanks for your feedback, -- b.d (| |) ^ ^