Love the window snapping - subtle, and doesn't get in the way - love it.
I would love to see this taken to the next level: once windows are "snapped together", treat them like they are indeed connected, until disconnected, or a modifier key is used. All configurable, of course
Examples:
- if I snap 2 windows side-to side:
---- that locks that edge together, and those 2 windows
---- resizing the common edge resizes both windows - i.e. changing the "split" - but not changing the height, or the "outside" edges (ie the non-common edges)
---- dragging one title bar moves both
---- maximizing 1 maximizes both, and maintains the split ratio (since you can drag the split afterwards, right?
---- minimize - same thing
---- if the 2 windows are different heights, or staggered, this is maintained
-------- but if I drag one window's top/bottom edge to match - then that edge is now coupled/locked, too
-------- if the top and/or bottom edges match when the two windows are docked side-to-side, then lock the top/bottom, too
---- drag/resizing the top (or bottom) drags both windows' edges, if locked
---- fancy option: outline the common windows in another color -
- to disconnect, double-click one of the common edges, and that window is de-coupled from the group
---- and also give a menu option, and/or hotkey
---- you might want to "bump" that now un-docked window ~10-20 pixels away, for feedback that it's uncoupled
- a modifier key overrides this behavior
Obviously, the windows could be docked top-to-bottom, and the same concepts apply.
If more than 2 windows are grouped, e.g. 2x2, 1x4, or 4x1:
- should be roughly similar to the above, except more common edges to play with
- if in a 2x2, and the inside common vertical edges line up (i.e. between the top 2 and the bottom 2), then dragging that split changes the vertical split of all 4 windows
- if in a 2x2 (or similar), dragging the inside common corner (e.g. the center of the 4 windows) will drag both the horizontal and vertical split
Alternately, you could make it so that a modifier key is needed to use the multi-window behaviors (or let the user toggle between these 2 modes).
Another feature that could apply to this, or windows in general: double-clicking one edge expands that edge to the edge of the monitor (or next window in that direction?) Clicking on a corner expands both edges accordingly. If edges are joined, of course they follow
Great stuff already - just some ideas for more awesomeness!
-Bruce