Config Reference
Input
Keyboard repeat behavior, focus policy, keyboard layout, gestures, and libinput device settings.
Defaults
Defaults shown here are the effective builtin defaults from RuntimeTuning::builtin_defaults().
Default Config Shape
Use this as the section shape when editing halley.rune.
input:
repeat-rate 30
repeat-delay 500
focus-mode "click"
raise-on-click true
keyboard:
layout "us"
variant ""
options ""
model ""
end
gestures:
enabled true
client-passthrough true
touch-passthrough true
pinch-to-zoom true
pinch-scope "empty-field"
compositor-scope "global"
modifier "$mod"
scroll-pan "empty-field"
swipe-threshold-px 120
pan-fingers 3
pan-momentum true
pan-decay-rate 6
flick-min-px-per-s 200
swipe-up-4 "apogee-open"
apogee-swipe-down-4 "apogee-close"
end
touchpad:
tap true
natural-scroll true
dwt true
accel-speed 0.3
accel-profile "adaptive"
scroll-method "two-finger"
click-method "clickfinger"
tap-button-map "left-right-middle"
middle-emulation false
left-handed false
disabled-on-external-mouse false
enabled true
end
mouse:
natural-scroll false
accel-speed 0.0
accel-profile "flat"
middle-emulation false
left-handed false
enabled true
end
devices:
"Logitech MX Master 3":
accel-speed 0.6
natural-scroll true
end
end
endinput
Keyboard repeat behavior and focus policy.
| Option | Type | Default | Notes |
|---|---|---|---|
repeat-rate | i32 | 30 | Keyboard repeat rate. |
repeat-delay | i32 | 500 | Delay before keyboard repeat starts, in milliseconds. |
focus-mode | string | click | Accepted values: click, hover. hover focuses windows under the pointer and, when the pointer is on an otherwise empty monitor, default new windows spawn on that monitor. |
raise-on-click | bool | true | Raises clicked windows independently from focus mode. Hover focus does not imply raise. |
keyboard | nested block | see input.keyboard | Keyboard layout, model, variant, and option strings. |
gestures | nested block | see input.gestures | Touchpad gesture, touchscreen passthrough, pinch, swipe, and hold behavior. |
touchpad | nested block | see input.touchpad | Class-wide libinput touchpad settings. Omitted keys keep libinput defaults. |
mouse | nested block | see input.mouse | Class-wide libinput mouse/generic pointer settings. Omitted keys keep libinput defaults. |
devices | nested block | none | Per-device libinput overrides matched against libinput device names. |
keyboard
Keyboard layout, variant, and XKB options.
| Option | Type | Default | Notes |
|---|---|---|---|
layout | string | us | XKB keyboard layout. |
model | string | XKB keyboard model. | |
variant | string | XKB keyboard variant. | |
options | string | XKB keyboard options such as compose:ralt. |
gestures
Touchpad gesture, touch passthrough, pinch, swipe, and hold behavior.
| Option | Type | Default | Notes |
|---|---|---|---|
enabled | bool | true | Enables compositor gesture handling. |
client-passthrough | bool | true | Forwards touchpad gestures to clients through pointer gesture protocols when no compositor binding consumes them. |
touch-passthrough | bool | true | Forwards touchscreen contacts to clients through wl_touch when appropriate. |
pinch-to-zoom | bool | true | Maps compositor pinch gestures to field zoom. |
pinch-scope | string | empty-field | Where compositor pinch zoom applies. Example value: empty-field. |
compositor-scope | string | global | Where compositor gesture bindings are eligible. Example values include global and empty-field. |
modifier | modifier token | $mod | Modifier token used by modifier-scoped gestures. |
scroll-pan | string | empty-field | Where two-finger scroll pans the field. |
swipe-threshold-px | f32 | 120 | Swipe distance threshold before discrete swipe bindings commit. |
pan-fingers | u32 | 3 | Finger count used for continuous field panning. |
pan-momentum | bool | true | Keeps gesture panning moving briefly after a flick. |
pan-decay-rate | f32 | 6 | Momentum decay rate for gesture panning. |
flick-min-px-per-s | f32 | 200 | Minimum velocity treated as a flick. |
swipe-<dir>-<fingers> | action string | unset | Binds a swipe direction and finger count to a compositor action, such as swipe-up-4 "apogee-open". |
apogee-swipe-<dir>-<fingers> | action string | unset | Binds an Apogee-aware swipe, such as apogee-swipe-down-4 "apogee-close". |
hold-<fingers> | action string | unset | Binds a libinput hold gesture to an existing compositor gesture action. |
touchpad
Class-wide libinput touchpad settings applied on device hotplug and config reload.
| Option | Type | Default | Notes |
|---|---|---|---|
tap | bool | libinput | Tap-to-click setting. Omit to keep libinput's own default. |
natural-scroll | bool | libinput | Natural scrolling setting. |
dwt | bool | libinput | Disable-while-typing setting. |
accel-speed | f32 | libinput | Pointer acceleration speed from -1.0 through 1.0. |
accel-profile | string | libinput | Accepted values: adaptive, flat. |
scroll-method | string | libinput | Accepted values: two-finger, edge, on-button-down, no-scroll. |
click-method | string | libinput | Accepted values: clickfinger, button-areas. |
tap-button-map | string | libinput | Tap button mapping, such as left-right-middle. |
middle-emulation | bool | libinput | Middle-button emulation setting. |
left-handed | bool | libinput | Left-handed button mapping setting. |
disabled-on-external-mouse | bool | libinput | Disables the touchpad when an external mouse is present. |
enabled | bool | libinput | Send-events on/off switch for the device class. |
mouse
Class-wide libinput mouse and generic pointer settings.
| Option | Type | Default | Notes |
|---|---|---|---|
natural-scroll | bool | libinput | Natural scrolling setting. |
accel-speed | f32 | libinput | Pointer acceleration speed from -1.0 through 1.0. |
accel-profile | string | libinput | Accepted values: adaptive, flat. |
middle-emulation | bool | libinput | Middle-button emulation setting. |
left-handed | bool | libinput | Left-handed button mapping setting. |
enabled | bool | libinput | Send-events on/off switch for the device class. |
devices.<name>
Per-device libinput overrides layered on top of touchpad or mouse defaults.
| Option | Type | Default | Notes |
|---|---|---|---|
<device name> | nested block | none | Matches the name from libinput list-devices by exact, case-insensitive, or substring match. |
<libinput option> | same as touchpad/mouse | inherited | Any supported touchpad or mouse option can be overridden field by field. |