When a mouse button is held down we need to communicate the change of mouse
position to the currently focused surface rather than handling it just as normal
mouse movement.
The server already manages outputs and each output references its workspace.
Outputs are more frequently used so the workspace list is basically redundant.
Disable/enable the unmap and map handlers in the different states so that we
cannot double map/unmap a layer. Also properly handle destroying unmapped
layers.
This patch adds configuration fir switch devices like "lid switches" and "sleep
buttons". They are configured like any other input device and bind to an action.
Cycling does not reset pointer focus properly so it can leave the pointer focus
on a different surface than the once we actually cycled to.
We now completely clear the focus on `hikari_workspace_focus_view` no matter
what and use the cursor to determine the new focus after cycling.
Allows keyboard configuration on a device basis.
Available options are:
* `rules`
* `model`
* `layout`
* `variant`
* `options`
All `xkb` settings are configured in the `xbk` section. Rules can be given as an
object and an `xkb` file is specified as a string.
Bindings should get configured when devices are attached. Not when the
configuration is loaded. This patch lays the groundwork for more flexible
keyboard configuration.
`swaybar` tends to use the bottom layer so it does properly work with menu
applications. We currently do not factor in the bottom layer for computing
usable output areas which causes some issues with tiling. This patch makes
`hikari` compute the usable area by taking the `top` and `bottom` layer
exclusive areas into account.
Source: https://github.com/Alexays/Waybar/issues/11
Pending operations need to be advanced even when a view is not visible. To make
this happen we need to schedule a new frame on every commit which communicates
to the clients that frames are getting processed.
When typing the lock indicator should be visible on all outputs. This patch also
moves the rendering code for the lock indicator into the render module.
Since every mode now has full control over the rendering process the currently
selected view during cycling can be drawn as the topmost view without changing
its actual stacking order.
Instead of having different damage frame handlers for outputs every mode now has
full control over the renderer. This allows for more optimization and add more
flexibility to designing modes.
By doing this all the relevant rendering code is now in one compilation unit. We
can also make very mode take complete control of its rendering while maintaining
efficient code.