github riverwm/river v0.2.0
river 0.2.0

latest releases: v0.3.0, v0.2.6, v0.2.5...
16 months ago

river 0.2.0

This release brings many new features and improvements, as well as a few
small breaking changes since river 0.1. Many thanks to everyone who
contributed and happy New Year!

New features:

  • Touch input is supported for clients that accept touch input. No
    pointer emulation is implemented yet.
  • ext-session-lock-v1 is supported. This is a more robust protocol for
    screenlocking that I developed earlier this year. See this blog
    post
    for more information.
  • ext-idle-notify-v1 is supported. This replaces the KDE idle
    protocol, support for which has been removed.
  • riverctl focus-output and riverctl send-to-output may target an
    output by name.
  • riverctl map has a new -layout flag which may be used to map keys
    independent of the currently active keyboard layout.
  • riverctl keyboard-layout allows setting the keyboard layout and xkb
    options at runtime.
  • riverctl map-switch allows running a command when e.g. a laptop
    lid is closed.
  • riverctl map-pointer may run arbitrary commands.
  • riverctl focus-follows-cursor has a new always mode.
  • riverctl set-cursor-warp has a new on-focus-change mode.
  • The cursor may be (automatically) hidden with the new
    riverctl hide-cursor command.
  • Keyboard groups are now supported with the new
    riverctl keyboard-group-create and related commands.
  • wlr-output-management-unstable-v1 version 4 is now implemented,
    which means that adaptive sync or VRR may be enabled using a suitable
    client.
  • wp-single-pixel-buffer-v1 is supported.
  • The river-status-unstable-v1 protocol has been extended to expose
    the current mode and layout name to clients such as status bars.
  • The river-layout-v3 protocol has been extended to expose the
    currently active tags when a command is sent to the layout generator
    client.

Breaking changes compared to 0.1:

  • Input device names are now prefixed with the device type 422cd3e.
  • The riverctl spawn-tagmask command applies globally 39104ae.
  • Support for the input-inhibit protocol has been removed 78a46c3.
    Lock screens should now use ext-session-lock-v1
  • Support for the org_kde_kwin_idle protocol has been removed
    6ac3928. The ext-idle-notify-v1 protocol should be used instead.

Packaging changes:

  • wlroots 0.16 is required as a build dependency instead of 0.15.
Full changelog
Aiz (1):
      river-status: fix typo in layout_name_clear description

Alexander Courtis (1):
      map-pointer: allow running arbitrary commands

Andrea Feletto (1):
      river: support wp-single-pixel-buffer-v1

Campbell Barton (1):
      contrib: mention default-layout command in FAQ

Daniel Eklöf (3):
      completions: zsh: new completions for the ‘hide-cursor’ command
      completions: bash: new completions for the ‘hide-cursor’ command
      completions: fish: new completions for the ‘hide-cursor’ command

Duncan Overbruck (1):
      Cursor: Add a hide-cursor command

Hugo Machet (10):
      docs: update zig version required in readme
      rivertile: Use saturating addition
      command/map: Warn users on keybinding overwritten
      Xwayland: Handle minimize request
      ci: Add sourcehut builds
      Mode: Use ArrayListUnmanaged to save memory
      code: Cleanup use of std library for consistancy
      command: Remove allocator arg
      ci: Update to zig 0.9.1
      ci: Fix builds manifests

