PlasmaZones
Zone-based window tiling for KDE Plasma.
Define named regions on your screen, drag windows into them, and get a layout that actually fits the way you work. Built on the Phosphor library suite; scriptable, themeable, Wayland-native.
Features
Hold a modifier while dragging any window. Zones light up, drop to fill. 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.
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.
Assign different layouts to each monitor, virtual desktop, and Plasma activity. Quick-layout slots bind Meta+Alt+1..9 for fast layout switches.
Subdivide a physical monitor into 2–10 virtual screens with drag-to-resize boundaries. Each gets its own layout, autotile state, and settings. Swap with Meta+Ctrl+Shift+arrows.
BSP, spiral, master+stack, Krohnkite-style deck stacking, plus 21 more. Runs in a sandboxed QJSEngine. Per-side inner and outer gaps, smart-gaps when only one window is tiled, hot-reload for custom JS in ~/.local/share/plasmazones/algorithms/.
Zone highlights, snap previews, and drag ghosts render through a multipass ShaderEffect. 26 bundled shaders (audio-reactive, procedural, distro-themed) plus your own in ~/.local/share/plasmazones/shaders/.
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 — 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
Arch Linux (AUR) → Prebuilt binary, or plasmazones for the source package.
yay -S plasmazones-binFedora (COPR) → Official COPR repo.
sudo dnf copr enable fuddlesworth/PlasmaZonessudo dnf install plasmazonesopenSUSE Tumbleweed (OBS) → Community-maintained by ilFrance.
sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.reposudo zypper refreshsudo zypper install plasmazonesNix → Or wire the flake into your inputs.
nix profile install github:fuddlesworth/PlasmaZonesPortable tarball → Lands in ~/.local. Best for Fedora Atomic or no-root environments.
curl -L -o plasmazones.tar.gz \ https://github.com/fuddlesworth/PlasmaZones/releases/latest/download/plasmazones-linux-x86_64.tar.gztar xzf plasmazones.tar.gzcd plasmazones-linux-x86_64 && ./install.shBuild from source → Needs Qt 6.6+, KF6, CMake 3.16+, a C++20 compiler, wayland-scanner.
git clone https://github.com/fuddlesworth/PlasmaZones.gitcd PlasmaZonescmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usrcmake --build build -j$(nproc)sudo cmake --install buildGalleries
Every built-in, rendered from the same metadata the daemon reads at runtime.
- Autotile algorithms → 25 tiling algorithms grouped by family, with supported parameters and stateful flags.
- Layouts → 26 built-in layouts with live-rendered SVG thumbnails, grouped by aspect ratio.
- Shaders → 26 GLSL overlays across 6 categories, with tags and parameter counts.
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
PlasmaZones has two first-class extension points. Custom content goes in ~/.local/share/plasmazones/ and hot-reloads.
- Shader authoring guide → GLSL 450 uniform contract, metadata schema, audio reactivity, multipass.
- Tiling algorithm guide → JavaScript sandbox contract, metadata tags, built-in helpers, hot-reload.
Advanced
- D-Bus scripting → 13 interfaces on org.plasmazones, with recipes and signal watching.
- Troubleshooting → Daemon won't start, zones not appearing, support reports.
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-enginephosphor-placementphosphor-layout-apiphosphor-animationphosphor-shadersphosphor-renderingphosphor-waylandphosphor-layerphosphor-surfacesphosphor-overlayphosphor-shell-patternsphosphor-compositorphosphor-shortcutsphosphor-identityphosphor-screensphosphor-workspacesphosphor-configphosphor-fsloader