Commit Graph

1386 Commits

Author SHA1 Message Date
242b62a9d4 Merge new river-classic 2025-12-14 08:12:14 -08:00
be722b2a3f docs: fix typo in README 2025-12-10 20:24:22 +01:00
82613a56db Fix focused view sometimes being reported as having no tags 2025-10-09 16:05:23 -07:00
936d1157b4 Fix last commit 2025-10-09 15:51:32 -07:00
7ce21a44d8 Fix current view tags being wrong 2025-10-09 15:36:11 -07:00
9c42ed788a build: bump version to 0.3.14-dev 2025-10-03 11:36:58 +02:00
3ef7b69112 build: bump version to 0.3.13 2025-10-03 11:35:50 +02:00
165871e0fc command: fix possible crash on focus
If the currently focused view has been moved to a different output but
the transaction has not yet been completed, we can hit unreachable code
in this function.

thread 1073 panic: reached unreachable code
/home/pkaplan/Software/river/river/command/view_operations.zig💯21: 0x11752d6 in getTarget (river)
                    unreachable;
                    ^
/home/pkaplan/Software/river/river/command/view_operations.zig:46:22: 0x1146f36 in focusView (river)
    if (try getTarget(
                     ^
/home/pkaplan/Software/river/river/command.zig:144:16: 0x11124e3 in run (river)
    try impl_fn(seat, args, out);
               ^
/home/pkaplan/Software/river/river/Seat.zig:447:16: 0x10eb00f in runCommand (river)
    command.run(seat, args, &out) catch |err| {
               ^
/home/pkaplan/Software/river/river/Seat.zig:423:24: 0x1110350 in handleMapping (river)
        seat.runCommand(mapping.command_args);
                       ^
/home/pkaplan/Software/river/river/Keyboard.zig:213:47: 0x10e83b8 in wrapper (river)
        if (keyboard.device.seat.handleMapping(keycode, modifiers, released, xkb_state)) {
                                              ^
???:?:?: 0x7d8f73aa051d in ??? (libwayland-server.so.0)
Unwind information for `libwayland-server.so.0:0x7d8f73aa051d` was not available, trace may be incomplete

???:?:?: 0x7d8f739fecc7 in ??? (libwlroots-0.18.so)
???:?:?: 0x7d8f739d0dbb in ??? (libwlroots-0.18.so)
???:?:?: 0x7d8f73aa2111 in ??? (libwayland-server.so.0)
???:?:?: 0x7d8f73aa41f6 in ??? (libwayland-server.so.0)
/home/pkaplan/Software/river/river/main.zig:139:25: 0x10715dd in main (river)
    server.wl_server.run();
                        ^
/usr/lib/zig/std/start.zig:524:37: 0x107083e in main (river)
            const result = root.main() catch |err| {
                                    ^
???:?:?: 0x7d8f736b06b4 in ??? (libc.so.6)
???:?:?: 0x7d8f736b0768 in ??? (libc.so.6)
???:?:?: 0x1070354 in ??? (???)
2025-10-03 11:28:19 +02:00
633f4e2733 river: remove dead code 2025-10-03 11:28:01 +02:00
170cac310d linux-dmabuf: disable fine-grained feedback again
Despite the better debouncing in wlroots 0.19, this is still causing
problems. In particular, certain clients (mostly Xwayland games it
seems) have a bad interaction with this additional feedback, possibly
related to the cursor buffer.

The reported symptoms are significant framerate drops and stuttering on
pointer input.

Probably there's a wlroots bug here at fault but I don't have the
resources to fix it myself currently and would rather not force river
users to suffer.

Setting WLR_SCENE_DISABLE_DIRECT_SCANOUT=1 isn't sufficient to solve
these problems either, as wlr_scene still sends enough extra feedback
to trigger the problems.

Closes: https://codeberg.org/river/river/issues/1277
2025-09-02 10:52:57 +02:00
c18ed4aae1 river: fix logging to non-pipe
Since the Zig 0.15 upgrade, if stderr is redirected to a file, river
writes every log message to the beginning of the file, overwriting the
previous message. This commit fixes that and also switches to the nicer
new std.debug API for stderr logging.
2025-09-02 09:46:46 +02:00
f0c7f57d36 LayerSurface: fix crash on bad exclusive zone
River closes layer surfaces with an unreasonably large exclusive zone.
However, due to unfortunate/awkward code structure, this currently
may cause a use-after-free on mapping layer surface.
2025-09-01 09:55:49 +02:00
52b312d08d Merge branch '0.3.x' of https://codeberg.org/river/river 2025-08-31 15:54:01 -07:00
d412c9cdd1 doc: tweak README formatting 2025-08-30 19:23:45 +02:00
e5c7d75dcc build: bump version to 0.3.13-dev 2025-08-30 19:01:32 +02:00
8e4f3f6800 build: bump version to 0.3.12 2025-08-30 19:01:32 +02:00
50d5108d1f ci: rename to river-classic 2025-08-30 19:01:32 +02:00
1168a3f47a doc: rename to river-classic 2025-08-30 18:56:31 +02:00
265461162f build: rename to river-classic 2025-08-30 18:56:31 +02:00
b3b79944cc build: bump version to 0.3.12 2025-08-30 18:13:56 +02:00
7bc761306e Cursor: clear pointer focus on hide
This line seems to have been removed by accident while fixing a
different unrelated bug.

Fixes: f482b9ddaa
2025-08-30 18:08:24 +02:00
88a8c45ac0 river: run 0.15 zig fmt 2025-08-22 15:11:50 +02:00
d72408df18 build: update to Zig 0.15 2025-08-22 15:09:07 +02:00
e97a63f0fa Merge branch '0.3.x' of https://codeberg.org/river/river 2025-08-17 17:23:31 -07:00
63542fdf3e build: bump zig-wlroots version
This version includes a fix for a regression introduced with the wlroots
0.19 upgrade.
2025-07-10 14:55:38 +02:00
b8ec02796f build: bump version to 0.3.12-dev 2025-07-01 09:40:25 +02:00
0898a06a96 build: bump version to 0.3.11 2025-07-01 09:37:56 +02:00
d2520301cd build: switch to zig-wlroots tag 2025-07-01 09:36:30 +02:00
1db51285c0 ext-foreign-toplevel-list-v1: implement protocol 2025-07-01 09:26:26 +02:00
d08c170571 Seat: ignore virtual keyboards until keymap set
The wlr-virtual-keyboard-v1 protocol fails to make keyboard creation
atomic. There is nothing a client can do with a virtual keyboard that
has no keymap except for destroy it, so we can completely ignore them
until a keymap is set.

This fixes a regression with fcitx caused by river sending the null
keymap of a new virtual keyboard to fcitx.
2025-06-30 12:57:06 +02:00
fe759d2d8a Keyboard: don't add virtual keyboards to group
Also don't set their keymap, the client handles that.

This is the first step towards fixing a regression with fcitx5.
2025-06-30 12:56:51 +02:00
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