Isaac Freund (95):
      build: bump version to 0.2.0-dev
      docs: clarify description of dependencies
      docs: remove reference to /etc/river/init
      Cursor: fix pointer drags with focus-follows-cursor
      Cursor: add workaround in pointer drag termination
      layer-shell: tighten up handling of large margins
      common/flags: make argFlag() return a slice
      river: update to wlroots 0.15.0
      Cursor: dedup XcursorManager.setCursorImage() calls
      layer-shell: fix regression from wlroots 0.15 update
      ci: update for wlroots 0.15.0
      Cursor: properly handle clients setting the cursor image
      Subsurface: add commit listener on create if mapped
      river: remove wlroots 0.14 workarounds
      docs: soften the README disclaimer a bit
      build: update to zig version 0.9.0
      Cursor: fix down mode motion events for subsurfaces
      Xwayland: move window to top of X11 stack on focus
      Seat: do a better job of cleaning up listeners
      Cursor: remove minor outdated workaround
      XdgPopup: fix unconstrain from box coords
      command/map: add Alt/Super as aliases for Mod1/Mod4
      example/init: Use Alt/Super aliases
      docs: fix typo in river(1) man page
      XdgPopup: remove commit listener on destroy if mapped
      layer-shell: center when opposing anchors are set
      wlr-output-management: simplify implementation
      ci: run on 0.1.x branch
      code: relicense to GPL-3.0-only
      View: fix/simplify logic in applyPending()
      View: use last set fullscreen state in applyPending()
      rivertile: properly validate -main-ratio flag
      rivertile: use u31s to remove most @intCast()s
      DragIcon: Properly initialize if already mapped
      doc: Add additional style rule to CONTRIBUTING.md
      layer-shell: allow surfaces larger than the output
      layer-shell: fix overflow with large bottom margin
      Cursor: Don't passthrough() on update if hidden
      ci: make wget output non verbose
      deps: update to latest zig-wayland
      layer-shell: fix overflow if desired size exceeds output bounds
      build: follow semantic versioning for -dev versions
      Output: remove overzealous assert
      build: add -Dstrip and -Dpie build options
      docs: create PACKAGING.md
      docs: expand on -Dcpu in PACKAGING.md
      docs: add note on example init file to PACKAGING.md
      Xwayland: handle override redirect state changes
      View: refactor initialization
      ci: fix xbps invocation
      Xwayland: Rename XwaylandUnmanaged to XwaylandOverrideRedirect
      river-status: add mode event to seat status
      river-status: only send mode event if client bound version 3
      Cursor: revive 'always' focus-follows-cursor mode
      build: don't scan xdg-output
      example/init: don't use exec
      InputDevice: move to separate file
      InputDevice: use "switch" in input device names
      Seat: refactor InputDevice handling
      Cursor: implement initial touch support
      deps: update to latest zig-wlroots
      Xwayland: fix View.fromWlrSurface for OR surfaces
      deps: update to latest zig-wlroots
      ci: explicitly install libevdev
      Seat: send enter event on keyboard device creation
      river: fix SIGPIPE handling, cleanup fork/execve
      layout: only arrange on user command if layout is active
      layer-shell: start transaction on map
      river: refactor keyboard groups implementation
      river: update to wlroots 0.16
      ci: update to wlroots 0.16.0 and wayland 1.21.0
      ci: remove Void Linux CI
      input-inhibit: remove support for protocol
      ext-session-lock: implement protocol
      session-lock: add basic logging
      session-lock: send wl_pointer.enter immediately
      deps: update to latest zig-wlroots
      example/init: run rivertile in background
      map-pointer: minor fixes and cleanups
      river-layout: fix version of layout_name events
      View: honor fullscreen requests before map
      build: handle wlroots built without xwayland support
      idle: support ext-idle-notify-v1, drop KDE protocol
      flags: rewrite to allow [:0]const u8 arguments
      command/keyboard-layout: use flags.zig, cleanup
      docs: improve keyboard layout documentation
      command/map: use flags.zig, cleanup
      flags: automatically prepend '-'
      session-lock: fix potential race
      Config: use a single xkb keymap for all keyboards
      touch: support drag and drop
      layout: fix size of CSD views
      river-control: update zig-wayland to fix leak
      command/spawn-tagmask: apply globally
      build: bump to version 0.2.0

Jackson Abascal (1):
      input: fix typo in natural-scroll

Jan Evers (1):
      example/init: fix typos

Justin Wood (1):
      docs: Fix typo in readme

Leon Henrik Plickat (13):
      Cursor: improve output focus handling on button press
      Cursor: update image if needed on xcursor theme change
      input: keep applying input configs after first match
      input: Improve input device name format
      rivertile: Use saturating arithmetics to prevent over-/underflow when using user defined values
      river: error out if default init is not executable
      river: keep floating views within bounds when sending to output
      river-layout: add user_command_tags event
      river: advertise correct version of layout protocol
      river: add keyboard groups
      river-status: expose current layout name
      river: add keyboard-layout command
      river: fix resize command

Leonardo Gibrowski Faé (1):
      docs: fix typo in river(1) man page

MaxVerevkin (2):
      river-status: correctly advertise version 4
      river-control: mark callback events as destructors

Nick Hastings (1):
      contrib: add desktop file

Peter Kaplan (4):
      input: add map-switch/unmap-switch commands
      command/hide-cursor: fix crash on missing option
      command/map: layout-pinned mappings
      Mapping: Do not translate keys with xkb

Wannes De Meyer (1):
      docs: fix wlroots link in readme

Zakariyya Von Forslun (5):
      xwayland-unmanaged: handle focus on map/cursor button
      cursor: fix Xwayland unmanaged surfaceAt coordinates
      Xwayland: add handling of override redirect listeners
      Cursor: fix focus for Xwayland override redirect windows
      Xwayland: restrict OR focus changes based on ICCCM input model

dfangx (1):
      idle-inhibit: implement protocol

pmkap (1):
      command: allow targeting outputs by name

shironeko (3):
      river: ignore SIGPIPE to avoid weird exits
      Cursor: add on-focus-change option
      Rework focus-follows-cursor to work with warp

taupiqueur (1):
      docs: fix typo in readme

tiosgz (9):
      view: stop enforcing custom minimum size
      Switch: register destroy listener
      Keyboard: eat key release event for mappings
      Seat: avoid leaking eaten keys to client on focus
      docs: better connect 'index' to -layout in riverctl(1)
      Output: retry other modes if preferred fails
      XdgPopup: fix unconstrain rect with layer surfaces
      LayoutDemand: handle too many view dimensions correctly
      session-lock: handle output unplugging better

Don't miss a new river release

NewReleases is sending notifications on new releases.