PlasmaZones
Window snapping, tiling and scrolling for KDE Plasma.
Three placement modes in one daemon. Snap windows into zones you drew, let an algorithm tile them for you, or scroll them along an endless strip — every monitor picks its own. Built on the Phosphor library suite, it is scriptable, themeable, and Wayland-native.
Features
Hold a modifier while dragging any window. Zones light up, and dropping a window into one fills it. The modifier is configurable (Alt, Meta, Ctrl+Alt, Alt+Shift, Alt+Meta, Ctrl+Alt+Meta), and Ctrl+Alt over two adjacent zones snaps across both. Keyboard users skip the drag with Meta+Ctrl+1 through Meta+Ctrl+9.
Windows place themselves as they open, with no drag and no zones to draw. 27 algorithms ship in-box — master-and-stack, BSP, columns, grid, spiral, monocle, Krohnkite-style deck stacking — written in sandboxed Luau. Per-side inner and outer gaps, smart-gaps when only one window is tiled, and hot-reload for custom .luau in ~/.local/share/plasmazones/algorithms/.
Windows form columns on an endless strip, modeled on niri, and the screen is a window onto it — opening a window never resizes the ones you have. Columns cycle through width presets, share or tab their windows, and consume or expel between each other. The strip runs side to side or top to bottom to match the monitor, and Meta+wheel moves along it.
Each monitor runs the mode you assign it, scoped per virtual desktop and per activity, so a widescreen can scroll while the laptop panel tiles. Meta+Shift+T cycles the focused screen through whichever modes you have enabled, and any mode can be turned off entirely.
Grids, BSP and fibonacci, master+stack, portrait / ultrawide / super-ultrawide variants, priority grids. The visual editor draws custom zones freehand with grid snapping, undo/redo, and per-zone colors. Coordinates are normalized, so one layout works at any screen size.
Subdivide a physical monitor into 2–10 virtual screens with drag-to-resize boundaries. Each gets its own layout, placement mode, and settings. Swap with Meta+Ctrl+Shift+arrows.
27 overlay shaders draw zone highlights, snap previews, and drag ghosts; 24 surface packs blur, frost, border, and tint the windows themselves; 94 animation packs cover open, close, minimize, tab, and desktop-switch transitions. All GLSL, all hot-reloading from ~/.local/share/plasmazones/.
Match on class, title, active layout, screen orientation, and more, then act on placement, floating, opacity, borders, animations, scroll speed, and per-app behavior in every mode.
After you drop a window into a zone, empty zones show thumbnails of other windows for one-click follow-up placement.
Snap, switch zones, move windows, cycle layouts, drive the strip — bound through KGlobalAccel, with an XDG Portal fallback in the portable build.
See it in action
Tiles auto-swap placeholder → real image as soon as the PNG lands under src/assets/plasmazones/ with the listed filename. No code edit needed.
Install
Packages for Arch, Fedora, openSUSE and Nix, a portable tarball for immutable systems, or a source build. Needs Plasma 6.7+ on Wayland.
Arch Linux (AUR)
yay -S plasmazones-binFedora (COPR)
sudo dnf copr enable fuddlesworth/PlasmaZonessudo dnf install plasmazonesAll install methods → openSUSE, Nix, portable tarball, source build, requirements, and the post-install step.
Galleries
Every built-in, rendered from the same metadata the daemon reads at runtime.
- Layouts → 26 built-in layouts with live-rendered SVG thumbnails, grouped by aspect ratio. The snapping mode's vocabulary.
- Autotile algorithms → 27 tiling algorithms grouped by family, with supported parameters and stateful flags.
- Scrolling → How the strip works, plus the three bundled column templates and the Meta+Alt shortcut family.
- Overlay shaders → 27 GLSL overlays across 6 categories, with tags and parameter counts.
- Surface shaders → 24 per-window packs: blur and glass, border families, ambience, and focus treatments.
- Animations → 94 transition packs for window open, close, minimize, tab switch, and desktop change.
Learn
- Getting started → A first-run tour from verifying the install to snapping your first window.
- Keyboard shortcuts → Default bindings and how to rebind each one.
- Coming from FancyZones → Feature-by-feature map for the PowerToys → Plasma jump.
Extend it
Layouts, algorithms, scrolling templates, and all three shader families are user-extensible. Custom content goes in ~/.local/share/plasmazones/ and hot-reloads on save.
- Shader authoring guide → GLSL 450 uniform contract, metadata schema, audio reactivity, multipass.
- Tiling algorithm guide → The pluau standard library, the sandbox contract, metadata, hot-reload.
Advanced
- D-Bus scripting → 17 interfaces on org.plasmazones, with recipes and signal watching.
- Troubleshooting → Daemon won't start, zones not appearing, support reports.
- Changelog → Every tagged release with its full notes, mirrored from the project's CHANGELOG.md.
Built on Phosphor
Every major subsystem is its own library. Fixes land once and reach every consumer, and third-party code can depend on only the pieces it needs.
phosphor-zonesphosphor-tilesphosphor-snap-enginephosphor-tile-enginephosphor-scroll-enginephosphor-enginephosphor-placementphosphor-layout-apiphosphor-animationphosphor-rulesphosphor-shadersphosphor-surfacephosphor-renderingphosphor-waylandphosphor-layerphosphor-surfacesphosphor-overlayphosphor-shell-patternsphosphor-compositorphosphor-shortcutsphosphor-identityphosphor-screensphosphor-workspacesphosphor-configphosphor-fsloader