Commit Graph

1355 Commits

Author SHA1 Message Date
9cc6c1e09b Fix riverctl.1.csd 2025-06-29 19:40:56 +09:00
82f2f02c00 Add cursor warp option 2025-06-29 19:40:36 +09:00
dc1d5c8418 Allow floating views to appear at the mouse 2025-06-29 19:40:00 +09:00
0c095f0c93 Merge branch '0.3.x' of https://codeberg.org/river/river 2025-06-29 19:31:25 +09:00
fcf8b1e442 Cursor: fix formatting
This is a behavior change in zig 0.14
2025-06-26 11:01:19 +02:00
ed85b4401e build: bump version to 0.3.11-dev 2025-06-18 14:14:46 +02:00
6af8369624 build: bump version to 0.3.10 2025-06-18 14:06:52 +02:00
7fc7b570f0 View: workaround wlr_box_intersect() quirk 2025-06-18 13:46:17 +02:00
6385d71c37 XwaylandView: remove set_decorations listener on unmap 2025-06-18 12:26:46 +02:00
c8fb3952f8 XwaylandView: drop set_decorations link in handleDestroy()
Fixes yet another assertion in wlroots:

    river: xwayland/xwm.c:601: xwayland_surface_destroy: Assertion `wl_list_empty(&xsurface->events.set_decorations.listener_list)' failed.
2025-06-18 12:22:17 +02:00
40294223d4 LayerSurface: drop new_popup link in handleDestroy()
This fixes an assertion in wlroots:

    river: types/wlr_layer_shell_v1.c:55: layer_surface_destroy: Assertion `wl_list_empty(&surface->events.new_popup.listener_list)' failed.
2025-06-18 12:22:17 +02:00
c111fc9905 river: drop wl_drm support
Looks like other compositors have completely dropped this by now.
2025-06-18 12:22:17 +02:00
bbb62ac8d8 linux-drm-syncobj: implement protocol 2025-06-18 12:22:17 +02:00
15736c57d7 linux-dmabuf: re-enable per-surface feedback
This was disabled due to being too spammy in the past. Since wlr_scene
now debounces per-surface feedback it should be fine to re-enable this.
2025-06-18 12:22:17 +02:00
037314823e build: update to wlroots 0.19 2025-06-18 12:22:17 +02:00
ecd2a396d3 Seat: put all keyboards in a single group
Deprecate and ignore the riverctl commands for creating explicit
keyboard groups.

In my mind, the only reason to have more than one keyboard group is if
different keyboard devices are assigned different keymaps or repeat
rates. River does not currently allow such things to be configured
however.

When river eventually makes it possible to configure different keymaps
and repeat rates per keyboard device, there is no reason we can't 100%
automatically group keyboards based on the keymap/repeat rate.

Exposing this keyboard group abstraction to the user is just bad UX.

Failing to group keyboards automatically also creates confusing/buggy
behavior for the user if the hardware, for example, exposes some of the
the XF86 buttons on a laptop as a separate keyboard device from the main
keyboard. Creating keybindings for these XF86 buttons that use modifiers
doesn't work by default, but there's no reason it shouldn't just work.

Closes: https://codeberg.org/river/river/issues/1138

(cherry picked from commit 46f77f30dc)
2025-03-29 15:54:45 +01:00
f482b9ddaa Cursor: restore previous image on unhide
If client A has an xdg_popup open and the user moves the cursor over a
surface of client B and waits for the cursor to be hidden after a
timeout, the cursor will not be shown on movement until the (invisible)
cursor is moved back into a surface of client A or somewhere the
compositor is responsible for rendering the cursor.

This is due to the (flawed) xdg popup grab interface of wlroots which
prevents wlr_seat_pointer_notify_enter() from sending events to clients
other than the one with the active xdg popup.

Closes: https://codeberg.org/river/river/issues/1192
2025-03-16 13:37:57 +01:00
f1904d4e6f build: bump version to 0.3.10-dev 2025-03-16 12:14:07 +01:00
bdc3c0ccf9 build: bump version to 0.3.9 2025-03-10 08:20:10 +01:00
60f954c2b0 build: eliminate duplicate version string
There is now a single source of truth for river's version. It is no
longer possible for the versions in build.zig and build.zig.zon to get
out of sync as build.zig now parses the version from build.zig.zon.
2025-03-10 08:17:17 +01:00
8f4a746da0 security-context: fix assertion failure
This regression was caused by turning my brain off a bit too much during
the zig 0.14 upgrade.
2025-03-10 07:55:56 +01:00
00ab4910e0 build: bump version to 0.3.9-dev 2025-03-07 12:52:50 +01:00
23ad9aa412 build: bump version to 0.3.8 2025-03-07 12:50:31 +01:00
933701d7f9 build: update to zig 0.14.0 2025-03-07 12:44:28 +01:00
0eb478b06a Xwayland: don't inherit rlimit changes from river
(cherry picked from commit 543697847f)
2025-03-02 10:21:00 +01:00
295bbb241a build: bump version to 0.3.8-dev 2025-01-04 11:39:28 -06:00
189cf6e68b build: bump version to 0.3.7 2025-01-04 11:35:17 -06:00
840eacae62 river: wrap monotonic time > 2^32-1 milliseconds
Fixes: https://codeberg.org/river/river/issues/1176
(cherry picked from commit 6abcc68a19)
2025-01-04 11:34:16 -06:00
a5f94268e6 Output: check scene damage before rendering
This should fix adaptive sync/VRR, which was regressed by db7de8151.

