github fuddlesworth/PlasmaZones v2.3.0
PlasmaZones v2.3.0

latest releases: v3.1.1, v3.1.0, v3.0.17...
3 months ago

PlasmaZones v2.3.0

Added

  • Stable EDID-based screen identifiers: All screen identification now uses stable EDID-based IDs (e.g., LG Electronics:LG Ultra HD:115107) instead of connector names (DP-2). Monitors survive replug/reboot without losing layout assignments.
  • Per-screen layout filtering: Layout cycle shortcuts, layout picker popup, and zone selector now filter layouts based on the focused screen's mode. Snapping screens only show zone layouts; autotile screens only show tiling algorithms.
  • Per-screen layout locking: Lock the current layout or tiling algorithm per screen/desktop/activity context. Prevents accidental changes from layout cycling, zone selector, or keyboard shortcuts. Toggle with Meta+Ctrl+L shortcut. OSD notification shows lock/unlock state.
  • Per-mode context-aware locking: Locking is mode-aware — locking on a snapping screen locks the zone layout, locking on an autotile screen locks the tiling algorithm. Each screen/desktop combination has independent lock state.
  • Shader parameter locking: Lock individual shader parameters in the editor to preserve their values during randomize. Locked parameters show a lock icon and are excluded from random generation.
  • Quick Layout slot labels: KCM now shows "Quick Layout 1" / "Quick Tiling 1" instead of raw shortcut keys (Meta+Alt+1). Shortcut key shown as secondary text.
  • Hot reload for shaders: System and user shaders reload automatically on file changes.

Fixed

  • Snap assist sending windows to wrong monitor: On dual-monitor setups sharing the same layout, zones occupied on one screen appeared occupied on the other. Empty zone detection is now per-screen.
  • Cross-screen drag not clearing snap/float state: Dragging a snapped window to a different monitor now clears the zone assignment and pre-tile geometry. Float toggle no longer restores to the original monitor.
  • Window restore unsnapping on cross-screen restore: Windows persisted on a secondary monitor would immediately unsnap after restore. The daemon now decides whether to unsnap based on its own assignment state.
  • Snap assist flashing during rapid layout cycling: Snap assist continuation now runs after stagger animations complete, with a generation counter to invalidate stale callbacks from previous layouts.
  • Zone selector showing on autotile-managed screens: The zone selector popup now correctly skips screens in autotile mode.

Changed

  • Screen ID migration: 34+ files refactored to use EDID-based screen IDs consistently across the entire effect↔daemon D-Bus boundary, autotile engine, snap engine, and window tracking service.
  • Shader categories from metadata: Removed hardcoded category translations — category names come directly from shader metadata.json.
  • German translations: All three domains 100% complete (KCM: 529, Editor: 449, Daemon: 61).

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

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

KDE Neon / Debian-based:

sudo dpkg -i plasmazones_2.3.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.3.0-1.fc43.x86_64.rpm

openSUSE Tumbleweed (manual RPM):

sudo zypper install plasmazones-2.3.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.3.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

Don't miss a new PlasmaZones release

NewReleases is sending notifications on new releases.