Commit graph

4 commits

Author SHA1 Message Date
a338369457 Improve dynamic tiling layout handling
Replace the flat per-screen tiling order with a persistent layout
tree so split orientation and window relationships survive retiles.
Derive the per-screen tile cache from the tree when applying
geometries.

Make drag insertion deterministic by mapping the cursor position
over a target tile to the nearest split direction and previewing
the exact half that will be assigned.

Retile on Workspace.onScreensChanged so screen rotation and output
changes recompute tiled window geometry from the updated work area,
and reconcile tiled windows that KWin moved to another output.
2026-05-17 18:26:28 +02:00
3fbf68d56b Refine Dynamic Tiling drag zones
Use edge insert zones for drag-and-drop reordering, keep drag signal
connections stable across window creation, and consume task-menu tiling
requests through the script settings bridge.
2026-05-10 09:32:33 +02:00
2c0e329037 Make snap layouts optional on maximize hover
Move maximize-hover handling into the snap-assist effect so it can use
the actual decoration button geometry. Render the scene below the picker,
anchor layouts near the cursor, and preview the selected zone without a
fullscreen modal surface.

A normal maximize click keeps priority: hover activation requires a
deliberate pause, dismissal starts a short cooldown, and clicks on the
maximize button still toggle maximize while closing the suggestion.
2026-05-05 13:31:06 +02:00
730385d8c8 Add SHIFT dynamic tiling KWin script
Introduce a declarative KWin script that maintains a binary-space
partition layout per output for normal windows in convergence mode.
New windows are added to the active screen and the layout is
recomputed with 8 px outer and 8 px inner gaps; closed windows are
removed and neighbours expand to fill the freed area.

Windows that fail isTileable (panels, fixed-size dialogs, fullscreen,
xwaylandvideobridge, manually-floated) are left untouched.  A 200 ms
deferred-retile timer mirrors the convergentwindows pattern so the
dockSpaceReserver layer-shell exclusive zone is settled before
clientArea is queried.

Dragging a tile and dropping it onto another tile swaps the two slots
in the BSP layout; an outline is drawn on the hovered target as a
visual cue.  Drops elsewhere snap the tile back to its original slot
and leave KWin native quick-tile and electric borders untouched.

Keyboard bindings:
  Meta+H/J/K/L  focus left/down/up/right
  Meta+F        toggle float on the active window
  Meta+T        toggle tiling globally
2026-05-04 20:25:06 +02:00