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.
We can reduce the amount of code running with privileges to the few calls that
are needed to initialize the `wlroots` backend. These calls are now part of
`hikari_server_prepare_privileged`. After this everything is running with the
users privileges again.
This patch tries to focus the last `focus_view` during cycling. If that view is
no longer visible the first sheet view gets focused. This patch also makes
`hikari` focus the `focus_view` of a workspace when entering it with the cursor.
`focus_view` is no longer set to `NULL` when leaving a workspace.
This patch reworks how views are ordered. A new ordering is introduced for all
views present on all visible workspaces. This makes cycling views with multiple
workspaces less confusing because the ordering is server-wide and not just
workspace-wide. Also showing views now calls the `raise_view` function to bring
the view to the front of all relevant lists and not just the workspace.
This allows clients to set the cursor surface. There is still a bug lurking in
`wlroots` that might cause some unpleasant screen flickering which is triggered
by this patch. To prevent this from happening one can set `WLR_DRM_NO_ATOMIC` to
`1` in the environment before startup.
This patch reworks entirely how `hikari` marks areas as damaged. Instead of
damaging all views during indication just the views that actually change
indication get damaged.
Resizing should be possible in every direction, this is especially useful for
views that have been tiled.
This patch adds the following action to complete the set of resize operations.
* view-increase-size-up
* view-decrease-size-down
* view-increase-size-left
* view-decrease-size-right
This adds layer-shell support to hikari. Outputs now have a usable area instead
of just the view geometry. This is used to prevent views from being placed under
status bars etc. Support for layer shell is optional and can be compiled in via
`WITH_LAYERSHELL=YES`.
The operations allow for new views to be attached to an existing layout. The
operation behaves just like setting layout but without changing layout order.
Iconified state has always been a misnomer. The view is not iconified at all,
there is no icon laying around it is just invisible when a sheet is shown.
Since layout mode the default bindings for layout cycling have been bound to
`L+n` and `L+p` by default. Cycling through views can be done with `LS+n` and
`LS+p.` This leads to muscle memory issues when going to the "previous" view
because `hikari` interprets the next view as the one going down the stack and
the previous one as going up the stack. This is counterintuitive because going
back to the previous view requires the user to issue `LS+n`. Therefore we just
switch the meaning for next and previous around for everything by layout
cycling.
Also cycling through sheet views only can be very disorienting with borrowed
views on the workspace. Therefore we replace sheet cycling with cycling though
all the views on the workspace.
`execute-mode` was always kind of a crutch that aimed to be a simple program
runner. It's functionality is now merged with mark selection. If a mark gets
selected that is not set to any view `hikari` is going to execute a specified
command. It is left to the user if that application is going to take up that
mark when it started. The user needs to configure an `autoconf` settings for
this.
Mark actions can now also be bound to a keybinding. That way one does not need
to enter `mark-select` or `mark-switch-select` mode and marks can be selected
just by a issuing a keybinding. The actions are called `mark-show-a` to `z` and
`mark-switch-to-a` to `z`.
Layout bindings are taking up valuable key bindings and since one can have quite
a lot of them it is better to move them into registers just like we are already
doing with execute registers.
Since it's now possible to move views between sheets this adds a mode where one
can manually select the target sheet. On entering the mode a sheet is selected
by pressing the number of the target sheet. Tab is used to cycle between target
workspaces.