![]() |
![]()
| ![]() |
![]()
NAMEriverctl - command-line interface for controlling river SYNOPSISriverctl [options] command [command specific arguments] DESCRIPTIONriverctl is a command-line utility used to control and configure river over the Wayland protocol. OPTIONS-h Print a help message and exit.
-version Print the version number and exit.
TERMINOLOGYThis manual uses terms that some may find confusing, coming mostly from their usage among other Wayland projects. The compositor, display server, Wayland server etc. are ways to refer to river itself. A view (or toplevel) is what most call a window. An output is a synonym for a screen or monitor. Tags are river's way of dividing views of an output into groups (not necessarily disjunct), an analogy to workspaces. COMMANDSACTIONSclose Close the focused view.
exit Exit the compositor, terminating the Wayland
session.
focus-output next|previous|up|right|down|left|name Focus the next or previous output, the closest output in
any direction or an output by name.
focus-view [-skip-floating] next|previous|up|down|left|right Focus the next or previous view in the stack or the
closest view in any direction.
move up|down|left|right delta Move the focused view in the specified direction by
delta logical pixels. The view will be set to floating.
resize horizontal|vertical delta Resize the focused view along the given axis by
delta logical pixels. The view will be set to floating.
snap up|down|left|right Snap the focused view to the specified screen edge. The
view will be set to floating.
send-to-output [-current-tags] next|previous|up|right|down|left|name Send the focused view to the next or previous output, the
closest output in any direction or to an output by name.
spawn shell_command Run shell_command using `/bin/sh -c
shell_command`. Note that spawn only takes a single argument. To
spawn a command taking multiple arguments, wrapping the command in quotes is
recommended.
swap next|previous|up|down|left|right Swap the focused view with the next or previous
non-floating view in the stack or the closest non-floating view in any
direction.
toggle-float Toggle the floating state of the focused view.
toggle-fullscreen Toggle the fullscreen state of the focused view.
zoom Bump the focused view to the top of the layout stack. If
the top view in the stack is already focused, bump the second view.
default-layout namespace Set the layout namespace to be used by all outputs by
default.
output-layout namespace Set the layout namespace of currently focused output,
overriding the value set with default-layout if any.
send-layout-cmd namespace command Send command to the layout generator on the
currently focused output with the given namespace, if any. What
commands a layout generator understands depends on the layout generator. For
rivertile, see the documentation in the rivertile(1) man page.
TAG MANAGEMENTTags are similar to workspaces but more flexible. You can assign views multiple tags and focus multiple tags simultaneously. Bitfields are used to describe sets of tags when interfacing with river. As such, the following commands take a normal base 10 number as their argument but the semantics are best understood in binary. The binary number 000000001 represents a set containing only tag 1 while 100001101 represents a set containing tags 1, 3, 4, and 9. When a view spawns it is assigned the currently focused tags of the output. At least one tag must always be focused and each view must be assigned at least one tag. Operations that would violate either of these requirements are ignored by river. set-focused-tags tags Show views with tags corresponding to the set bits of
tags on the currently focused output.
set-view-tags tags Assign the currently focused view the tags corresponding
to the set bits of tags.
toggle-focused-tags tags Toggle visibility of views with tags corresponding to the
set bits of tags on the currently focused output.
toggle-view-tags tags Toggle the tags of the currently focused view
corresponding to the set bits of tags.
spawn-tagmask tagmask Set a tagmask to filter the tags assigned to newly
spawned views. This mask will be applied to the tags of new views with a
bitwise and. If, for example, the tags 000011111 are focused and the spawn
tagmask is 111110001, a new view will be assigned the tags 000010001.
If no tags would remain after filtering, the tagmask is ignored.
focus-previous-tags Sets tags to their previous value on the currently
focused output, allowing jumping back and forth between 2 tag setups.
send-to-previous-tags Assign the currently focused view the previous tags of
the currently focused output.
MAPPINGSMappings are modal in river. Each mapping is associated with a mode and is only active while in that mode. There are two special modes: "normal" and "locked". The normal mode is the initial mode on startup. The locked mode is automatically entered while the session is locked (e.g. due to a screenlocker). It cannot be entered or exited manually. The following modifiers are available for use in mappings:
Alt and Super are aliases for Mod1 and Mod4 respectively. None allows creating a mapping without modifiers. Keys are specified by their XKB keysym name. See /usr/local/include/xkbcommon/xkbcommon-keysyms.h for the complete list. Mouse buttons are specified by Linux input event code names. The most commonly used values are:
A complete list may be found in /usr/local/include/linux/input-event-codes.h declare-mode name Create a new mode called name.
enter-mode name Switch to given mode if it exists.
map [-release|-repeat|-layout index] mode modifiers key command Run command when key is pressed while
modifiers are held down and in the specified mode.
map-pointer mode modifiers button action|command Move or resize views or run command when
button and modifiers are held down while in the specified
mode. The view under the cursor will be focused.
map-switch mode lid|tablet state command Run command when river receives a certain switch
event.
unmap [-release] mode modifiers key Remove the mapping defined by the arguments:
unmap-pointer mode modifiers button Remove the pointer mapping defined by the arguments:
unmap-switch mode lid|tablet state Remove the switch mapping defined by the arguments:
RULESRules match the app-id and title of views against a glob pattern. A glob is a string that may optionally have an * at the beginning and/or end. An * in a glob matches zero or more arbitrary characters in the app-id or title. For example, abc is matched by a*, *a*, *b*, *c, abc, and * but not matched by *a, b*, *b, c*, or ab. Note that * matches everything while ** and the empty string are invalid. rule-add [-app-id glob|-title glob] action [arguments] Add a rule that applies an action to views with
app-id and title matched by the respective glob. Omitting
-app-id or -title is equivalent to passing -app-id
* or -title *. Some actions require one or more
arguments.
The supported action types are:
Both float and no-float rules are added to the same list, which means that adding a no-float rule with the same arguments as a float rule will overwrite it. The same holds for ssd and csd, fullscreen and no-fullscreen, tearing and no-tearing rules. If multiple rules in a list match a given view the most specific rule will be applied. For example with the following rules app-id title action foo bar ssd foo * csd * bar csd * baz ssd If a view is not matched by any rule, river will respect the csd/ssd wishes of the client and may start the view floating based on simple heuristics intended to catch popup-like views. If a view is started fullscreen or is not floating, then position and dimensions rules will have no effect A view must be matched by a float rule in order for them to take effect. rule-del [-app-id glob|-title glob] action Delete a rule created using rule-add with the
given arguments.
list-rules float|ssd|tags|position|dimensions|fullscreen Print the specified rule list. The output is ordered from
most specific to least specific, the same order in which views are checked
against when searching for a match. Only the first matching rule in the list
has an effect on a given view.
CONFIGURATIONdefault-attach-mode top|bottom|above|below|after <N> Set the attach mode to be used by all outputs by default.
Possible values:
Note that the deprecated attach-mode command is aliased to default-attach-mode for backwards compatibility. output-attach-mode top|bottom|above|below|after <N> Set the attach mode of the currently focused output,
overriding the value of default-attach-mode if any.
allow-tearing enabled|disabled Allow fullscreen views to tear if requested by the view.
See also the tearing rule to force enable tearing for specific
views.
background-color 0xRRGGBB|0xRRGGBBAA Set the background color.
border-color-focused 0xRRGGBB|0xRRGGBBAA Set the border color of focused views.
border-color-unfocused 0xRRGGBB|0xRRGGBBAA Set the border color of unfocused views.
border-color-urgent 0xRRGGBB|0xRRGGBBAA Set the border color of urgent views.
border-width pixels Set the border width to pixels.
focus-follows-cursor disabled|normal|always There are three available modes:
If the view to be focused is on an output that does not have focus, focus is switched to that output. hide-cursor timeout timeout Hide the cursor if it wasn't moved in the last
timeout milliseconds until it is moved again. The default value is 0,
which disables automatically hiding the cursor. Show the cursor again on any
movement.
hide-cursor when-typing enabled|disabled Hide the cursor when pressing any non-modifier key. Show
the cursor again on any movement.
set-cursor-warp disabled|on-output-change|on-focus-change Set the cursor warp mode. There are two available modes:
set-repeat rate delay Set the keyboard repeat rate to rate key repeats
per second and repeat delay to delay milliseconds. The default is a
rate of 25 repeats per second and a delay of 600ms.
xcursor-theme theme_name [size] Set the xcursor theme to theme_name and optionally
set the size. The theme of the default seat determines the default for
Xwayland and is made available through the XCURSOR_THEME and
XCURSOR_SIZE environment variables.
INPUT CONFIGURATIONlist-inputs List all input devices.
list-input-configs List all input configurations.
keyboard-layout [-rules rules] [-model model] [-variant variant] [-options options] layout Set the XKB layout for all keyboards. Defaults from
libxkbcommon are used for everything left unspecified. Note that layout
may be a comma separated list of layouts (e.g. "us,de") which may be
switched between using various key combinations configured through the options
argument (e.g. -options "grp:ctrl_space_toggle"). See
xkeyboard-config(7) for possible values and more information.
keyboard-layout-file path Set the XKB layout for all keyboards from an XKB keymap
file at the provided path. Documentation for the XKB keymap file format can be
found at the following URL:
https://xkbcommon.org/doc/current/keymap-text-format-v1.html
The input command can be used to create a configuration rule for an input device identified by its name. The name of an input device consists of its type, its decimal vendor id, its decimal product id and finally its self-advertised name, separated by -. Simple globbing patterns are supported, see the rules section for further information on globs. A list of all device properties that can be configured may be found below. However note that not every input device supports every property. input name events enabled|disabled|disabled-on-external-mouse Configure whether the input devices events will be used
by river.
input name accel-profile none|flat|adaptive Set the pointer acceleration profile of the input
device.
input name pointer-accel factor Set the pointer acceleration factor of the input device.
Needs a float between -1.0 and 1.0.
input name click-method none|button-areas|clickfinger Set the click method of the input device.
input name drag enabled|disabled Enable or disable the tap-and-drag functionality of the
input device.
input name drag-lock enabled|disabled Enable or disable the drag lock functionality of the
input device.
input name disable-while-typing enabled|disabled Enable or disable the disable-while-typing functionality
of the input device.
input name disable-while-trackpointing enabled|disabled Enable or disable the disable-while-trackpointing
functionality of the input device.
input name middle-emulation enabled|disabled Enable or disable the middle click emulation
functionality of the input device.
input name natural-scroll enabled|disabled Enable or disable the natural scroll functionality of the
input device. If active, the scroll direction is inverted.
input name scroll-factor factor Set the scroll factor of the input device. Accepts a
postive value greater than 0. For example, a factor of 0.5 will make
scrolling twice as slow while a factor of 3 will make scrolling 3 times
as fast.
input name left-handed enabled|disabled Enable or disable the left handed mode of the input
device.
input name tap enabled|disabled Enable or disable the tap functionality of the input
device.
input name tap-button-map left-right-middle|left-middle-right Configure the button mapping for tapping.
input name scroll-method none|two-finger|edge|button Set the scroll method of the input device.
input name scroll-button button Set the scroll button of an input device. button
is the name of a Linux input event code.
input name scroll-button-lock enabled|disabled Enable or disable the scroll button lock functionality of
the input device. If active, the button does not need to be held down. One
press makes the button considered to be held down, and a second press releases
the button.
input name map-to-output output|disabled Maps the input to a given output. This is valid even if
the output isn't currently active and will lead to the device being mapped
once it is connected.
EXAMPLESBind Super+Return in normal mode to spawn a foot(1) terminal: riverctl map normal Mod4 Return spawn 'foot
--app-id=foobar'
Bind Super+Shift+J to swap the focused view with the next visible view: riverctl map normal Mod4+Shift J swap next
AUTHORSMaintained 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>. SEE ALSOriver(1), rivertile(1)
|