This plugin will encapsulate all the logic of the window tiling
extension. It is intended to replace the legacy TypeScript logic,
to be more robust, testable and more feature rich.
The explanations on why TypeScript is not a way to go can be found in
the following section of the blog post:
https://genda.life/posts/bismuth-future/#motivation
This config will also be used by the core C++ module in the future.
Since it is a shared resource, it should not be placed in only one
module's folder.
Those settings break every sane testing framework in the existence:
GTest, Catch, Doctest. Given, that they do not provide any tangible
benefit, they should be disabled.
When bismuth finds two windows are equally distanced from the current
window, the last used window will be chosen when focus is moved via
keyboard shortcuts.
Before, the closest windows were always determined based on the top-left
corner of each window. This is fine when focusing a window below or to
the right, since adjacent edge aligned windows will have the top-left
corner on the same line either horizontally or vertically.
When moving the focus up or to the left, however, this is no longer
guaranteed. Even though the bottom of two candidate windows might be
edge to edge with the current window, the top-left corners might be on
different levels since the candidate windows don't have to have the same
height. To correctly select the last used adjacent edge aligned window
to the top or to the left, the bottom-right corner will be used to find
the closest windows.
Before, when no window was focused, focusing a window with keyboard
shortcuts would only work if there were two or more windows visible. It
would also only consider tiled windows at all.
Now, any window, floating or tiled, is considered when no window was
focused previously.
Apparently pressing the maximize button doesn't actually force the
window into any specific geometry. This resulted in windows staying in their
tiled geometry while all other windows would be rearranged as if the
maximized window would be floating.
This fix makes the maximized window fill the entire working area.