Input
Put input policy in ~/.config/aqueous/input.toml. The sidecar overlays matching
wm.toml input and gesture values, and changes apply to connected devices and
devices added later.
Keyboard and focus
Section titled “Keyboard and focus”[input]focus_follows_mouse = falsemouse_follows_focus = falsefocus_new_windows = falseraise_on_focus = trueraise_on_focus_delay_ms = 0num_lock_state = true
xkb_layout = "us,de"xkb_variant = ""xkb_options = "caps:escape,grp:alt_shift_toggle"repeat_rate = 40repeat_delay = 400focus_follows_mousefocuses the pointer target immediately, except where a scrolling layout configures its own dwell delay.mouse_follows_focusmoves the pointer into a newly focused window after keyboard navigation, activation, or automatic focus changes. It defaults to false. Pointer-originated focus, grabs, and drags leave the pointer in place; a pointer already over the target’s visible content also stays put. Output navigation still moves the pointer when this setting is disabled.focus_new_windowsfocuses a newly admitted focusable window after its output/workspace rule is resolved. Inactive-workspace and non-focusable X11 arrivals do not steal focus.raise_on_focuspersistently raises a stacking/freeform window after the optional delay.num_lock_statesets Num Lock on physical keyboards (default false). An explicit value overrideswm.tomland changes apply to connected keyboards on reload. Reloading an unchanged value preserves manual Num Lock toggles.repeat_rateis characters per second; zero disables repeat.repeat_delayis milliseconds before repeat begins.
Empty or omitted XKB values use xkbcommon defaults. Multiple layouts and variants use xkbcommon’s comma-separated grammar.
Physical keyboard events are queued through the seat. Internal bindings get the first opportunity to consume a press; otherwise an input-method grab, legacy binding protocol, or focused client receives it. A consumed press owns its corresponding release even if modifiers change.
Mouse and touchpad
Section titled “Mouse and touchpad”Device sections are overrides. Omit a field to keep libinput’s device default.
[input.mouse]accel_profile = "flat"accel_speed = 0.0natural_scroll = falseleft_handed = falsemiddle_emulation = falsedwt = false
[input.touchpad]accel_profile = "adaptive"accel_speed = 0.0natural_scroll = truetap = truedwt = trueleft_handed = falsemiddle_emulation = falseclick_method = "clickfinger"scroll_method = "two-finger"Accepted values are:
accel_profile:flatoradaptive.accel_speed:-1.0through1.0.click_method:clickfingerorbutton-areas.scroll_method:two-finger,edge, orno-scroll.- Boolean switches:
natural_scroll,tap,dwt,left_handed, andmiddle_emulation.
Tap, click, and scroll-method configuration is applied only to devices detected as touchpads.
Gestures
Section titled “Gestures”Gesture bindings use <kind>_<fingers>_<direction> and the same verbs as
custom keyboard bindings:
[gestures]swipe_3_left = "builtin:focus_workspace_down"swipe_3_right = "builtin:focus_workspace_up"pinch_4_in = "builtin:toggle_start_menu"Swipes accept left, right, up, and down; pinches accept in and out.
Finger counts are positive integers. The value may be builtin:<action>,
set_layout:<id-or-slot>, or spawn:<command>. A matching gesture is consumed
by Aqueous; unmatched gestures continue through the normal client path.
Pointer interactions and constraints
Section titled “Pointer interactions and constraints”Normal clicks use scene hit-testing. The configured primary modifier intercepts window-management drags before client delivery. Client drag-and-drop temporarily suppresses focus-follows-pointer so wlroots can own its pointer and keyboard grabs without focus changes underneath it.
The untrap_pointer binding releases an active relative-pointer constraint
while held and restores it on release. This is useful for games without
permanently disabling pointer locking.
Scrolling-layout wheel navigation uses the primary modifier to move by column
and the primary modifier plus Alt to move within a column. Natural-scroll
settings reverse those directions consistently. Configure or disable these
actions with wheel_scroll_left/right/up/down; see
wheel bindings.
Tablets
Section titled “Tablets”Map a tablet’s absolute pen input to one output with repeated [[input.tablet]]
rules in input.toml. Each tablet can use a different output while the mouse
cursor remains independent. Pen pressure, tilt, proximity, tip and buttons
continue through tablet-v2.
aqueousctl input devices --jsonaqueousctl input generate-config --device DEVICE_ID --id drawing-pen --output OUTPUTReplace DEVICE_ID and OUTPUT with values from discovery. Generation prints
TOML by default; add --write ~/.config/aqueous/input.toml to update the file.
See Tablets for Kamvas/Intuos setup, persistent matching,
full-desktop or disabled modes, and troubleshooting.
Mouse/touchpad acceleration settings apply to pointer devices, not pens. Unconfigured tablets retain the existing desktop mapping behavior. Configured tablets wait for their assigned output when it is unavailable.
Input methods and virtual devices
Section titled “Input methods and virtual devices”At the protocol layer Aqueous supports tablet v2, text-input v3, input-method v2 and input popups, relative pointers, pointer gestures, virtual keyboards, and virtual pointers. These standard interfaces allow drawing tablets, on- screen keyboards, IMEs, accessibility tools, and test/automation clients to participate in normal seat focus.
Trackpoints and legacy pointer values
Section titled “Trackpoints and legacy pointer values”[input.trackpoint] is accepted and retained, but the current libinput
application path classifies every non-touchpad pointer as a mouse. Put effective
trackpoint policy under [input.mouse] for now.
Legacy global acceleration remains available:
[input]pointer_acceleration = falsepointer_acceleration_factor = 0.0Per-device profile and speed take precedence. Prefer the device sections in a new configuration.
