river 0.3.7 This bugfix release fixes a regression introduced in 0.3.6 that prevents adaptive sync/VRR from working properly. It also fixes an assertion failure that can be hit with ~50 days of uptime. Full changelog: Isaac Freund (4): build: bump version to 0.3.7-dev Output: check scene damage before rendering river: wrap monotonic time > 2^32-1 milliseconds build: bump version to 0.3.7
river 0.3.6 This release adds support for the tearing-control-v1 and alpha-modifier-v1 protocols as well as support for scroll button lock input configuration. It also fixes a handful of bugs. Thank you all for the bug reports and code contributions! Full changelog: Aviva Ruben (1): input: support scroll button lock config Isaac Freund (9): build: bump version to 0.3.6-dev Root: simplify scene tree reparenting tearing-control: minor cleanups/style improvements tearing-control: fix security-context related assert docs: fix broken repology link Output: workaround wlroots headless output bug layer-surface: fix clip box coordinates docs: mention key repeat defaults build: bump version to 0.3.6 Violet Purcell (1): tearing-control-v1: implement akawama (1): docs: clarify input device name description tesselslate (1): alpha-modifier-v1: implement protocol tiosgz (2): Output: don't configure uninitialized layer surfaces build: load tablet-v2 protocol from its new location
river 0.3.5 This release updates the required wlroots version to 0.18. It also leverages new wlroots features to attempt recovery from GPU resets and improves focus handling of layer surfaces with "on demand" keyboard interactivity. Full changelog: Felix Bowman (1): completions: zsh click-method option fix Isaac Freund (5): build: bump version to 0.3.5-dev build: update to wlroots 0.18.0 LayerSurface: minor style/naming tweaks river: attempt to recover from GPU resets build: bump version to 0.3.5 tiosgz (1): LayerSurface: focus on_demand-interactive surfaces on map
river 0.3.4 This release fixes a number of bugs including a few possible crashes. Thank you for all the high quality bug reports! Full changelog: Isaac Freund (14): build: bump version to 0.3.4-dev ci: use mirror for zig tarball downloads ci: re-enable FreeBSD builds ci: log build summaries SceneNodeData: fix fromSurface() use after free input: apply map-to-output on output activation Output: flag gamma as dirty on enable Xwayland: fix unsound cast docs: tweak repology link wording in readme Output: fix Wayland backend support XdgPopup: send configure after initial commit layer-shell: fix on_demand keyboard focus PointerConstraint: fix assertion failure build: bump version to 0.3.4 Palanix (1): docs: mention zig build -h in readme
river 0.3.3 This release updates the required Zig version to 0.13. There are no changes to river's behavior, only the build requirements. Full changelog: Isaac Freund (4): build: bump version to 0.3.3-dev ci: cleanup messy tar invocations build: update to Zig 0.13.0 build: bump version to 0.3.3
river 0.3.2 This release updates the required Zig version to 0.12. It also switches from using git submodules for dependency management to using the Zig package manager. Distro packagers should read the new Zig package manager section in PACKAGING.md for tips on how to handle this change. Full changelog: Isaac Freund (6): build: bump version to 0.3.2-dev build: update to Zig 0.12 build: add -Dno-llvm build option build: switch to the Zig package manager ci: drop FreeBSD CI for now build: bump version to 0.3.2
river 0.3.1 This release fixes a number of bugs. Thank you to everyone who has reported bugs and contributed fixes! In addition, input-method-v2 popups are now supported. They were missing from the initial protocol implementation in river 0.3.0. Thank you to @leviathanion for their work on this feature! Full changelog: Alex Mirrlees-Black (3): input: prevent duplicate input configs input: fix scroll-factor resetting if unspecified input: change ScrollFactor and MapToOutput to align with other options Isaac Freund (12): build: bump version to 0.3.1-dev XdgToplevel: don't update geometry if configure inflight XdgToplevel: update clip on geometry x/y change Cursor: don't hide while pointer constraint active Keyboard: fix redundant leave/enter on creation Server: fix filtering of newly created globals InputPopup: fix naming TextInput: ignore enable requests without focus InputPopup: fix minor issues, simplify code PointerConstraint: remove overly tight assert PointerConstraint: remove overly tight assert 2 bulid: bump version to 0.3.1 leviathan (1): input-method-v2: Implement popups ymcx (1): command/swap: fix cursor warp on focus change
river 0.3.0 This one's been in the pipeline for quite a while, it's been over a year since 0.2.0 was released and river has seen significant improvements since then. The past few months I've done my best to fix as many bugs as possible but a non-bugfix release always entails new code reaching a lot of people with diverse setups. If you find a bug in river please [open an issue](https://codeberg.org/river/river/issues/new/choose). Here's a summary of the important changes since river 0.2. New features: - Better rendering performance due to the [new wlroots rendering API](https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3631) and [gles2 renderer improvements](https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4135). - Finely-grained damage tracking leveraging the wlroots scene graph API. - Interactive resize of windows with the cursor from all edges/corners. - Basic tablet input support - Only the tablet-v2 protocol is is supported, no pointer emulation is done. - Drawing with a tablet tool works in inkscape, libreoffice, etc. - Tablet pad input devices are not yet supported, tracking issue: https://codeberg.org/river/river/issues/1021 - Rules system to apply settings to windows with a matching app-id/title. See `rule-add` in the `riverctl(1)` man page. The following rule types are added in this release: - float/no-float - ssd/csd - fullscreen/no-fullscreen - tags - output - position - dimensions - New `-current-tags` flag for `send-to-output` - New `-no-xwayland` flag for starting river with xwayland disabled even if built with support. - New `above`, `below` and `after <N>` attach modes plus the ability to configure attach mode per output with the new `output-attach-mode` riverctl command. - New `-skip-floating` flag for `focus-view` - New `scroll-factor` input configuration option - The `input-method-v2` and `text-input-v3` protocols are supported, with the exception of input-method popups. - The `presentation-time` protocol is supported. - The `fractional-scale-v1` protocol is supported. - The `cursor-shape-v1` protocol is supported. - The `xdg-shell` protocol version 5 is supported, up from version 2. Breaking changes compared to 0.2: - River now honors the client-side vs server-side decoration wishes of clients by default instead of attempting to force server-side decorations everywhere. To approximate the old behavior the command `riverctl rule-add ssd` may be used. - The `float-filter-add` and `csd-filter-add` riverctl commands have been removed, use `rule-add` instead and see the `riverctl(1)` man page for documentation. - The `attach-mode` riverctl command is deprecated and currently aliased to the new `default-attach-mode` command. The alias may be removed in the future. - Rendering order has changed slightly and and is now based off of focus order instead of window management stack order. - Pointer constraints have been reimplemented and the new implementation does less automatic warping of the cursor. Packaging changes: - wlroots 0.17.2 is required. - The official upstream river repository has moved to https://codeberg.org/river/river Community: - River has adopted a [Code of Conduct](https://codeberg.org/river/river/src/branch/master/CODE_OF_CONDUCT.md) Thank you to everyone who has contributed code and bug reports to river! River would not be where it is today without you. Thanks as well to everyone who has donated to me in support of river's development, your support means a lot to me. If my work on river adds value to your life and you'd like to support me financially you can find donation information [here](https://isaacfreund.com/donate/). Full changelog: Alexander Courtis (1): wlr-output-management: apply adaptive sync state Doclic (2): river: make RuleList return deleted items river: add outputs rule Hugo Machet (9): ci: Use meson setup command View: fix pointer comparison in notifyTitle() completions: Rewrite zsh completions/zsh: Fix incomplete input names river: add -no-xwayland cli flag InputConfig: Implement disable while trackpointing example/init: Replace light with brightnessctl completions: Add missing completions mailmap: map Hugo's old emails to new one Isaac Freund (250): build: bump version to 0.3.0-dev rivertile: fix code to disallow 0 main count session-lock: wait for present before locking session-lock: fix assertion failure due to race session-lock: fix assertion failure on abnormal client behavior render: fix rounding for fractional scaling deps: update to Zig 0.10 flags: further cleanup after Zig 0.10 deps: update zig-wayland to fix build on aarch64 Seat: rework Xwayland Override Redirect focus command/layout: fix a memory leak session-lock: properly handle disabled outputs idle-inhibit: fix use-after-free wlr-output-management: leverage new wlroots APIs session-lock: fix assertion failure on hot-plug while locked wlr-output-management: fix bug due to zig miscompilation docs: fix typos in riverctl man page docs: remove repology badge from readme Seat: guard setFocusRaw() usage while locked deps: update to latest zig-wayland/zig-wlroots deps: update to latest zig-wayland/zig-wlroots Keyboard: fix keyboard-layout mapping crash pointer-constraints: remove protocol render: remove damage tracking wlr-foreign-toplevel-management: remove protocol render: use wlr_scene to render views Cursor: remove surfaceAt() session-lock: use the scene graph Output: use separate scene trees for layers View: implement borders with scene graph Xwayland: create scene tree View: remove dead code LayerSurface: render using the scene graph XdgPopup: reimplement using the scene graph xdg-shell: implement version 5 DragIcon: render using the scene graph Xwayland: render using the scene graph View: use saved surface trees for transactions river: rework core data structures & transactions OutputStatus: rework implementation LayerSurface: fix use-after-free on destroy river: fix various fullscreen related bugs csd-filter-add/remove: add missing applyPending() Root: centralize focus(null) calls in applyPending() Output: inline renderOutput function session-lock: fix race with multiple outputs Root: fix more fullscreen bugs View: move borders state to State struct View: clamp to output on exiting float/fullscreen Root: fix use of view.current before update Output: fix background of transformed outputs View: only send configures through transactions View: fix frame perfection on unmap river: render floating views above the layout View: handle destroy during inflight layout demand Xwayland: fix has_fixed_size heuristic for floating XdgToplevel: fix size_changed check on commit Root: keep all fullscreen views the correct size Xwayland: hide override redirect windows if locked deps: update zig-wlroots to fix Xwayland crash Cursor: allow resizing from all edges xdg-shell: honor client move/resize requests View: rework configure abstraction Cursor: store offset and warp cursor during move river: fix a few leaks river: clean up some uneeded TODOs SceneNodeData: allow access from wlr_surfaces Server: remove headless backend presentation-time: support protocol Cursor: use pending position to warp during move Seat: use the grab aware API to clear focus pointer-constraints: implement protocol Xwayland: only raise views if activated wlr-foreign-toplevel-management: implement protocol river: improve comments on pending/inflight/current Seat: fix potential assertion failure layer-shell: apply exclusive zones in separate pass Xwayland: eliminate unneeded user data usage XdgToplevel: clean up wlr_surface data on destroy river-status: only send layout name if changed example/init: Fix confusing comments xdg-shell: determine tiled state by float state View: add `none` impl tag for better safety checks xdg-decoration: clean up implementation river: add rules system docs: fix typo in riverctl man page example/init: update for rules system doc: fix typo in riverctl man page Output: reinitialize output_status, cleanup Root: remove incorrect assertions in addOutput() Root: separate fallback list to handle 0 outputs Cursor: fix warp on output change with no views XdgToplevel: ensure view dimensions match geometry Cursor: lock to current geometry during move/resize Cursor: apply x/y change during resize on commit build: work around zig 0.10.0 bug to fix CI LayerSurface: handle focus when switching outputs LayerSurface: fix surfaces on multiple outputs at once session-lock: fix assertion failures and clean up XdgToplevel: store scene node in wlr_surface data river-layout: Remove incorrect assertion build: update to Zig 0.11.0 View: clean up after Zig update Cursor: use total delta for resize calculation docs: explain unknown info in output identifiers docs: update PACKAGING.md for Zig 0.11 DragIcon: set position on creation rivertile: eliminate an @intCast() Cursor: use inflight_mode as needed in updateState() XdgToplevel: tweak fullscreen state policy pointer-constraints: fix assertion failure rules: rename "tag" action to "tags" xdg-toplevel: ignore redundant move/resize requests river: remove dead code View: handle map while no outputs are available Cursor: clamp cursor movement to resize bounds Cursor: fix high polling rate resize regression session-lock: fix pointer focus handling on map build: update to wlroots 0.17 SceneNodeData: fix fromNode() Output: fix regression of initial mode logic Root: fix faulty assertion, cleanup Output: fix initial commit for wayland backend ci: fix arch and alpine build: fix comment on scanner.generate() versions deps: update to lastest zig-wlroots gamma-control: track wlroots 0.17 changes output-management: fix output config application output-management: work around wlroots crash build: require at least wlroots 0.17.1 TextInput: remove pending_focused_surface TextInput: handle multiple text inputs correctly TextInput/InputRelay: style nits TextInput: fix consecutive enable requests Keyboard: clarify keypress routing logic XdgToplevel: fix frame perfection on unmap river: drop support for wl_drm linux-dmabuf: send better per-surface feedback xdg-activation: fix race with transaction system Cursor: clean up cursor theme loading Keyboard: delete some uneeded code Output: fix possible crash on destroy river: re-add wl_drm support for now Keyboard: fix mapping XF86ScreenSaver Seat: fix potential crash in handleMapping() Root: remove unneeded fallback.inflight lists Root: fix stack order on restore from 0 outputs river: log version during startup Keyboard: check translated keysyms for mappings Keyboard: don't send enter before keymap event river: fix -log-level filtering Root: use Output.PendingState for fallback attach-mode: code/documentation style tweaks xdg-toplevel: handle destroy before xdg-decoration command/zoom: always warp cursor if configured View: clip scene tree to output XdgToplevel: handle configure timeout gracefully View: don't clip off CSD shadow and the like Keyboard: style/naming nits and comment tweaks Keyboard: ignore >32 simultaneous key presses command/input: cleanup memory manangement a bit command/map: remove references to locked mods Root: trival code cleanup in deactivateOutput() InputConfig: simplify libinput API usage XdgToplevel: handle timed out state in configure() Root: fix crash on output disable Root: fix crash on deinit() rules: fix assertion failure XdgToplevel: work around buggy clients InputConfig: code style cleanups output-management: fix output destroy handling Root: fix auto-layout output coordinates linux-dmabuf: disable per-surface feedback deps: update to latest zig-wayland and zig-wlroots river: only expose xwayland_shell_v1 to Xwayland mailmap: map Isaac's old email to the new one build: enable frame pointers in release safe View: clean up attach-mode code, add assert Root: reduce transaction timeout to 50ms View: remove faulty assertion tablet-v2: implement tablet tool support build: require wlroots version 0.17.2 deps: switch to codeberg upstreams, update View: improve transaction timeout handling View: fix SSD desync on consecutive timeouts Server: clean up initialization Layout: eliminate "self" naming convention Root: eliminate "self" naming convention Seat: eliminate "self" naming convention Output: eliminate "self" naming convention View: eliminate "self" naming convention Cursor: eliminate "self" naming convention XdgToplevel: eliminate "self" naming convention XwaylandView: eliminate "self" naming convention Mapping: eliminate "self" naming convention XwaylandOverrideRedirect: eliminate "self" naming convention InputManager: eliminate "self" naming convention Keyboard: eliminate "self" naming convention Config: eliminate "self" naming convention LayoutManager: eliminate "self" naming convention idle-inhibit: fix naming, eliminate "self" naming convention InputConfig: eliminate "self" naming convention SeatStatus: eliminate "self" naming convention StatusManager: eliminate "self" naming convention PointerMapping: eliminate "self" naming convention LayoutDemand: eliminate "self" naming convention Mode: eliminate "self" naming convention Control: eliminate "self" naming convention SwitchMapping: eliminate "self" naming convention Switch: eliminate "self" naming convention Vector: eliminate "self" naming convention RuleList: eliminate "self" naming convention Server: remove all listeners on deinit() pointer-gestures: move to input manager security-context: implement protocol XdgToplevel: validate move/resize request serial touch: handle cancel event, fix assertion failure deps: update zig-wayland for a minor cleanup Root: increase transaction timeout to 100ms View: fix potential assertion failure on destroy layer-shell: crop surfaces to output bounds docs: migrate to codeberg command/map: add note about upstream xkbcommon fix codeberg: add bug report issue template codeberg: maybe fix issue template codeberg: maybe fix issue template take 2 docs: update wiki url docs: update release urls for codeberg migration logo: add an official river logo docs: update README stability disclaimer docs: fix typo in previous commit ci: migrate to codeberg View: always check if current.output is null logo: use adaptive color/no background for readme View: fix assertion failure if focused while destroying Output: fix possible assertion failure on enable Root: fix leak on view destroy View: add more assertions around destruction river: raise the file descriptor limit docs: add Code of Conduct docs: fix broken link in coc docs: fix another broken link in the coc logo: make readme logo bigger on small displays docs: redefine Code of Conduct scope docs: update URL in man pages layer-surface: close if exclusive zones too large input: minor fixes and cleanups for scroll-factor docs: freshen up readme with text from website docs: remove website url at top of readme build: bump version to 0.3.0 István Donkó (2): keyboard: add the ability to load layout from file input: add scroll-factor configuration Leon Henrik Plickat (16): completions: add keyboard-layout riverctl: Add error messages for failed connections river: allow settings child type of RuleList river: change order of colums in list-rules command river: add tags rule river: fix crash when trying to add tag rule without tag argument river: focus-view and swap by spatial direction river: fix spatial direction focusing / swapping Keyboard: Add new keyboards to groups if matched keyboard-groups: use globber for identifier matching refactor input configuration river: fix names of input config settings command/input: support globs View: restore to previous output on reconnect TabletTool: use "pencil" cursor shape command/focus-view: add -skip-floating LordMZTE (2): river: clear up docs on -c parameter command/input: add map-to-output MaxVerevkin (4): render: premultiply alpha for user-provided colors river: Implement fractional_scale_v1 Cursor: actually set xcursor_name river: Implement cursor_shape_v1 Orfeas (1): attach-mode: implement after <N> Pablo Ovelleiro Corral (1): command/send-to-output: add -current-tags flag Peter Kaplan (3): command/attach-modes: above and below options completions/zsh: Update attach-modes View: Add attachRelative function Sage Hane (1): editorconfig: fix typo Väinö Mäkelä (1): XdgToplevel: keep wlroots updated on view sizes Wouter van Heijst (1): Cursor: Focus follows cursor focuses empty outputs Yutaro Ohno (1): README: update required wlroots version to 0.17.2 Zakariyya Von Forslun (2): Seat: keep parent Xwayland view of a focused OR surface activated Cursor: fix incorrect lock manager state assertion alex (1): river: fix bug in snap down / right polykernel (2): river: add position and dimensions rules river: add fullscreen rule praschke (5): river: Implement input_method and text_input input-method: setKeyboard already sends modifiers input-method: send text-input enter event after all leave events input-method: check that the input method is active when committing input-method: address nits tiosgz (19): Server: remove debug leftover river: update some comments Root: rename field outputs to active_outputs Root: make 'fallback output empty' assertion stricter Root: migrate {all,active}_outputs to wl.list Root: fix inflight_layout_demands counting Cursor: keep focus_follows_cursor_target updated riverctl: rule-{add,del}: reorder parameters completions/fish: partial overhaul completions/bash: complete input devices, fix typos editorconfig: reflect state of bash completion riverctl(1): add a section on terminology Keyboard: fix key handling/eating logic Keyboard: eat key before running mapping KeycodeSet: move to Keyboard.zig Keyboard: rework key processing semantic deps: update zig-wlroots Keyboard: don't crash when coming from a different tty Keyboard: ignore multiple presses of a key
river 0.2.6 Well, I managed make a typo in during the Zig upgrade for 0.2.5 which broke input device identifiers. This release fixes that. Hopefully that's the only regression I managed to introduce from 0.2.4 but if something else come up release numbers are luckily pretty cheap :) Full changelog: Isaac Freund (3): build: bump version to 0.2.6-dev InputDevice: fix identifier generation build: bump version to 0.2.6
river 0.2.5 This release makes no functional changes since 0.2.4. The only difference is that it requires Zig 0.11 rather than Zig 0.10. I had originally planned for 0.3.0 to be the next release and to update the zig version required then, but 0.3.0 is taking longer than expect to wrap up at my quality standards. Distro maintainers requested a Zig 0.11 compatible release to ease packaging until 0.3.0 is done. Full changelog: Isaac Freund (3): build: bump version to 0.2.5-dev build: update to Zig 0.11.0 build: bump version to 0.2.5