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
Isaac Freund
fcf8b1e442
Cursor: fix formatting
This is a behavior change in zig 0.14
2025-06-26 11:01:19 +02:00
Isaac Freund
ed85b4401e
build: bump version to 0.3.11-dev 2025-06-18 14:14:46 +02:00
Isaac Freund
6af8369624
build: bump version to 0.3.10 2025-06-18 14:06:52 +02:00
Isaac Freund
7fc7b570f0
View: workaround wlr_box_intersect() quirk 2025-06-18 13:46:17 +02:00
Isaac Freund
6385d71c37
XwaylandView: remove set_decorations listener on unmap 2025-06-18 12:26:46 +02:00
Daniel Eklöf
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
Daniel Eklöf
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
Isaac Freund
c111fc9905
river: drop wl_drm support
Looks like other compositors have completely dropped this by now.
2025-06-18 12:22:17 +02:00
Isaac Freund
bbb62ac8d8
linux-drm-syncobj: implement protocol 2025-06-18 12:22:17 +02:00
Isaac Freund
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
Isaac Freund
037314823e
build: update to wlroots 0.19 2025-06-18 12:22:17 +02:00
Isaac Freund
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 46f77f30dcce06b7af0ec8dff5ae3e4fbc73176f)
2025-03-29 15:54:45 +01:00
Isaac Freund
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
Isaac Freund
f1904d4e6f
build: bump version to 0.3.10-dev 2025-03-16 12:14:07 +01:00
Isaac Freund
bdc3c0ccf9
build: bump version to 0.3.9 2025-03-10 08:20:10 +01:00
Isaac Freund
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
Isaac Freund
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
Isaac Freund
00ab4910e0
build: bump version to 0.3.9-dev 2025-03-07 12:52:50 +01:00
Isaac Freund
23ad9aa412
build: bump version to 0.3.8 2025-03-07 12:50:31 +01:00
Isaac Freund
933701d7f9
build: update to zig 0.14.0 2025-03-07 12:44:28 +01:00
Isaac Freund
0eb478b06a
Xwayland: don't inherit rlimit changes from river
(cherry picked from commit 543697847f2167152ae25f775f39541591b8d020)
2025-03-02 10:21:00 +01:00
Isaac Freund
295bbb241a
build: bump version to 0.3.8-dev 2025-01-04 11:39:28 -06:00
Isaac Freund
189cf6e68b
build: bump version to 0.3.7 2025-01-04 11:35:17 -06:00
Isaac Freund
840eacae62
river: wrap monotonic time > 2^32-1 milliseconds
Fixes: https://codeberg.org/river/river/issues/1176
(cherry picked from commit 6abcc68a198d0246077aaaed8af08db224f16775)
2025-01-04 11:34:16 -06:00
Isaac Freund
a5f94268e6
Output: check scene damage before rendering
This should fix adaptive sync/VRR, which was regressed by db7de8151.

(cherry picked from commit ab879e245cbc317e3a2f5ec0379143d4b25b3cfe)
2025-01-04 11:34:06 -06:00
Isaac Freund
6254211a26
build: bump version to 0.3.7-dev 2024-12-09 15:07:58 +01:00
Isaac Freund
4b24287da7
build: bump version to 0.3.6 2024-12-09 15:01:53 +01:00
Isaac Freund
59f0fb2882
docs: mention key repeat defaults
(cherry picked from commit 5ca829bd5acea4c68abcf16332ccfe6202da4aeb)
2024-12-09 15:01:03 +01:00
tesselslate
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 a2a5e8f4632374b4b322c0520b7e30e35e0d753a)
2024-12-09 15:00:34 +01:00
Isaac Freund
f0798f7536
layer-surface: fix clip box coordinates
The clip box must be relative to the layer surface, not the output.

(cherry picked from commit 1b5dd21ee610b30d13c9165dfde23989c5e97e8d)
2024-12-09 15:00:08 +01:00
Isaac Freund
08cc135ebd
Output: workaround wlroots headless output bug
(cherry picked from commit 3529463569d4e7f8f9a7510ab11292e91b1c9a4a)
2024-12-09 15:00:02 +01:00
Aviva Ruben
42b339fbb8
input: support scroll button lock config
(cherry picked from commit fd55f51ba1b53af95fe3a24611490d42a895ef98)
2024-12-09 14:59:53 +01:00
Isaac Freund
fd58a84f18
docs: fix broken repology link
(cherry picked from commit 26f599b56b8f73dc13be055f6730edafd6c30401)
2024-12-09 14:59:45 +01:00
tiosgz
b281d196e4
build: load tablet-v2 protocol from its new location
(cherry picked from commit fbb9cc0f76da5e19f25ef2bc32f4e89febc95435)
2024-12-09 14:59:39 +01:00
Isaac Freund
a50573082b
tearing-control: fix security-context related assert
(cherry picked from commit 55974987b6a09d4208af09a07ecccd4656b660b6)
2024-12-09 14:59:34 +01:00
Isaac Freund
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 f82b2f58163eb092941d7d2e05e1d0eeaa9f50fe)
2024-12-09 14:59:22 +01:00
Violet Purcell
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 066baa575340a1926bc300cbeebba8ee735839a0)
2024-12-09 14:59:09 +01:00
Isaac Freund
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 db7de8151cf1491bc6e3b664d8ab1df0c23a93a7)
2024-12-09 14:49:55 +01:00
akawama
4d11cd97e0
docs: clarify input device name description
The word "numerical" suggests both decimal and hexadecimal, so changed
it to decimal.

(cherry picked from commit f5d37f9b4d70a20adb1825fb9d8e6d3f743b270c)
2024-12-09 14:49:50 +01:00
tiosgz
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 93863b132eb7a32e296d5f224181b04e161b1c58)
2024-12-09 14:49:29 +01:00
Isaac Freund
dcc8e5cb9d
build: bump version to 0.3.6-dev 2024-07-22 17:25:15 +02:00
Isaac Freund
0e1b1862ca
build: bump version to 0.3.5 2024-07-22 17:21:01 +02:00
Isaac Freund
510268d83a
river: attempt to recover from GPU resets
(cherry picked from commit 85a1673a9e8bece59467a0107b79f9a5330c0f15)
2024-07-22 17:20:08 +02:00
Isaac Freund
62576d792c
LayerSurface: minor style/naming tweaks
No functional changes

(cherry picked from commit 2cc1d1cef3aa5adf621f82475b30b19ae9aecff5)
2024-07-22 17:20:02 +02:00
tiosgz
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 f27bbf03f1173c9f148c5343dc0fc168c4fcb982)
2024-07-22 17:19:59 +02:00
Isaac Freund
eb32deaf76
build: update to wlroots 0.18.0
(cherry picked from commit 99ef96a389eb3e350a7fd3294d1033263751b1a1)
2024-07-22 17:19:44 +02:00