Add mouse window controls and finer display scaling (#63)

Add configurable mouse and wheel bindings, window move and resize, tab drops, cross-output dragging, and device settings. Adjust display scaling in 0.05 increments.

Preserve opposite-edge positioning during scrolling resizes and show rows for edge drops into tabbed columns.
This commit is contained in:
Samuel Onoja authored and GitHub committed 2026-10-25 14:14:35 +01:00
1 parent ab11269246
commit ad00e55fe4
35 files changed
+3454 -512

No files matched your search

+1 -1
View File
@@ -152,7 +152,7 @@ impl App {
default: 1.,
min: 0.75,
max: 3.,
step: 0.25,
step: 0.05,
suffix: "×",
integer: false,
},
+1 -1
View File
@@ -375,7 +375,7 @@ impl App {
);
}
Page::Shortcuts => {
body = body.push(self.note("Keyboard and swipe bindings share the same actions. Use Swipe3Up, Swipe3Down, Swipe3Left, or Swipe3Right as a shortcut (also supports 4 or 5 fingers). Actions include toggle-overview, spawn, focus, move, workspace-next, workspace-previous, workspace-back-and-forth, and none. Leave Argument empty for actions such as toggle-overview or none."));
body = body.push(self.note("Keyboard, mouse and swipe bindings share the same actions. Mouse shortcuts can use MouseLeft, MouseRight, MouseMiddle, MouseBack, MouseForward or WheelUp/Down/Left/Right with modifiers. Use pointer-move or pointer-resize for dragging. Swipes use Swipe3Up, Swipe3Down, Swipe3Left or Swipe3Right (also supports 4 or 5 fingers). Actions such as toggle-overview and none need no argument."));
let mut gestures = row([]).spacing(6);
for (keys, label) in [
("Swipe3Up", "Customize swipe up"),
+63
View File
@@ -827,6 +827,69 @@ pub fn fields(page: Page) -> Vec<Field> {
"Avoid accidental pointer movement.",
true,
),
toggle(
"input.touchpad.disable_while_mouse_connected",
"Disable touchpad with a mouse",
"Pause the built-in touchpad while an external mouse is connected.",
false,
),
range(
"input.touchpad.accel_speed",
"Touchpad speed",
"Adjust pointer acceleration for the touchpad.",
RangeSpec {
default: 0.0,
min: -1.0,
max: 1.0,
step: 0.05,
suffix: "",
integer: false,
},
),
toggle(
"input.mouse.natural_scroll",
"Mouse natural scrolling",
"Reverse the direction of the mouse wheel.",
false,
),
toggle(
"input.mouse.left_handed",
"Left-handed mouse",
"Swap the primary and secondary mouse buttons.",
false,
),
toggle(
"input.mouse.middle_emulation",
"Emulate middle click",
"Press both mouse buttons together to middle-click.",
false,
),
range(
"input.mouse.accel_speed",
"Mouse speed",
"Adjust pointer acceleration for connected mice.",
RangeSpec {
default: 0.0,
min: -1.0,
max: 1.0,
step: 0.05,
suffix: "",
integer: false,
},
),
range(
"input.mouse.scroll_factor",
"Mouse scroll speed",
"Scale wheel scrolling in applications.",
RangeSpec {
default: 1.0,
min: 0.1,
max: 5.0,
step: 0.1,
suffix: "×",
integer: false,
},
),
range(
"input.touchpad.swipe_threshold",
"Swipe distance",