Subsurfaces have been handled somewhat incorrectly. With the release of Firefox
87 this happens to trigger a couple of rendering bugs. Damage is not tracked
properly for those subsurfaces.
Group operations tend to break with multiple outputs and some frankly do not
make a lot of sense.
* `raise` and `lower` group may and up looping
* `group-only` should clear all workspaces
Unmanaged views currently do not get evacuated at all. This means they are still
referring to a deallocated output if they happen to be have been there during
deallocation. We now evacuate them alongside regular views on workspace merging.
Xwayland views need to know their layout coordinates communicated to them via a
configure. Detaching an output changes the layout coordinate system and we
therefore need to re-configure all Xwayland views once the layout has changed.
Not doing this can lead to Xwayland views being placed outside the viewport
since they assume the wrong layout coordinates.
Sheet pinning could also function as view migration. This is now removed since
it leads to two possible code paths for migration. We now decide at the call
site if we are doing a migration or a different operation (e.g. pinning,
moving).
Shutting down `hikari` now sends a `quit` action to each active view. And waits
for all of them to quit before exiting. Sending a quit again during shutdown
will terminate `hikari` right away.
Prevents from generating header files that are not used for a specific build as
well as excluding unnecessary object files. The `clean` target automatically
assumes all features being enabled to clean up all potential files.
This lays the foundation for separate view properties for child views. Currently
`hikari` treats all views with the same app id the same. This can lead to
unwanted behavior for e.g. dialogs.
This patch adds layout registers `0` to `9` which correspond to default layout.
These are currently only useful when restacking a sheet that does not have a
layout applied. If this is the case the default layout will be used to arrange
the current sheet.
Indicator bars now store their current color. This fixes issues where bars get
updated and need to figure out which mode `hikari` is in so they can color
themselves correctly. This way the bar just "knows" the right color.
The server already manages outputs and each output references its workspace.
Outputs are more frequently used so the workspace list is basically redundant.
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.
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.
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.
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.
Public views are used to populate the lock screen to display additional
information, they should never display sensitive information.
Even hidden are displayed. This uses a `force` flag that overrides visibility
that is set in mode enter and reset on mode exit.
Introducing `lock` mode. This turns the screen locker into a mode which
adds some more modularity to the code.
Visible views on sheet 0 are also displayed on the lock screen allowing
for a customizable setup without the needs for extra plugins.
An indicator adds feedback for typing and verification.