River virtual keyboard

window manager keyboard event injection

This protocol gives the river-window-management-v1 window manager a race-free way to send virtual keyboard events to the client with keyboard focus as part of a window management manage sequence.

The key words "must", "must not", "required", "shall", "shall not", "should", "should not", "recommended", "may", and "optional" in this document are to be interpreted as described in IETF RFC 2119.

river virtual global interface

This global interface should only be advertised to the client if the river_window_manager_v1 global is also advertised.

destroy()
destroy the river_virtual_keyboard_v1 object

This request indicates that the client will no longer use the river_virtual_keyboard_v1 object.

Argument
Type
Description
virtual_keyboardobject<zwp_virtual_keyboard_v1>
virtual keyboard to sync
sync a virtual keyboard with the manage sequence

Mark a zwp_virtual_keyboard_v1 as synchronized with the river_window_manager_v1 manage sequence.

Virtual keyboard events generated by the zwp_virtual_keyboard_v1.key and zwp_virtual_keyboard_v1.modifiers requests on the given virtual keyboard are queued and sent to the client with keyboard focus in a batch at the end of each manage sequence.

Note that the capacity of the compositor's event queue is necessarily finite, though the compositor should choose large enough limits to allow any "reasonable" usage of this protocol.

This request must be made before the first zwp_virtual_keyboard_v1.keymap request for the given virtual keyboard.

This request only has an effect if the client is the active river window manager.

This request is idempotent, subsequent requests for the same zwp_virtual_keyboard_v1 object have no effect.

Argument
Value
Description
keymap_already_set0
virtual keyboard must be synced before setting keymap

Compositor Support

river_virtual_keyboard_manager_v1↓
Compositors
CageCage0.3.0
x
COSMICCOSMIC1.0.0~beta.8
x
GameScopeGameScope3.15.14
x
HyprlandHyprland0.52.1
x
Jay1.14.0
x
KWinKWin6.7
x
LabwcLabwc0.20.2
x
LouvreLouvre2.14.1
x
MangoMango0.16.3
x
MirMir2.26
x
MuffinMuffin6.7.4
x
MutterMutter51
x
niriniri26.04
x
phocphoc0.55
x
QtileQtile0.37.1
x
riverriver0.5.0
1
SwaySway1.11
x
TreelandTreeland0.8.0
x
WayfireWayfire0.9.0
x
WestonWeston15.0.1
x

SPDX-FileCopyrightText: © 2026 Isaac Freund SPDX-License-Identifier: MIT

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.