Skip to content

Releases: fuddlesworth/PlasmaZones

PlasmaZones v2.5.1

31 Mar 01:36
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.5.1

Added

  • Independent autotile sticky window handling: Separate setting for how autotiling handles sticky windows (on all desktops), independent from the snapping setting. Configurable in Tiling > Behavior.

Fixed

  • Editor shader crash: Null pointer dereference in ZoneShaderNodeRhi::render() when switching between multipass shaders — missing null check on m_multiBufferTextures[i].
  • Editor undo crash: Guard m_undoController dereferences in setCurrentShaderParams(), setShaderParameter(), resetShaderParameters(), and switchShader() to match existing pattern.
  • Arch packaging: PKGBUILDs referenced kbuildsycoca.hook and plasmazones-refresh-sycoca as standalone source files instead of using in-tree paths, causing makepkg to fail with "cannot stat" errors.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.5.1-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.5.1-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.5.1-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.5.1-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.5.1-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.5.0

30 Mar 18:02
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.5.0

Added

  • Scripted tiling algorithms ([#256], [#259]): All 24 tiling algorithms are now JavaScript, running in a sandboxed QJSEngine with hot-reload. The 15 former C++ algorithms have been converted to JS with identical behavior. Six new algorithms added: Cascade, Corner Master, Floating Center, Horizontal Deck, Paper, and Stair. Custom user algorithms are loaded from ~/.local/share/plasmazones/algorithms/.
  • Dwindle (Memory) algorithm: Dwindle variant with a persistent split tree — resizing one tile does not affect others. Split positions survive window close/reopen.
  • Multi-compositor support ([#261]): Custom pz-layer-shell QPA plugin replaces the LayerShellQt dependency. PlasmaZones now works on any Wayland compositor with zwlr_layer_shell_v1 support (Hyprland, Sway, Wayfire, niri, COSMIC, river, labwc).
  • Vulkan rendering backend ([#264]): Optional Vulkan backend for zone overlay rendering with automatic fallback to OpenGL on unsupported hardware or driver crash. User-selectable in Settings → General.
  • New Layout / New Algorithm wizards ([#263]): Guided dialogs for creating zone layouts from templates and tiling algorithms from a starter script, accessible from the settings app.
  • Layout filter bar ([#265]): Replace hardcoded layout groups with configurable group-by, sort-by, and filter controls in the layout list.
  • Disable per virtual desktop / activity ([#260]): Disable PlasmaZones on specific virtual desktops or activities per screen. Overlay hides automatically on disabled contexts.
  • Settings UX polish ([#268], [#269]): Two-line description rows, collapsible card sections, consolidated footer bar with Apply/Reset/Defaults, sidebar page badges, inline toggle switches replacing disable checkboxes.
  • Single-instance settings app ([#270]): plasmazones-settings is now single-instance via D-Bus. Launching it again raises the existing window and navigates to the requested page (--page <name> / -p <name>).
  • Unsaved changes confirmation: Settings app prompts before closing with unsaved changes; Reset and Defaults buttons require confirmation.
  • Master indicator dots: Algorithm grid cards show dots indicating which zones are master positions.
  • Memory indicator icon: Stateful algorithms (Dwindle Memory) show a persistence icon in the algorithm selector.
  • Per-algorithm settings storage: Split ratio, master count, and other parameters are saved per-algorithm rather than globally.
  • Algorithm import and open folder: Import .js algorithm files and open the user algorithm directory from the tiling settings page.
  • Algorithm capability grouping: Tiling algorithms grouped by capability (Built-in / Extras / Custom) in the settings UI.
  • D-Bus zoneIds array: Window state responses now include the full list of zone IDs a window occupies.

Changed

  • LayerShellQt replaced: Custom pz-layer-shell QPA plugin is now the sole layer-shell backend. Packagers: drop layer-shell-qt build dependency, add qt6-wayland and wayland-scanner.
  • Config keys centralized ([#266]): All config group names and key strings extracted to ConfigDefaults accessors — no more inline string literals in settings code.
  • Settings page IDs renamed: snap-* / tile-* page IDs renamed to snapping-* / tiling-* for consistency.
  • Algorithm registry: Hardcoded algorithm ID constants replaced with a data-driven registry. Algorithm metadata (name, capabilities, flags) comes from JS @tag annotations.
  • README streamlined: Detailed algorithm table, shader table, D-Bus API reference, and project structure moved to the wiki. README reduced from 742 to 593 lines with summary + wiki links.

Removed

  • LayerShellQt dependency: No longer required — replaced by pz-layer-shell QPA plugin.
  • C++ tiling algorithm implementations: All algorithms are now JavaScript. The C++ implementations have been removed.
  • Legacy migration code: Removed all config key migration and backward-compatibility shims from settings save/load paths.
  • kcfg/kcfgc schema files: Unused KConfig schema files removed.
  • Accent stripe feature: Removed from SettingsCard component.

Fixed

  • Window restore on daemon restart: Bypass QSettings cache in loadState so window-to-zone mappings are read fresh from disk after daemon restart ([#268]).
  • Multipass shader rendering: Fix ping-pong buffer handling in overlay renderer for multi-pass shaders.
  • Editor shader menu crash: Rewrite shader submenu to prevent Qt 6 finalizeExitTransition use-after-free when selecting a shader while the menu is animating closed.
  • Editor context menu crash: Use shared context menu instance to prevent QQmlData use-after-free when zones update while the popup is open.
  • NVIDIA Vulkan crash: Suppress spurious shutdown crash on NVIDIA drivers and auto-fallback to OpenGL.
  • NVIDIA EGL crash in editor: Guard shader preview reload against EGL context loss on NVIDIA.
  • Layout picker dimmed backdrop: Remove unintended dimmed background overlay from the fullscreen layout picker.
  • CAVA crash suppression: Suppress misleading "CAVA Crashed" error message caused by process-group SIGTERM during daemon shutdown.
  • Shader preview bindings: Restore reactive label and wallpaper texture bindings in the editor shader preview.
  • Settings dirty flag on navigation: Prevent spurious unsaved-changes prompts when switching between settings pages.
  • Slider snap-back bug: Fix master count control snapping back to previous value; replace SpinBox with SettingsSlider.
  • Aspect ratio menu: Replace flat menu items with nested submenu for aspect ratio presets.
  • Layer-shell window recovery: Recover shader preview when the Wayland LayerSurface is unexpectedly destroyed.

Migration Notes (Packagers)

  • Drop layer-shell-qt / liblayershellqtinterface-dev build dependency
  • Add qt6-wayland / qt6-wayland-dev build dependency
  • Add wayland-scanner build dependency (usually in wayland-devel)
  • Add vulkan-headers and vulkan-loader build dependencies (optional, for Vulkan backend)

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.5.0-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.5.0-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.5.0-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.5.0-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.5.0-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.4.7

27 Mar 16:52
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.4.7

Added

  • Center-distance zone selection for overlapping zones ([#258]): When zones overlap (e.g. quadrants + halves + fullscreen), the zone whose center is closest to the cursor now wins instead of always picking the smallest zone. This lets users reach background zones by dragging toward their center — matching the FancyZones behavior. The multi-zone span path is unaffected, preserving the [#211] fix.

Fixed

  • Window picker inserts unmatchable values ([#251]): "Pick from running windows" in App Rules and Exclusions inserted raw X11 window class format (e.g. "signal signal") instead of the normalized form used for matching ("signal"). Manually typing the name worked; using the picker did not.
  • Keyboard shortcuts move excluded windows ([#251]): Move, Push, and Swap keyboard shortcuts ignored exclusion rules, moving the window behind an excluded app instead of doing nothing. All navigation shortcuts now check exclusions consistently.
  • Drag-out unsnap doesn't clear persisted zone ([#251]): Dragging a window out of its zone and closing it would still persist the zone, causing the window to snap back on reopen. The floating state flag was not always set due to an overly strict guard condition.
  • D-Bus zone detection missing geometry recalculation: detectMultiZoneAtPosition did not call recalculateZoneGeometries before detection, potentially using stale zone coordinates.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.4.7-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.4.7-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.4.7-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.4.7-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.4.7-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.4.6

27 Mar 15:32
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.4.6

Added

  • Plasma Sigil shader: Animated energy sigil based on the PlasmaZones icon with glowing rune effects.

Fixed

  • System Settings crash when opening PlasmaZones KCM: The KCM linked the entire plasmazones_core library (with LayerShellQt, PlasmaActivities, 21 static initializers) just to read a version string. When the daemon was not running this caused heap corruption and SIGABRT during QML binding creation. Replaced with a compile-time version define — the KCM no longer loads the core library at all.
  • Editor context menu crash on zone updates: Use shared context menu to prevent QQmlData use-after-free crash when zones update while the menu is open.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.4.6-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.4.6-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.4.6-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.4.6-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.4.6-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.4.5

26 Mar 18:40
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.4.5

Added

  • SVG support for shader textures: SVG/SVGZ files can now be used as user texture parameters in shaders, rasterized at configurable resolution (64–4096px, default 1024) via QSvgRenderer. An inline resolution spinbox appears in the shader settings UI when an SVG is selected.

Fixed

  • Exclusions UI: can't add new entries ([#251]): The QML JS array mutation pattern (slice() + push() + reassign) silently fails in Qt 6.10 due to QStringList↔JS Array round-trip type confusion. Replaced with Q_INVOKABLE C++ methods that modify the QStringList directly and emit proper NOTIFY signals.
  • Excluded app keyboard shortcuts: no feedback ([#251]): Snap-to-zone shortcuts blocked by exclusion rules now emit OSD feedback instead of failing silently.
  • Neon Phantom shader white-out: Reduced brightness multipliers and widened energy smoothstep range to prevent the effect from blowing out to featureless white at high energy accumulation.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.4.5-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.4.5-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.4.5-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.4.5-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.4.5-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.4.3

26 Mar 16:11
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.4.3

Fixed

  • Identical monitors showing as duplicates in settings ([#252]): Two monitors with the same EDID (manufacturer/model/serial) got the same screen ID, causing the settings UI to show the primary monitor twice and tiling/snapping to only work on one monitor. Screen IDs now append /ConnectorName when duplicates are detected, with backward-compatible fallback matching for saved configs.
  • App-to-Zone rules not working ([#254]): Rule matching used raw substring comparison that failed when appId format differed from user input (e.g. "firefox" vs "org.mozilla.firefox"). Replaced with appIdMatches() — segment-aware dot-boundary matching that handles both directions and partial last-segment prefixes.
  • Exclusions ignored by auto-snap and keyboard shortcuts ([#254]): The exclusion settings interface existed but was never checked. Added exclusion gates in both the auto-snap chain (resolveWindowRestore) and keyboard shortcut path (snapToZoneByNumber).
  • Unsnapped windows re-snap on reopen ([#254]): Manually unsnapping a window didn't clear its pending restore entry, so closing and reopening it snapped it back. Now consumes the pending entry on unsnap (multi-instance safe).
  • Drag-out unsnap doesn't restore window size ([#254]): The geometry validation path didn't pass the release screen ID, causing cross-screen coordinate validation to fail silently. Also fixed premature pre-tile geometry cleanup that prevented later float-toggle restore.
  • Render node use-after-free during hot-reload: The scene graph render thread could dereference a dangling QQuickItem pointer after shader hot-reload when bufferFeedback (ping-pong) was active. Added atomic invalidation flag with acquire/release ordering.

Added

  • Ember Trace shader: Fractal fire patterns via ping-pong feedback buffer — the first shader to use the bufferFeedback feature. Zone borders emit flames that spiral inward via feedback zoom, with 7 layered visual systems including reaction-diffusion-like dynamics, curl-noise advection, and per-band audio (bass eruption shockwaves, mids feedback phase shift, treble turbulent mixing).
  • Neon Phantom shader: Neon-lit cyberpunk zone overlay.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.4.3-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.4.3-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.4.3-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.4.3-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.4.3-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.4.2

25 Mar 22:32
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.4.2

Fixed

  • Multi-zone span pulls in background zones ([#249]): Spanning adjacent sub-zones (e.g. zones 7 & 9) while a larger zone existed underneath incorrectly included the background zone, making the window much larger than intended. Fixed both proximity-snap and paint-to-span code paths to exclude background/overlay zones from the span.
  • Settings UI not refreshing when daemon starts from toggle: UI data now reloads when the daemon is started via the settings toggle.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.4.2-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.4.2-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.4.2-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.4.2-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.4.2-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.4.1

25 Mar 19:30
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.4.1

Fixed

  • Edge threshold resets to 100px ([#237]): The UI allowed up to 500px but the C++ setter/loader still clamped to 100. Values above 100 were silently clamped back on save. Also fixed the .kcfg schema max to match.
  • Per-screen autotile split ratio using wrong default: Per-screen overrides fell back to the algorithm default (0.6) instead of the config default (0.5) when no override was stored.
  • Shortcuts KCM shows "plasmazonesd" with no icon: Added KGlobalAccel component desktop file and restored setApplicationDisplayName/setWindowIcon lost during KAboutData removal.
  • Retile shortcut conflicts with Spectacle: Changed default from Meta+Shift+R (Spectacle rectangular region capture) to Meta+Ctrl+R.

Changed

  • ConfigDefaults is now the single source of truth for all setting defaults, min/max bounds, and shortcut defaults. Previously duplicated across configdefaults.h, settings.h, setters.cpp, loadsave.cpp, perscreen.cpp, QML pages, .kcfg, and tests — now every consumer references ConfigDefaults. Changing a bound or default requires editing exactly one place.
  • Settings bounds exposed to QML via SettingsController constant Q_PROPERTYs. All QML from:/to: values reference the controller instead of hardcoded literals.
  • Removed dead code: Unused ZoneSelectorCard.qml.
  • Added FilterLayoutsByAspectRatio to .kcfg: Was implemented in code but missing from the schema.
  • Editor defaults consolidated: Previously hardcoded in loadsave.cpp, now in ConfigDefaults.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.4.1-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.4.1-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.4.1-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.4.1-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.4.1-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.4.0

25 Mar 15:28
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.4.0

Added

  • KZones layout import ([PR #244]): Import zone layouts from KZones configuration files.
  • Aspect ratio layouts ([PR #242]): Auto-detect monitor aspect ratio, editor selector for ratio-specific layouts, and filter setting for the layout grid.
  • Portable Wayland build ([PR #231]): USE_KDE_FRAMEWORKS=ON/OFF CMake option. Pluggable backends for config (IConfigBackend), shortcuts (IShortcutBackend), wallpaper (IWallpaperProvider), and i18n (Qt Linguist). Runs on non-KDE Wayland compositors.
  • Standalone settings app ([PR #238]): plasmazones-settings with KCM-style sidebar drill-down, subpages, visual monitor selector, search, keyboard shortcuts overlay, unsaved-changes indicator, and DPI-aware animations. Meta+Shift+P shortcut to launch.
  • D-Bus API audit ([PR #246]): New CompositorBridge, Control, and Shader interfaces. Convenience methods and full API specification. Unit tests for all new methods.
  • Arch Drift branded shader: Terminal rain columns, isometric chevron grid, traveling data packets, and CRT scan lines. 95-vertex SDF polygon from the official Crystal SVG.
  • EndeavourOS Drift branded shader: Constellation network background with 24 dots on Lissajous orbits, warm gradient wash, and tri-sail SDF logo (58 vertices total).
  • Wind currents + sails shader: Replaced constellation network with flowing wind current effect.

Changed

  • KWin effect reduced to thin interface layer ([PR #245]): Effect code is now a minimal bridge between KWin and the daemon over D-Bus. All tiling/snapping logic lives in the daemon.
  • Removed unused LayoutType enum: Cleaned up Layout model — the type field was never used.
  • Dropped IConfigBackend interface indirection: QSettingsConfigBackend used directly after KConfig removal stabilized.
  • Removed KConfig dependency from test suite: Tests use the standalone config backend.
  • Removed daemon toggle from KCM: Moved DaemonController to src/common.

Fixed

  • Synchronous D-Bus calls freeze compositor: Eliminated blocking D-Bus calls in the KWin effect that caused compositor hangs.
  • Qt6 SIGSEGV in context menu: Moved context menu outside Loader to avoid crash.
  • Qt6 crash in aspect ratio submenu: Flattened submenu to avoid nested popup crash.
  • Tooltip flickering on layout cards in Flow layout ([#235]): Fixed hover handler conflicts.
  • Zone previews clamped for fixed-geometry layouts: Preview rendering no longer overflows card bounds.
  • Edge threshold max increased: From 100px to 500px.
  • Settings live lock sync and screenId resolution: OSD lock state now syncs immediately.
  • EndeavourOS Drift GLSL type errors: Fixed vec2/float mismatches and wired dead parameters.
  • Shader file watcher dropped after cmake install: Re-watches directories after inode replacement.
  • Layout card icon hover flicker ([#235]): Replaced HoverHandler with MouseArea to fix grab conflicts.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.4.0-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.4.0-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.4.0-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.4.0-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.4.0-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones

PlasmaZones v2.3.16

22 Mar 00:49
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

PlasmaZones v2.3.16

Fixed

  • Layout card button flicker on hover ([#235]): The Auto-assign and Visibility toggle buttons flickered when hovered. Two cooperating causes: (1) the right-anchored Row reflowed leftward when buttons toggled visible:, shifting button positions and destabilizing hover; (2) ToolTip.visible: hovered with no delay opened a popup that stole pointer focus on some compositors. Wrapped each ToolButton in a fixed-size Item to eliminate geometry reflow and added ToolTip.delay to break the feedback loop.
  • Zone selector grid ignoring columns/rows at fixed preview sizes: The maxRows setting was only applied when preview size was "Auto". Fixed to apply for all size modes in Grid layout.

Changed

  • Improved zone selector edge scrolling: Widened auto-scroll trigger zone from 32px to 48px and increased max scroll speed by 75% for more responsive scrolling during window drag.
  • Zone selector scroll D-Bus API: Added selectorScrollWheel D-Bus method and applyScrollDelta QML function for programmatic scrolling. Infrastructure is wired and ready for when KWin exposes pointer axis events to effects.

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-2.3.16-1-x86_64.pkg.tar.zst

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.3.16-1_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

sudo dnf install plasmazones-2.3.16-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.3.16-1.x86_64.rpm

openSUSE Tumbleweed (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:ilFrance/openSUSE_Tumbleweed/home:ilFrance.repo
sudo zypper refresh
sudo zypper install plasmazones

Community-maintained package by ilFrance

Universal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:

tar xzf plasmazones-2.3.16-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (standalone):
Download plasmazones.nix from the release assets, then:

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage ./plasmazones.nix {})
];

Post-Installation

systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones