.\" Generated by scdoc 1.11.3 .\" Complete documentation for this program is not available as a GNU info page .ie \n(.g .ds Aq \(aq .el .ds Aq ' .nh .ad l .\" Begin generated content: .TH "RIVERCTL" "1" "2024-04-18" .PP .SH NAME .PP riverctl - command-line interface for controlling river .PP .SH SYNOPSIS .PP \fBriverctl\fR [\fIoptions\fR] \fIcommand\fR [\fIcommand specific arguments\fR] .PP .SH DESCRIPTION .PP \fBriverctl\fR is a command-line utility used to control and configure river over the Wayland protocol.\& .PP .SH OPTIONS .PP \fB-h\fR .RS 4 Print a help message and exit.\& .PP .RE \fB-version\fR .RS 4 Print the version number and exit.\& .PP .RE .SH TERMINOLOGY .PP This manual uses terms that some may find confusing, coming mostly from their usage among other Wayland projects.\& .PP The \fBcompositor\fR, display server, Wayland server etc.\& are ways to refer to river itself.\& .PP A \fBview\fR (or \fBtoplevel\fR) is what most call a window.\& .PP An \fBoutput\fR is a synonym for a screen or monitor.\& .PP \fBTags\fR are river'\&s way of dividing views of an output into groups (not necessarily disjunct), an analogy to workspaces.\& .PP .SH COMMANDS .PP .SS ACTIONS .PP \fBclose\fR .RS 4 Close the focused view.\& .PP .RE \fBexit\fR .RS 4 Exit the compositor, terminating the Wayland session.\& .PP .RE \fBfocus-output\fR \fBnext\fR|\fBprevious\fR|\fBup\fR|\fBright\fR|\fBdown\fR|\fBleft\fR|\fIname\fR .RS 4 Focus the next or previous output, the closest output in any direction or an output by name.\& .PP .RE \fBfocus-view\fR [\fB-skip-floating\fR] \fBnext\fR|\fBprevious\fR|\fBup\fR|\fBdown\fR|\fBleft\fR|\fBright\fR .RS 4 Focus the next or previous view in the stack or the closest view in any direction.\& .PP .PD 0 .IP \(bu 4 \fB-skip-floating\fR: Skip floating views, only focusing tiled ones.\& .PD .PP .RE \fBmove\fR \fBup\fR|\fBdown\fR|\fBleft\fR|\fBright\fR \fIdelta\fR .RS 4 Move the focused view in the specified direction by \fIdelta\fR logical pixels.\& The view will be set to floating.\& .PP .RE \fBresize\fR \fBhorizontal\fR|\fBvertical\fR \fIdelta\fR .RS 4 Resize the focused view along the given axis by \fIdelta\fR logical pixels.\& The view will be set to floating.\& .PP .RE \fBsnap\fR \fBup\fR|\fBdown\fR|\fBleft\fR|\fBright\fR .RS 4 Snap the focused view to the specified screen edge.\& The view will be set to floating.\& .PP .RE \fBsend-to-output\fR [\fB-current-tags\fR] \fBnext\fR|\fBprevious\fR|\fBup\fR|\fBright\fR|\fBdown\fR|\fBleft\fR|\fIname\fR .RS 4 Send the focused view to the next or previous output, the closest output in any direction or to an output by name.\& .PP .PD 0 .IP \(bu 4 \fB-current-tags\fR: Assign the currently focused tags of the destination output to the view.\& .PD .PP .RE \fBspawn\fR \fIshell_command\fR .RS 4 Run \fIshell_command\fR using `/bin/sh -c \fIshell_command\fR`.\& Note that \fBspawn\fR only takes a single argument.\& To spawn a command taking multiple arguments, wrapping the command in quotes is recommended.\& .PP .RE \fBswap\fR \fBnext\fR|\fBprevious\fR|\fBup\fR|\fBdown\fR|\fBleft\fR|\fBright\fR .RS 4 Swap the focused view with the next or previous non-floating view in the stack or the closest non-floating view in any direction.\& .PP .RE \fBtoggle-float\fR .RS 4 Toggle the floating state of the focused view.\& .PP .RE \fBtoggle-fullscreen\fR .RS 4 Toggle the fullscreen state of the focused view.\& .PP .RE \fBzoom\fR .RS 4 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.\& .PP .RE \fBdefault-layout\fR \fInamespace\fR .RS 4 Set the layout namespace to be used by all outputs by default.\& .PP .RE \fBoutput-layout\fR \fInamespace\fR .RS 4 Set the layout namespace of currently focused output, overriding the value set with \fBdefault-layout\fR if any.\& .PP .RE \fBsend-layout-cmd\fR \fInamespace\fR \fIcommand\fR .RS 4 Send \fIcommand\fR to the layout generator on the currently focused output with the given \fInamespace\fR, if any.\& What commands a layout generator understands depends on the layout generator.\& For rivertile, see the documentation in the \fBrivertile\fR(1) man page.\& .PP .RE .SS TAG MANAGEMENT .PP Tags 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.\& .PP When a view spawns it is assigned the currently focused tags of the output.\& .PP 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.\& .PP \fBset-focused-tags\fR \fItags\fR .RS 4 Show views with tags corresponding to the set bits of \fItags\fR on the currently focused output.\& .PP .RE \fBset-view-tags\fR \fItags\fR .RS 4 Assign the currently focused view the tags corresponding to the set bits of \fItags\fR.\& .PP .RE \fBtoggle-focused-tags\fR \fItags\fR .RS 4 Toggle visibility of views with tags corresponding to the set bits of \fItags\fR on the currently focused output.\& .PP .RE \fBtoggle-view-tags\fR \fItags\fR .RS 4 Toggle the tags of the currently focused view corresponding to the set bits of \fItags\fR.\& .PP .RE \fBspawn-tagmask\fR \fItagmask\fR .RS 4 Set a \fItagmask\fR 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 \fItagmask\fR is 111110001, a new view will be assigned the tags 000010001.\& If no tags would remain after filtering, the \fItagmask\fR is ignored.\& .PP .RE \fBfocus-previous-tags\fR .RS 4 Sets tags to their previous value on the currently focused output, allowing jumping back and forth between 2 tag setups.\& .PP .RE \fBsend-to-previous-tags\fR .RS 4 Assign the currently focused view the previous tags of the currently focused output.\& .PP .RE .SS MAPPINGS .PP Mappings 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.\& .PP The following modifiers are available for use in mappings: .PP .RS 4 .PD 0 .IP \(bu 4 Shift .IP \(bu 4 Control .IP \(bu 4 Mod1 (Alt) .IP \(bu 4 Mod3 .IP \(bu 4 Mod4 (Super) .IP \(bu 4 Mod5 .IP \(bu 4 None .PD .PP .RE Alt and Super are aliases for Mod1 and Mod4 respectively.\& None allows creating a mapping without modifiers.\& .PP Keys are specified by their XKB keysym name.\& See \fI/usr/include/xkbcommon/xkbcommon-keysyms.\&h\fR for the complete list.\& .PP Mouse buttons are specified by Linux input event code names.\& The most commonly used values are: .PP .RS 4 .PD 0 .IP \(bu 4 BTN_LEFT - left mouse button .IP \(bu 4 BTN_RIGHT - right mouse button .IP \(bu 4 BTN_MIDDLE - middle mouse button .PD .PP .RE A complete list may be found in \fI/usr/include/linux/input-event-codes.\&h\fR .PP \fBdeclare-mode\fR \fIname\fR .RS 4 Create a new mode called \fIname\fR.\& .PP .RE \fBenter-mode\fR \fIname\fR .RS 4 Switch to given mode if it exists.\& .PP .RE \fBmap\fR [\fB-release\fR|\fB-repeat\fR|\fB-layout\fR \fIindex\fR] \fImode\fR \fImodifiers\fR \fIkey\fR \fIcommand\fR .RS 4 Run \fIcommand\fR when \fIkey\fR is pressed while \fImodifiers\fR are held down and in the specified \fImode\fR.\& .PP .PD 0 .IP \(bu 4 \fB-release\fR: if passed activate on key release instead of key press .IP \(bu 4 \fB-repeat\fR: if passed activate repeatedly until key release; may not be used with \fB-release\fR .IP \(bu 4 \fB-layout\fR: if passed, a specific layout is pinned to the mapping.\& When the mapping is checked against a pressed key, this layout is used to translate the key independent of the active layout .RS 4 .IP \(bu 4 \fIindex\fR: zero-based index of a layout set with the \fBkeyboard-layout\fR command.\& If the index is out of range, the \fB-layout\fR option will have no effect .RE .IP \(bu 4 \fImode\fR: name of the mode for which to create the mapping .IP \(bu 4 \fImodifiers\fR: one or more of the modifiers listed above, separated by a plus sign (+).\& .IP \(bu 4 \fIkey\fR: an XKB keysym name as described above .IP \(bu 4 \fIcommand\fR: any command that may be run with riverctl .PD .PP .RE \fBmap-pointer\fR \fImode\fR \fImodifiers\fR \fIbutton\fR \fIaction\fR|\fIcommand\fR .RS 4 Move or resize views or run \fIcommand\fR when \fIbutton\fR and \fImodifiers\fR are held down while in the specified \fImode\fR.\& The view under the cursor will be focused.\& .PP .PD 0 .IP \(bu 4 \fImode\fR: name of the mode for which to create the mapping .IP \(bu 4 \fImodifiers\fR: one or more of the modifiers listed above, separated by a plus sign (+).\& .IP \(bu 4 \fIbutton\fR: the name of a Linux input event code as described above .IP \(bu 4 \fIaction\fR: one of the following values: .RS 4 .IP \(bu 4 move-view .IP \(bu 4 resize-view .RE .IP \(bu 4 \fIcommand\fR: any command that may be run with riverctl .PD .PP .RE \fBmap-switch\fR \fImode\fR \fBlid\fR|\fBtablet\fR \fIstate\fR \fIcommand\fR .RS 4 Run \fIcommand\fR when river receives a certain switch event.\& .PP .PD 0 .IP \(bu 4 \fImode\fR: name of the mode for which to create the mapping .IP \(bu 4 \fIlid\fR|\fItablet\fR: '\&lid switch'\& and '\&tablet mode switch'\& are supported .IP \(bu 4 \fIstate\fR: .RS 4 .IP \(bu 4 possible states for \fIlid\fR: .RS 4 .IP \(bu 4 close .IP \(bu 4 open .RE .IP \(bu 4 possible states for \fItablet\fR: .RS 4 .IP \(bu 4 on .IP \(bu 4 off .RE .RE .IP \(bu 4 \fIcommand\fR: any command that may be run with riverctl .PD .PP .RE \fBunmap\fR [\fB-release\fR] \fImode\fR \fImodifiers\fR \fIkey\fR .RS 4 Remove the mapping defined by the arguments: .PP .PD 0 .IP \(bu 4 \fB-release\fR: if passed unmap the key release instead of the key press .IP \(bu 4 \fImode\fR: name of the mode for which to remove the mapping .IP \(bu 4 \fImodifiers\fR: one or more of the modifiers listed above, separated by a plus sign (+).\& .IP \(bu 4 \fIkey\fR: an XKB keysym name as described above .PD .PP .RE \fBunmap-pointer\fR \fImode\fR \fImodifiers\fR \fIbutton\fR .RS 4 Remove the pointer mapping defined by the arguments: .PP .PD 0 .IP \(bu 4 \fImode\fR: name of the mode for which to remove the mapping .IP \(bu 4 \fImodifiers\fR: one or more of the modifiers listed above, separated by a plus sign (+).\& .IP \(bu 4 \fIbutton\fR: the name of a Linux input event code as described above .PD .PP .RE \fBunmap-switch\fR \fImode\fR \fBlid\fR|\fBtablet\fR \fIstate\fR .RS 4 Remove the switch mapping defined by the arguments: .PP .PD 0 .IP \(bu 4 \fImode\fR: name of the mode for which to remove the mapping .IP \(bu 4 \fIlid\fR|\fItablet\fR: the switch for which to remove the mapping .IP \(bu 4 \fIstate\fR: a state as listed above .PD .PP .RE .SS RULES .PP Rules match the app-id and title of views against a \fIglob\fR pattern.\& A \fIglob\fR is a string that may optionally have an \fI*\fR at the beginning and/or end.\& An \fI*\fR in a \fIglob\fR matches zero or more arbitrary characters in the app-id or title.\& .PP For example, \fIabc\fR is matched by \fIa*\fR, \fI*a*\fR, \fI*b*\fR, \fI*c\fR, \fIabc\fR, and \fI*\fR but not matched by \fI*a\fR, \fIb*\fR, \fI*b\fR, \fIc*\fR, or \fIab\fR.\& Note that \fI*\fR matches everything while \fI**\fR and the empty string are invalid.\& .PP \fBrule-add\fR [\fB-app-id\fR \fIglob\fR|\fB-title\fR \fIglob\fR] \fIaction\fR [\fIarguments\fR] .RS 4 Add a rule that applies an \fIaction\fR to views with \fBapp-id\fR and \fBtitle\fR matched by the respective \fIglob\fR.\& Omitting \fB-app-id\fR or \fB-title\fR is equivalent to passing \fB-app-id\fR \fI*\fR or \fB-title\fR \fI*\fR.\& Some actions require one or more \fIarguments\fR.\& .PP The supported \fIaction\fR types are: .PP .PD 0 .IP \(bu 4 \fBfloat\fR: Make the view floating.\& Applies only to new views.\& .IP \(bu 4 \fBno-float\fR: Don'\&t make the view floating.\& Applies only to new views.\& .IP \(bu 4 \fBssd\fR: Use server-side decorations for the view.\& Applies to new and existing views.\& .IP \(bu 4 \fBcsd\fR: Use client-side decorations for the view.\& Applies to new and existing views.\& .IP \(bu 4 \fBtags\fR: Set the initial tags of the view.\& Requires the tags as an argument.\& Applies only to new views.\& .IP \(bu 4 \fBoutput\fR: Set the initial output of the view.\& Requires the output as an argument.\& Applies only to new views.\& The output can be specified either by connector name (such as \fIHDMI-A-1\fR, or \fIDP-2\fR), or by identifier in the form of \fIMAKE MODEL SERIAL\fR, for example for an output with make: \fIHP Inc.\&\fR, model: \fIHP 22w\fR, and serial: \fICNC93720WF\fR, the identifier would be: \fIHP Inc.\& HP 22w CNC93720WF\fR.\& If the make, model, or serial is unknown, the word "Unknown" is used instead.\& .IP \(bu 4 \fBposition\fR: Set the initial position of the view, clamping to the bounds of the output.\& Requires x and y coordinates of the view as arguments, both of which must be non-negative.\& Applies only to new views.\& .IP \(bu 4 \fBdimensions\fR: Set the initial dimensions of the view, clamping to the constraints of the view.\& Requires width and height of the view as arguments, both of which must be non-negative.\& Applies only to new views.\& .IP \(bu 4 \fBfullscreen\fR: Make the view fullscreen.\& Applies only to new views.\& .IP \(bu 4 \fBno-fullscreen\fR: Don'\&t make the view fullscreen.\& Applies only to new views.\& .PD .PP Both \fBfloat\fR and \fBno-float\fR rules are added to the same list, which means that adding a \fBno-float\fR rule with the same arguments as a \fBfloat\fR rule will overwrite it.\& The same holds for \fBssd\fR and \fBcsd\fR, \fBfullscreen\fR and \fBno-fullscreen\fR rules.\& .PP If multiple rules in a list match a given view the most specific rule will be applied.\& For example with the following rules .nf .RS 4 app-id title action foo bar ssd foo * csd * bar csd * baz ssd .fi .RE a view with app-id '\&foo'\& and title '\&bar'\& would get ssd despite matching two csd rules as the first rule is most specific.\& Furthermore a view with app-id '\&foo'\& and title '\&baz'\& would get csd despite matching the last rule in the list since app-id specificity takes priority over title specificity.\& .PP 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.\& .PP If a view is started fullscreen or is not floating, then \fBposition\fR and \fBdimensions\fR rules will have no effect A view must be matched by a \fBfloat\fR rule in order for them to take effect.\& .PP .RE \fBrule-del\fR [\fB-app-id\fR \fIglob\fR|\fB-title\fR \fIglob\fR] \fIaction\fR .RS 4 Delete a rule created using \fBrule-add\fR with the given arguments.\& .PP .RE \fBlist-rules\fR \fBfloat\fR|\fBssd\fR|\fBtags\fR|\fBposition\fR|\fBdimensions\fR|\fBfullscreen\fR .RS 4 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.\& .PP .RE .SS CONFIGURATION .PP \fBdefault-attach-mode\fR \fBtop\fR|\fBbottom\fR|\fBabove\fR|\fBbelow\fR|\fBafter \fR .RS 4 Set the attach mode to be used by all outputs by default.\& .PP Possible values: .PD 0 .IP \(bu 4 top: Prepends the newly spawned view at the top of the stack.\& .IP \(bu 4 bottom: Appends the newly spawned view at the bottom of the stack.\& .IP \(bu 4 above: Inserts the newly spawned view above the currently focused view.\& .IP \(bu 4 below: Inserts the newly spawned view below the currently focused view.\& .IP \(bu 4 after : Inserts the newly spawned view after N views in the stack.\& .PD .PP Note that the deprecated \fBattach-mode\fR command is aliased to \fBdefault-attach-mode\fR for backwards compatibility.\& .PP .RE \fBoutput-attach-mode\fR \fBtop\fR|\fBbottom\fR|\fBabove\fR|\fBbelow\fR|\fBafter \fR .RS 4 Set the attach mode of the currently focused output, overriding the value of default-attach-mode if any.\& .PP .RE \fBbackground-color\fR \fI0xRRGGBB\fR|\fI0xRRGGBBAA\fR .RS 4 Set the background color.\& .PP .RE \fBborder-color-focused\fR \fI0xRRGGBB\fR|\fI0xRRGGBBAA\fR .RS 4 Set the border color of focused views.\& .PP .RE \fBborder-color-unfocused\fR \fI0xRRGGBB\fR|\fI0xRRGGBBAA\fR .RS 4 Set the border color of unfocused views.\& .PP .RE \fBborder-color-urgent\fR \fI0xRRGGBB\fR|\fI0xRRGGBBAA\fR .RS 4 Set the border color of urgent views.\& .PP .RE \fBborder-width\fR \fIpixels\fR .RS 4 Set the border width to \fIpixels\fR.\& .PP .RE \fBfocus-follows-cursor\fR \fBdisabled\fR|\fBnormal\fR|\fBalways\fR .RS 4 There are three available modes: .PP .PD 0 .IP \(bu 4 \fIdisabled\fR: Moving the cursor does not affect focus.\& This is the default.\& .IP \(bu 4 \fInormal\fR: Moving the cursor over a view will focus that view.\& Moving the cursor within a view will not re-focus that view if focus has moved elsewhere.\& .IP \(bu 4 \fIalways\fR: Moving the cursor will always focus whatever view is under the cursor.\& .PD .PP If the view to be focused is on an output that does not have focus, focus is switched to that output.\& .PP .RE \fBhide-cursor\fR \fBtimeout\fR \fItimeout\fR .RS 4 Hide the cursor if it wasn'\&t moved in the last \fItimeout\fR milliseconds until it is moved again.\& The default value is 0, which disables automatically hiding the cursor.\& Show the cursor again on any movement.\& .PP .RE \fBhide-cursor\fR \fBwhen-typing\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Hide the cursor when pressing any non-modifier key.\& Show the cursor again on any movement.\& .PP .RE \fBset-cursor-warp\fR \fBdisabled\fR|\fBon-output-change\fR|\fBon-focus-change\fR .RS 4 Set the cursor warp mode.\& There are two available modes: .PP .PD 0 .IP \(bu 4 \fIdisabled\fR: Cursor will not be warped.\& This is the default.\& .IP \(bu 4 \fIon-output-change\fR: When a different output is focused, the cursor will be warped to its center.\& .IP \(bu 4 \fIon-focus-change\fR: When a different view/output is focused, the cursor will be warped to its center.\& .PD .PP .RE \fBset-repeat\fR \fIrate\fR \fIdelay\fR .RS 4 Set the keyboard repeat rate to \fIrate\fR key repeats per second and repeat delay to \fIdelay\fR milliseconds.\& .PP .RE \fBxcursor-theme\fR \fItheme_name\fR [\fIsize\fR] .RS 4 Set the xcursor theme to \fItheme_name\fR and optionally set the \fIsize\fR.\& The theme of the default seat determines the default for Xwayland and is made available through the \fIXCURSOR_THEME\fR and \fIXCURSOR_SIZE\fR environment variables.\& .PP .RE .SS INPUT CONFIGURATION .PP \fBlist-inputs\fR .RS 4 List all input devices.\& .PP .RE \fBlist-input-configs\fR .RS 4 List all input configurations.\& .PP .RE \fBkeyboard-layout\fR [-rules \fIrules\fR] [-model \fImodel\fR] [-variant \fIvariant\fR] [-options \fIoptions\fR] \fIlayout\fR .RS 4 Set the XKB layout for all keyboards.\& Defaults from libxkbcommon are used for everything left unspecified.\& Note that \fIlayout\fR 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 \fBxkeyboard-config\fR(7) for possible values and more information.\& .PP .RE \fBkeyboard-layout-file\fR \fIpath\fR .RS 4 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 .PP .RE \fBkeyboard-group-create\fR \fIgroup_name\fR .RS 4 Create a keyboard group.\& A keyboard group collects multiple keyboards in a single logical keyboard.\& This means that all state, like the active modifiers, is shared between the keyboards in a group.\& .PP .RE \fBkeyboard-group-destroy\fR \fIgroup_name\fR .RS 4 Destroy the keyboard group with the given name.\& All attached keyboards will be released, making them act as separate devices again.\& .PP .RE \fBkeyboard-group-add\fR \fIgroup_name\fR \fIinput_device_name\fR .RS 4 Add a keyboard to a keyboard group, identified by the keyboard'\&s input device name.\& Any currently connected and future keyboards with the given name will be added to the group.\& Simple globbing patterns are supported, see the rules section for further information on globs.\& .PP .RE \fBkeyboard-group-remove\fR \fIgroup_name\fR \fIinput_device_name\fR .RS 4 Remove a keyboard from a keyboard group, identified by the keyboard'\&s input device name.\& .PP .RE The \fIinput\fR command can be used to create a configuration rule for an input device identified by its \fIname\fR.\& The \fIname\fR of an input device consists of its type, its numerical vendor id, its numerical product id and finally its self-advertised name, separated by -.\& Simple globbing patterns are supported, see the rules section for further information on globs.\& .PP A list of all device properties that can be configured may be found below.\& However note that not every input device supports every property.\& .PP \fBinput\fR \fIname\fR \fBevents\fR \fBenabled\fR|\fBdisabled\fR|\fBdisabled-on-external-mouse\fR .RS 4 Configure whether the input devices events will be used by river.\& .PP .RE \fBinput\fR \fIname\fR \fBaccel-profile\fR \fBnone\fR|\fBflat\fR|\fBadaptive\fR .RS 4 Set the pointer acceleration profile of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBpointer-accel\fR \fIfactor\fR .RS 4 Set the pointer acceleration factor of the input device.\& Needs a float between -1.\&0 and 1.\&0.\& .PP .RE \fBinput\fR \fIname\fR \fBclick-method\fR \fBnone\fR|\fBbutton-areas\fR|\fBclickfinger\fR .RS 4 Set the click method of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBdrag\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the tap-and-drag functionality of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBdrag-lock\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the drag lock functionality of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBdisable-while-typing\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the disable-while-typing functionality of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBdisable-while-trackpointing\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the disable-while-trackpointing functionality of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBmiddle-emulation\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the middle click emulation functionality of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBnatural-scroll\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the natural scroll functionality of the input device.\& If active, the scroll direction is inverted.\& .PP .RE \fBinput\fR \fIname\fR \fBscroll-factor\fR \fIfactor\fR .RS 4 Set the scroll factor of the input device.\& Accepts a postive value greater than 0.\& For example, a \fIfactor\fR of 0.\&5 will make scrolling twice as slow while a \fIfactor\fR of 3 will make scrolling 3 times as fast.\& .PP .RE \fBinput\fR \fIname\fR \fBleft-handed\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the left handed mode of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBtap\fR \fBenabled\fR|\fBdisabled\fR .RS 4 Enable or disable the tap functionality of the input device.\& .PP .RE \fBinput\fR \fIname\fR \fBtap-button-map\fR \fBleft-right-middle\fR|\fBleft-middle-right\fR .RS 4 Configure the button mapping for tapping.\& .PP .PD 0 .IP \(bu 4 \fIleft-right-middle\fR: 1 finger tap equals left click, 2 finger tap equals right click, 3 finger tap equals middle click.\& .IP \(bu 4 \fIleft-middle-right\fR: 1 finger tap equals left click, 2 finger tap equals middle click, 3 finger tap equals right click.\& .PD .PP .RE \fBinput\fR \fIname\fR \fBscroll-method\fR \fBnone\fR|\fBtwo-finger\fR|\fBedge\fR|\fBbutton\fR .RS 4 Set the scroll method of the input device.\& .PP .PD 0 .IP \(bu 4 \fInone\fR: No scrolling .IP \(bu 4 \fItwo-finger\fR: Scroll by swiping with two fingers simultaneously .IP \(bu 4 \fIedge\fR: Scroll by swiping along the edge .IP \(bu 4 \fIbutton\fR: Scroll with pointer movement while holding down a button .PD .PP .RE \fBinput\fR \fIname\fR \fBscroll-button\fR \fIbutton\fR .RS 4 Set the scroll button of an input device.\& \fIbutton\fR is the name of a Linux input event code.\& .PP .RE \fBinput\fR \fIname\fR \fBmap-to-output\fR \fIoutput\fR|\fBdisabled\fR .RS 4 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.\& .PP .RE .SH EXAMPLES .PP Bind Super+Return in normal mode to spawn a \fBfoot\fR(1) terminal: .PP .RS 4 riverctl map normal Mod4 Return spawn '\&foot --app-id=foobar'\& .PP .RE Bind Super+Shift+J to swap the focused view with the next visible view: .PP .RS 4 riverctl map normal Mod4+Shift J swap next .PP .RE .SH AUTHORS .PP Maintained by Isaac Freund who is assisted by open source contributors.\& For more information about river'\&s development, see .\& .PP .SH SEE ALSO .PP \fBriver\fR(1), \fBrivertile\fR(1)