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
andriverctl 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 newalways
mode.riverctl set-cursor-warp
has a newon-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 useext-session-lock-v1
- Support for the
org_kde_kwin_idle
protocol has been removed
6ac3928. Theext-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