Skip to content

KWin Tiling

Dynamic tiling for KDE Plasma — master-stack, stacked, scrolling, and centred layouts, adjustable gaps, float/ignore rules, and a settings panel — built into stock KWin, not as a separate compositor.

Tiled desktop with master-stack layout on the left monitor and stacked layout on the right

KWin Tiling adds automatic window tiling to the compositor you already run. New windows snap into a layout; you move, resize, and float them with keyboard shortcuts and the mouse. Everything is configured through System Settings and persists across restarts.

The motivation is native tiling — smoother and more capable than what the KWin script API allows — without maintaining a renamed compositor fork. We patch stock KWin with vendored source and a small hooks patch instead of carrying a full compositor fork like KineticWE did. See Design for the comparison — 37 files touched here vs 123 diverging src/ files in the fork, and none of its QPainter backend or install scaffolding.

At a glance:

  • Five layout modes — master-stack, stacked, scrolling, centred, and grid
  • Gaps — space between tiles and around the screen edge, per-monitor overrides
  • Window rules — float or ignore apps by class/title; dialogs auto-float
  • Full control — keyboard shortcuts, drag-to-swap, divider resize, settings KCM
  • Nix packaging — flake module and overlay; no compositor fork to maintain

See Features for the full breakdown of each layout, rule, and improvement.

You only need the patched KWin build from this flake. How you log in determines how much else you wire up.

Keep your normal Plasma Wayland session. Add the flake module, enable tiling, done.

inputs.kwin-tiling.url = "github:luxus/kwin-tiling";
# On the host:
imports = [ inputs.kwin-tiling.nixosModules.kwin-tiling ];

Then turn tiling on in ~/.config/kwinrc ([Tiling] Enabled=true) or System Settings → Window Management → Tiling. plasmashell, ksmserver, and your existing KDE workflow stay as they are — you are just running a patched kwin.

Best when you already use Plasma and only want native tiling.

Run KWin alone as the compositor in a custom Wayland session, with Noctalia as the shell (bar, launcher, lock) instead of plasmashell. You still need the patched KWin from this flake, plus session plumbing: a wayland-sessions entry, a handful of KDE user services (portal, kded, powerdevil, …), and Noctalia-specific patches for lock/logout on kwin-only.

Best for a minimal KDE stack, greetd, or when you do not want full Plasma.

See KWin + Noctalia session for the full checklist. Shortcuts and the tiling KCM work the same in both paths — Usage & Shortcuts.

For packaging details and source layout, see pkgs/kwin-tiling/README.md in the repository.