A receptacle is an unfocusable empty leaf node.
Receptacles are used for building a tree without creating windows.
Example:
bspc node -i
bspc node @/ -p east -i
bspc node @/2 -p north -i
bspc rule -a Abc:abc -o node=@/1
bspc rule -a Ijk:ijk -o node=@/2/1
bspc rule -a Xyz:xyz -o node=@/2/2
Fixes#259.
Along the way, we also fixed the handling of the `*_padding`,
`window_gap` and `border_width` settings. The previous behavior was the
result of a bad decision (9fed780), as a response to #141. Many issues
followed: #143, #158, #260, etc. We now handle those settings as
intuitively as possible.
We also fixed a potential segfault in `cmd_node`, triggered by `bspc
node -d`[sic].
Fixes#402#252.
There's no constraints on desktop and monitor names, therefore, using a
desktop or monitor name as descriptor is ambiguous.
We put an end to this ambiguity by introducing desktop and monitor IDs.
`bspc query -{M,D}` now yields IDs instead of names.
Fixes#397.
It is now easy to access any attribute by piping the output of
`query -T` to a JSON extractor/filter.
E.g.:
bspc query -T -d DESKTOP_SEL | jq -r .layout
And it also makes `restore -T` more robust.
Stacking now involves 3 layers: BELOW, NORMAL and ABOVE.
In each layers, floating windows are stacked above tiled windows.
The *stack* function is now extremely simple: it just inserts an item in
a sorted list, relying on *stack_cmp* to compare clients.
Fullscreen windows are no longer special.
Because many clients (e.g. termite) prevent us (maybe unknowingly) from
capturing motion events on their windows, we're forced to create a
window for this sole purpose.
Grabbing the pointer isn't an option, because it forces us to consider
some of the enter notify events we should be ignoring.
Tags should generalize desktops.
To accomplish this, the main node attributes: (type, ratio) would have
to become a dictionary: ((tf1, (type1, ratio1)), (tf2, (type2, ratio2),
...). (`tf<n>` being a tag field.).
The last desktop and monitor are now deduced from the history.
The stacking order is now independent from the history of the focused
nodes: this prevents hacks on both sides.
All windows are now considered in the stacking algorithm: it prevents
tiled windows from one monitor to appear above the floating windows of
another monitor.
Transfered windows are stacked below the windows of the same kind.