All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Optional active-layout tracking per KDE Activity, so each Activity can keep its own active layout per monitor.
- Activity-scoped placement memory for existing windows, so windows can return to their Activity-specific Magnetile zone when switching Activities.
- Optional Activity placement profiles that snap newly opened matching windows to configured zones for the current KDE Activity.
- Activity profiles are placement-only. Magnetile does not launch applications from inside the KWin script; use KDE application shortcuts, launchers, or an external helper to start apps.
- Custom edge-snap trigger regions for zones via optional
snapEdge,snapX, andsnapWidthlayout fields. - Layout editor controls for editing and round-tripping custom edge-snap triggers.
- Edge snapping overlapping layouts can now target different zones from different screen edges without changing placement geometry.
- Dropping into runtime resized zones now uses the same effective geometry as the preview.
- Resizing a single zone preserves unchanged padded edges instead of collapsing layout padding.
- Restored per-output layout tracking for reset and layout cycling after the 0.2.1 runtime merged-zone fixes.
Ctrl+Alt+Rnow clears runtime merge/resize state only for the active output, desktop, activity, and layout scope.Ctrl+Alt+Dand reverse layout cycling now refresh from the active window's output before updating the tracked layout key.
- Connected resizing now treats runtime merged zones as first-class resize targets, preserving merged-zone metadata and stacked windows during resize.
- Resetting the current layout now clears runtime merged-zone and resized-grid state so merged zones return to the configured layout.
- Snapping windows back into normal zones no longer loses configured padding after runtime resize or merge state changes.
- Default bundled layouts and examples now use 10 px padding instead of zero padding, matching the expected out-of-box visual spacing.
- Runtime merged zones: drop near a shared zone edge to span adjacent zones until the current layout is reset.
- High-contrast cyan zone and merge preview indicators.
- Existing tiled windows in affected zones now expand to the merged target so zone stacks stay coherent.
- Multi-zone spanning uses edge/gutter drop detection instead of a held hotkey, because KWin script shortcuts are not reliable during interactive window moves.
- Prevent connected resize from assigning floating windows to the nearest zone, which could move or resize unrelated snapped windows while resizing a non-zoned window.
- Connected resizing: adjacent tiled windows resize together after a manual edge drag, with runtime grid tracking so future snaps follow resized zones.
- Visual layout editor (
tools/layout-editor.html) for creating, editing, previewing, importing, and exporting JSON layouts without hand-editing. - Free movement toggle (
Ctrl+Alt+F) to temporarily exempt a window from snap behavior. - Per-monitor layout defaults via
monitorLayoutsJson. - Independent active-layout tracking per output and optionally per virtual desktop.
- Resolution-independent multi-monitor geometry fixes including outputs with non-zero origin coordinates.
- Wayland-only / KDE Plasma 6.4+ / KWin 6 focus with no X11 code paths.
- Layout editor features: zone snapping, padding preview, aspect ratio presets, file save/load.
- Makefile targets for nested Wayland test sessions (
make test), live reload, and KWin log tailing. PROJECT_DESIGN.mdarchitecture documentation.CONTRIBUTING.mdwith dev setup, debugging, and formatting guidance.NOTICE.mdwith KZones attribution.
- FancyZones-style percentage-based zone layouts.
- Top-of-screen zone selector while dragging.
- Full-screen zone overlay while moving windows.
- Optional edge snapping.
- Multiple saved layouts with cycling.
- Keyboard shortcuts for zone movement, layout switching, zone cycling, window cycling, and snap-all.
- Plasma color-scheme aware overlay and selector styling.
- JSON-based layout configuration with applications, indicators, and colors.
- Window geometry remember/restore.
- Window class include/exclude filters.
- OSD messages and configurable polling rate.
- Debug overlay for window class inspection.