View focusing during cycling does not focus the view's workspace but rather
stays on the same workspace even if the view does not belong to that workspace.
This patch corrects that behavior.
The `cancel` function only damaged the indicator. This leads to the view border
not being properly redrawn as well as group indication when the mode gets
cancelled.
Centering the cursor on a view that is off-screen enough to have its center in
another view causes surprising behavior. This patch constrains the geometry that
is used to center to cursor to not leave the output.
Pinning a view to another sheet should position the view in a way so that it is
fully visible after the action. Migration via moving should not move a view off
screen in a way that it turns out to be invisible.
This patch moves all UI related configuration options from the top level into
their own section to group them up. This constitutes a breaking change for the
end user because it invalidates previous configurations and requires users to
adjust their configuration manually.
This patch introduces more configuration options for pointer devices:
* adds `tap` option
* adds `tap-drag` option
* adds `tap-drag-lock` option
* adds `natural-scrolling` option
* adds `no-scroll` to `scroll-method`
This also changes the way unconfigured options are handled. `hikari` is no
longer going to overwrite unconfigured values with its own default but rather
keeps them unchanged.
Xwayland uses layout coordinates for positioning surfaces, while hikari uses
coordinates relative to the position of a view's output. That means that
coordinates need to be converted first before they are used in Xwayland calls
(and vice versa).
This basically reverts fdcada068164e5d4c89a932fdea94eb42d3e7c09 and
(hopefully) fixes the remaining places where a conversion was missing.
These are very different operations and this should be reflected in the code as
well. This patch also allows to write code that can migrate views on demand.
If this does not happen the focus can change to a different view during this
action. This is disorienting. To prevent this we raise the view to the top at
the beginning of the action.
Pull ${CFLAGS_EXTRA} and ${LDFLAGS_EXTRA} from the environment, which allows the
user to specify additional CFLAGS and LDFLAGS that will be added to the
respective CFLAGS and LDFLAGS variables built up by the Makefile. (Setting
CFLAGS or LDFLAGS directly on the command line, at least with NetBSD make, would
cause make to ignore all of the appends in the Makefile.)
Add ${CFLAGS_EXTRA} and ${LDFLAGS_EXTRA} to the hikari-unlocker build command,
so those flags apply when building that target (this is important in Void
cross-compilation, because PAM libs and headers will not generally be in
/usr/lib or /usr/include and require specification).
Reorder the command-line arguments when building the hikari and hikari-unlocker
targets. Some compilers, like GCC, do not properly find symbols from libraries
unless the libraries are listed after the source files that reference them.
Libraries should always be listed last.
Add a ${DESTDIR} prefix to all install destinations, empty by default, to allow
installation into a chroot environment.
Drop the INSTALL_GROUP and associated -g flag to the install commands. Setting a
group explicitly is probably not useful, and can either cause breakage or
require manual specification for reasonable behavior. (In Void packaging
environments, for example, packages are built as an unprivileged user and the
default behavior of grabbing the user's primary group is not correct.) Files are
executable or readable by all users anyway and writable only by the owne
This patch allows to position views relative to the output by stating one of the
following values as position:
* `bottom-left`
* `bottom-middle`
* `bottom-right`
* `center`
* `center-left`
* `center-right`
* `top-left`
* `top-middle`
* `top-right`
As documented in issue #1 destroying a layer before mapping it leads to the
freed memory still being linked to the `layer_surfaces` list. This patch adds
the invariant the we always need to be able to remove this link. This is ensured
by doing a `wl_list_init` after every `wl_list_remove`.
This patch reworks how `hikari` gets configured and provides a default
configuration as well as means to incorporate this into the binary.
This deprecated the `ETC_PREFIX` configuration during make and makes it reuse
`PREFIX`.
A default terminal is now specified via the `TERMINAL` environment variable.