We grab the keyboard and bind it to the roftl window. This works as long
as there is no other window grabbing the keyboard afterwards (and
effectively stealing the keyboard from roftl).
This is done so tabbing out of roftl (and hence loosing focus) is not
possible.
Additional entries are sources concurrently. With a split into primary
and additional sources, this has the major advantage that only primary
source has to provide immediate results.
Additional sources start sourcing in the background and have at least
the time a human needs to provide input and reaction time to process the
visible results without an actual visible delay.
Some windows do not specify any `_NET_WM_WINDOW_TYPE`. In that case
treat them like normal windows. It is expected that creaters of special
windows are more concious about setting this property correctly. Normal
developers may be unaware and are more likely not to specify the type.
E.g. Official Spotify does not have a `_NET_WM_WINDOW_TYPE` in the
latest version.
Preliminary code for action blocks and flags (similar to magit dispatch) was
removed for now. Reasoning is that it is too costly to remember specific
keybindings for each source/entry. We only allow 4 (for now)
actions which get pre-defined keybindings.
What those actions trigger exactly and whether less than 4 are used is left to
the source.
Filling the narrow map in parallel caused invalid indices.
Also narrow map can be simplified to a Vec since it anyways only maps continous
selection indices starting at 0 to entry indices.
- Move to unstable winit since 0.25.0 does not handle transparency correctly on
X11
- Matcher trait to enable different matching algorithms
- Find correct visualtype for cairo xcb surface: Visualtype was more or less
taken randomly which only worked by chance. Now find visualtype that corresponds
to visualid of the winit window which should be the correct one.