SkillAgentSearch skills...

PlasmaZones

FancyZones-style window tiling for KDE Plasma

Install / Use

/learn @fuddlesworth/PlasmaZones
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center">

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.

CI GitHub release AUR COPR <br> License: GPL-3.0 Wayland

</div>

Table of Contents


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
<p align="center"> <img src="docs/media/videos/keyboard-nav.gif" alt="Keyboard Navigation" /> </p>

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
<p align="center"> <img src="docs/media/videos/editor.gif" alt="Layout Editor" /> </p>

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

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×0 under the Size & Position tab. This removes the constraint so PlasmaZones can tile the window at any size.

<p align="center"> <img src="docs/media/videos/autotiling.gif" alt="PlasmaZones Autotiling" width="800"> </p>

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.

<p align="center"> <img src="docs/media/screenshots/layout-popup.png" alt="Layout Picker" /> </p>

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

View on GitHub
GitHub Stars177
CategoryDevelopment
Updated1h ago
Forks4

Languages

C++

Security Score

100/100

Audited on Mar 23, 2026

No findings