The wlroots rendering API expects colors to be provided with
premultipled alpha but we currently do not parse them as such. This
causes blending with e.g. a transparent border color to be very broken.
The calculation of view.pending.box.x for snap right should be based on
output_width (not output_height).
The inverse applies to view.pending.box.y for snap down.
Currently the spawn-tagmask applies to the currently focused output.
This however means that it is lost if the monitor is unplugged and makes
it hard to set for all outputs.
Change this to make the command apply to all outputs.
This is a breaking change.
This is nice simplification and allows us to abort startup if the
default xkb configuration (perhaps influenced by XKB_DEFAULT_*
environment variables) is invalid.
This reduces the impact of keyboard groups on the Keyboard.zig
implementation and otherwise improves consistency with patterns used
elsewhere in rivers code.
There are also two small changes to the riverctl interface:
- keyboard-group-add-keyboard is renamed to keyboard-group-add
- keyboard-group-remove is added to support removing keyboards from a
group.
It is not guaranteed that the next layout_demand event after a user_command
event has the same active tags (for example when there are no views visible).
As an example, a user could trigger a user_command while no views are visible,
then switch to a different tag set which has active views. The active tags of
the previous layout_demand may also be different.
Therefore it is impossible to correctly implement a layout generator which has
user commands apply only to the currently active tag set, which is solved by
this patch.
- The lifetimes of the Keyboard and Switch structs are now directly
tied to the corresponding InputDevice, which has become a field of
those structs.
- Seat capabilities are now properly updated on removing a keyboard.
These changes align with input device refactoring in upstream wlroots
which will make updating to easier 0.16.0.
e.g. `riverctl map -layout 0 normal Super Y spawn foot`
When this mapping is checked against a pressed key, layout 0 will be used to translate the pressed key instead of the currently active layout.
The number denotes to an index of the layouts set with
`XKB_DEFAULT_LAYOUT`.
From the riverctl.1 man page:
*hide-cursor* *timeout* _timeout_
Hide the cursor if it wasn't moved in the last _timeout_
milliseconds until it is moved again.
The default value is 0, which disables automatically hiding the
cursor. Show the cursor again on any movement.
*hide-cursor* *when-typing* *enabled*|*disabled*
Hide the cursor when pressing any non-modifier key. Show the cursor
again on any movement.
Currently the view destruction sequence is started as soon as a view
is unmapped. However, this is incorrect as a client may map the view
again instead of destroying it.
Instead, only start the view destruction sequence when the underlying
xdg toplevel or xwayland surface is destroyed.
This extends the `csd-filter-add` command to allow matching on window
titles as well, using a `csd-filter-add kind pattern` syntax. The
following kinds are supported:
* `title`, which matches window titles
* `app-id`, which matches app ids
Only exact matches are considered.
As an example following configuration applies client-side decorations to
all windows with the title 'asdf with spaces'.
riverctl csd-filter-add title 'asdf with spaces'
This extends the `float-filter-add` command to allow matching on window
titles as well, using a `float-filter-add kind pattern` syntax. The
following kinds are supported:
* `title`, which matches window titles
* `app-id`, which matches app ids
Only exact matches are considered.
As an example following configuration floats all windows with the title
'asdf with spaces'.
riverctl float-filter-add title 'asdf with spaces'