PlasmaZones
FancyZones-style window tiling for KDE Plasma
Install / Use
/learn @fuddlesworth/PlasmaZonesREADME
PlasmaZones
<img src="icons/hicolor/scalable/apps/plasmazones.svg" alt="PlasmaZones" width="96">Window zone management for Wayland compositors
Define zones on your screen. Drag windows into them. Done.
</div>Table of Contents
- How It Works
- Features
- Installation
- Quick Start
- Keyboard Shortcuts
- Configuration
- Troubleshooting
- D-Bus API
- Project Structure
- Contributing
- Support
How It Works
Hold Alt (or your configured modifier) while dragging a window. Zones light up. Drop the window into one and it resizes to fill that zone.
<p align="center"> <img src="docs/media/videos/drag-snap.gif" alt="Drag and Snap" /> </p>Features
Window Snapping
Snapping
- Drag with modifier key or mouse button to snap windows to zones
- Always-active mode: zones activate on every drag without a modifier
- Enable/disable snapping globally
- Snap all visible windows to zones at once
- Auto-assign windows to first empty zone per layout
- Snap to multiple zones at once
- App-to-zone rules: auto-snap apps to specific zones on launch
Movement
- Move windows between zones with keyboard shortcuts
- Swap windows between zones directionally
- Rotate windows clockwise/counterclockwise through zones
- Push window to first empty zone
- Restore original size on unsnap
- Per-window floating toggle
- Staggered animations with elastic and bounce easing curves
Focus & Cycling
- Focus adjacent zones without mouse
- Cycle through windows stacked in the same zone
Layout Editor
- Visual canvas for drawing and resizing zones
- 12 built-in templates (columns, grids, fibonacci, master-stack, focus+stack, and more)
- Undo/redo, copy/paste, cut, duplicate
- Split zones horizontally or vertically
- Grid and edge snapping
- Fill available space / auto-expand
- Fullscreen editing mode
- Per-zone colors and styling
- Restrict layouts to specific screens, desktops, or activities
Autotiling
Enable autotiling per-screen and windows arrange themselves using one of 11 algorithms:
| Algorithm | Description | |-----------|-------------| | Master+Stack | Main window with a stack beside it | | Centered Master | Main window centered, stacks on both sides | | Three Column | Even three-column split | | Columns | Equal vertical columns | | Rows | Equal horizontal rows | | Grid | Automatic grid arrangement | | Dwindle | Recursive halving, alternating direction | | Spiral | Recursive halving in a spiral | | BSP | Binary space partitioning | | Wide | Horizontal main area with stacked columns below | | Monocle | One window at a time, cycle between them |
- Per-screen algorithm selection with independent settings
- Configurable master ratio and master count (separate settings for Centered Master vs Master+Stack)
- Inner and outer gaps with per-side control (top/bottom/left/right)
- Smart gaps — no gaps when only one window is tiled
- Max windows cap — overflow windows float automatically
- Hide title bars on tiled windows, with colored borders
- Window insertion position: end, after focused, or as master
- Focus follows mouse and focus new windows
- Minimized windows float, unminimized windows rejoin tiling
- Per-window floating toggle
- Staggered tiling animations
- Respect window minimum sizes (toggleable) — tiles expand to honor size hints reported by the application
<p align="center"> <img src="docs/media/videos/autotiling.gif" alt="PlasmaZones Autotiling" width="800"> </p>Tip: Some apps enforce a minimum size that prevents tiles from reaching their intended geometry. To fix this, create a KWin Window Rule: System Settings → Window Management → Window Rules → add a rule matching the window class, set Minimum Size to Force
0×0under the Size & Position tab. This removes the constraint so PlasmaZones can tile the window at any size.
Shader Effects
14 built-in GLSL shader effects for zone overlays, including audio-reactive visuals:
| Effect | Description | |--------|-------------| | Aretha Shell | Cyberpunk hex grid with data streams | | Berry Drift | Metaball blobs in berry and violet tones | | CachyOS Drift | Crystalline drift with domain-warped FBM and iridescent glow | | Cosmic Flow | Fractal noise with animated colors | | Liquid Canvas | Wallpaper as a liquid painting with flow distortion | | Magnetic Field | Mouse-reactive field with orbiting particles | | Mosaic Pulse | Audio-reactive stained glass mosaic | | Nexus Cascade | Plasma with distortion, bloom, and chromatic aberration | | Prismata | Prismatic facets with audio-reactive chromatic fracture | | Sonic Ripple | Audio-reactive concentric rings with bass shockwaves | | Spectrum Bloom | Polar contour with frequency-driven shape morphing | | Spectrum Pulse | Audio-reactive neon energy with CAVA integration | | Toxic Circuit | Glowing circuit traces with digital corruption | | Voxel Terrain | Infinite 3D voxel world with neon edges and audio-reactive glow |
Up to 4 custom image textures per shader, plus desktop wallpaper sampling.
<p align="center"> <img src="docs/media/videos/shaders.gif" alt="Shader effects showcase" /> </p>Custom shaders supported — see the Shader Guide on the wiki.
Snap Assist
After snapping a window, an overlay shows the remaining empty zones with thumbnails of other windows. Click a thumbnail to snap it into a zone.
<p align="center"> <img src="docs/media/videos/snap-assist.gif" alt="PlasmaZones Snap Assist" width="800"> </p>Zone Selector
Drag to screen edge to reveal a layout picker. Jump straight to any layout and zone.
<p align="center"> <img src="docs/media/videos/zone-selector.gif" alt="Zone Selector" /> </p>Layout Picker
Press Meta+Alt+Space to open a fullscreen layout picker. Click any layout to switch.
Visual Layout OSD
See a preview of the layout when switching, not just text.
<p align="center"> <img src="docs/media/videos/layout-switch.gif" alt="Cycling layouts with OSD" /> </p>Navigation OSD
Move, focus, swap, rotate, and push actions show a brief overlay with the affected zone numbers.
<p align="center"> <img src="docs/media/videos/navigation-osd.gif" alt="PlasmaZones Navigation OSD" width="800"> </p>Multi-Monitor & Virtual Desktops
- Per-monitor layouts (same or different)
- Per-virtual-desktop layouts
- Per-activity layouts (optional, requires PlasmaActivities)
- Per-monitor zone selector settings
- Per-screen shader selection
- Screen-targeted app-to-zone rules
Settings App
Standalone settings app (plasmazones-settings) with sidebar navigation:
- Overview — Per-screen mode (snapping/tiling) with live context display
- Layouts — Create, duplicate, import/export zone layouts with 26 templates
- Snapping — Activation, zone appearance (colors, opacity, borders, blur, shaders), animations, zone selector, per-monitor/desktop/activity assignments
- Tiling — Per-screen algorithm selection, master ratio/count, gaps, title bar hiding, insertion order, focus behavior, per-monitor/desktop/activity assignments
- General — OSD style, layout switch notifications, global behavior, editor shortcuts
- Exclusions — Window class exclusion lists with interactive picker, minimum size thresholds
On KDE Plasma, a System Settings entry provides version info and a launcher to the settings app.
<p align="center"> <img src="docs/media/videos/settings.gif" alt="PlasmaZones Settings" width="800"> </p>Installation
Requirements
- Any Wayland compositor with layer-shell support
- Qt 6.6+
- LayerShellQt 6.6+
- CMake 3.16+
- C++20 compiler
Optional (for full KDE integration):
- KDE Frameworks 6.6+ (KWin effect, System Settings, KGlobalAccel shortcuts)
- PlasmaActivities (activity-based layouts)
Arch Linux (AUR)
# Binary package (prebuilt)
yay -S plasmazones-bin
# Source package (builds locally)
yay -S plasmazones
Fedora (COPR)
sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones
openSUSE Tumbleweed (OBS)
Community-maintained package by ilFrance:
sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zyppe
Related Skills
node-connect
331.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
331.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
81.6kCommit, push, and open a PR
