RIVER(1)
π RIVER(1) β the manual page, but make it make sense β¨
okay so real talk, you're looking at the General Commands Manual entry for river, and bestie, you're gonna want to sit down for this one because it's giving iconic π
π¦ NAME π¦
river β a non-monolithic Wayland compositor, and yes the "non-monolithic" part is the whole personality π
β¨ SYNOPSIS β¨
river [options]
that's it. that's the whole vibe check. optional flags, one binary, go off π
π DESCRIPTION π
So. river is a non-monolithic Wayland compositor, which lowkey means it does not shove the compositor and the window manager into one single program like some other projects do π nope, not here. Instead, you β yes you β can pick any window manager implementing the river-window-management-v1 protocol. main character energy, you choose your own adventure π
Which brings us to the important part, and I need you to hear me on this: river is not useful without a compatible window manager. fr fr. it's the compositor, it needs its wm bestie to actually do the window things π«Ά
There's a whole list of compatible window managers on the river wiki, go look:
https://codeberg.org/river/wiki/src/branch/main/pages/wm-list.md
π₯ OPTIONS π₯
-hβ prints a help message and then dips. classic. exits immediately βοΈ-versionβ prints the version number and exits. no cap, that's all it does π-cshell_command β overrides the default search paths for an init executable; instead,shell_commandgets run with/bin/sh -c. peek at the CONFIGURATION section below for the deets, iykyk π§-log-level [error|warning|info|debug]β sets the log level ofriver. At theerrorlog level, only errors are logged. At thedebuglog level, literally everything is logged, including verbose debug messages π (yes she's chatty, that's the point)-no-xwaylandβ disables Xwayland at runtime, even ifriverhas been built with support for it. turn it off, turn it all the way off π ββοΈ
π KEYBINDINGS π
These ones below are always active, no matter what:
Ctrl+Alt+F1βCtrl+Alt+F12β switch to VT 1-12 π₯οΈβ¨
β οΈ ok so heads up: window managers may add additional keybindings, but they cannot override these builtin keybindings. them's the rules, periodt π
πΈ CONFIGURATION πΈ
On startup, river will run an executable file at $XDG_CONFIG_HOME/river/init β but only if such an executable actually exists, okurrr? π If $XDG_CONFIG_HOME is not set, then ~/.config/river/init gets used instead. either way, she will find you π¦
Here's the cute part: that executable init file is run as a process group leader after river's Wayland server is initialized, but before entering the main loop. and on exit, river will send SIGTERM to this process group. clean up after yourself bestie π§Ή
Usually this executable is a shell script which starts the user's window manager plus any other long-running programs. for example, kanshi(1) could be started to manage output configuration π β that's it, that's the whole config story, surprisingly chill ngl
π AUTHORS π
Maintained by Isaac Freund <mail@isaacfreund.com>, who is assisted by open source contributors π«Ά. For more information about river's development, see:
https://isaacfreund.com/software/river
π also we literally cannot forget the fine print: this page is from2026-10-10and the source/version tag isRIVER(1)β so yeah, dated October 10, 2026, file it under "iconic", and go configure your compositor bestie ππβ¨
π¦ where this page comes from
- arch rolling: river 0.5.0-1 Β· 0BSD AND CC-BY-SA-4.0 AND GPL-3.0-only AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms