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

+24
View File
@@ -155,6 +155,15 @@ impl Ferese {
0.03 * opacity.velocity,
);
bounds.current = crate::presentation::scaled_visual_rect(bounds.current, presence_scale);
if let Some(rect) = self
.pointer_operation
.as_ref()
.filter(|operation| operation.id == id)
.and_then(|operation| operation.visual)
{
bounds.current = rect;
bounds.velocity = Default::default();
}
bounds.target = bounds.current;
let (focus_alpha, dim) = self.window_focus_effect(id, delta, overview.opacity());
crate::presentation::WindowPresentation {
@@ -195,6 +204,21 @@ impl Ferese {
))
})
})
.chain(
self.pointer_operation
.as_ref()
.filter(|operation| {
operation.visual.is_some()
&& self.workspaces.workspace_for_window(operation.id).and_then(
|workspace| self.output_workspaces.output_for_workspace(workspace),
) != self.output_id(output)
})
.and_then(|operation| {
self.windows
.record(operation.id)
.map(|record| (operation.id, record, false))
}),
)
}
pub(crate) fn output_has_pending_visual_changes(&self, output: &Output) -> bool {