(cherry picked from commit ab879e245c)
2025-01-04 11:34:06 -06:00
6254211a26 build: bump version to 0.3.7-dev 2024-12-09 15:07:58 +01:00
4b24287da7 build: bump version to 0.3.6 2024-12-09 15:01:53 +01:00
59f0fb2882 docs: mention key repeat defaults
(cherry picked from commit 5ca829bd5a)
2024-12-09 15:01:03 +01:00
be0e372fbc alpha-modifier-v1: implement protocol
Implement the alpha-modifier-v1 protocol, which allows clients to
offload alpha blending operations to the compositor.

wlroots' scene graph code takes care of updating the opacity of
wlr_scene_buffers with an associated wp_alpha_modifier_surface_v1.

(cherry picked from commit a2a5e8f463)
2024-12-09 15:00:34 +01:00
f0798f7536 layer-surface: fix clip box coordinates
The clip box must be relative to the layer surface, not the output.

(cherry picked from commit 1b5dd21ee6)
2024-12-09 15:00:08 +01:00
08cc135ebd Output: workaround wlroots headless output bug
(cherry picked from commit 3529463569)
2024-12-09 15:00:02 +01:00
42b339fbb8 input: support scroll button lock config
(cherry picked from commit fd55f51ba1)
2024-12-09 14:59:53 +01:00
fd58a84f18 docs: fix broken repology link
(cherry picked from commit 26f599b56b)
2024-12-09 14:59:45 +01:00
b281d196e4 build: load tablet-v2 protocol from its new location
(cherry picked from commit fbb9cc0f76)
2024-12-09 14:59:39 +01:00
a50573082b tearing-control: fix security-context related assert
(cherry picked from commit 55974987b6)
2024-12-09 14:59:34 +01:00
c691396448 tearing-control: minor cleanups/style improvements
This commit also tweaks the riverctl interface to make the global
allow-tearing option apply only to tearing-control-v1 hints from
clients. The global option no longer affects tearing/no-tearing rules
explicitly created by the user.

(cherry picked from commit f82b2f5816)
2024-12-09 14:59:22 +01:00
aa1ef64448 tearing-control-v1: implement
Implement the wp-tearing-control-v1 protocol allowing window to hint
the compositor that they prefer async "tearing" page flips.

Add tearing/no-tearing rules to allow the user to manually
enabled/disable tearing for a window.

Use async "tearing" page flips when a window that should be allowed to
tear is fullscreen.

This still requires several kernel patches to work with the wlroots
atomic DRM backend. For now, either set WLR_DRM_NO_ATOMIC=1 or use a
custom kernel that includes the unmerged patches (such as CachyOS).

Closes: https://codeberg.org/river/river/issues/1094
(cherry picked from commit 066baa5753)
2024-12-09 14:59:09 +01:00
993bdf96d1 Root: simplify scene tree reparenting
Making these reparent() calls unconditional avoids inconsistent state.
It's also simpler and less error-prone and the wlroots function returns
immediately if the parent doesn't change anyways.

(cherry picked from commit db7de8151c)
2024-12-09 14:49:55 +01:00
4d11cd97e0 docs: clarify input device name description
The word "numerical" suggests both decimal and hexadecimal, so changed
it to decimal.

(cherry picked from commit f5d37f9b4d)
2024-12-09 14:49:50 +01:00
379f25fb3b Output: don't configure uninitialized layer surfaces
It is possible for a layer surface to notably delay its initial commit;
for example shotman[1] creates two layer surfaces and uses one of them
to get enough information for a screenshot and initializing the other.
River could also have sent a configure before initial commit if two
clients raced against each other.

Fixes https://codeberg.org/river/river/issues/1123

[1]:https://sr.ht/~whynothugo/shotman/

(cherry picked from commit 93863b132e)
2024-12-09 14:49:29 +01:00
dcc8e5cb9d build: bump version to 0.3.6-dev 2024-07-22 17:25:15 +02:00
0e1b1862ca build: bump version to 0.3.5 2024-07-22 17:21:01 +02:00
510268d83a river: attempt to recover from GPU resets
(cherry picked from commit 85a1673a9e)
2024-07-22 17:20:08 +02:00
62576d792c LayerSurface: minor style/naming tweaks
No functional changes

(cherry picked from commit 2cc1d1cef3)
2024-07-22 17:20:02 +02:00
2a75d51eec LayerSurface: focus on_demand-interactive surfaces on map
This is done specifically for lxqt-runner and qterminal to work as
expected, consistently among (almost) all compositors with layer-shell.
The most prominent drawback of this is that top- and overlay-layer
status bars with on_demand interactivity also get focus on map.

See https://codeberg.org/river/river/issues/1111 for more details.

(cherry picked from commit f27bbf03f1)
2024-07-22 17:19:59 +02:00
eb32deaf76 build: update to wlroots 0.18.0
(cherry picked from commit 99ef96a389)
2024-07-22 17:19:44 +02:00