PlasmaZones v3.0.4
Fixed
- Blank-class windows restored into each other's saved zones (#461): a window with a blank or whitespace-only KWin class produced a
" "app identifier that became a live key in the snap restore queue, so unrelated blank-class windows consumed each other's saved zones. App identifiers are now normalized and validated — corrupt keys are rejected at the persist site and dropped by the session loader, which also discards pre-3.0"resourceName resourceClass"keys left over from an upgrade. - Maximized windows ballooning when autotiled (#461): a user-maximized window kept its
MaximizeFullstate through the autotilemoveResize, so KWin re-asserted the maximized geometry and the reactive centering loop compounded it into runaway growth. The tile path now clears maximize state before placing the window, and the desktop-switch restore path clears it too. - Per-context disable ignored by auto-snap and keyboard snap (#461): the interactive drag and autotile paths honored the per-monitor, per-desktop, and per-activity disable lists, but snap-on-open and the keyboard snap-to-zone shortcut did not, so windows still snapped on contexts the user had disabled. Both paths — and the float toggle — now gate on the disable lists.
- Windows stayed tiled after switching to an autotile-disabled desktop: the desktop-switch handler never restored windows on the desktop being switched to, so arriving on an autotile-disabled desktop left its windows tiled and borderless. The handler now runs a per-window restore pass for the arrived-at desktop.
- Confusing new-window placement toggle labels (#461): disabling "New windows to last zone" did not stop windows returning to zones — that behavior is governed by "Restore zones on login", whose title implied it applied only at login. Both toggles were retitled to describe what they actually do.
- Zone geometry not clamped to the screen (#461): gap math could produce a zone rectangle extending past the screen edge when fed malformed layout data.
applyGapsToZoneGeometrynow clamps the gapped rectangle to the screen, and resolved snap placements are logged at INFO so geometry reports are diagnosable. - KWin effect missing on NixOS (#481): the KWin effect plugin's IID embeds KWin's exact upstream version, and KWin refuses to load an effect whose IID does not match the running compositor — even across patch releases. The flake's
nixosModules,homeManagerModules, andoverlaybuilt PlasmaZones against the flake's own pinnednixpkgs, so on a rolling NixOS system whose KWin had moved pastflake.lockthe effect's IID no longer matched and KWin silently dropped it, leaving PlasmaZones absent from System Settings → Desktop Effects. The module and overlay now build against the consumer's nixpkgs, so the effect is always compiled against the KWin the user actually runs — matching the exact-version pinning the RPM, Debian, and Arch packages already do. - Support report crashed on Qt 6.11+ (#481): qttools'
qdbus/qdbus6segfaults at process exit on Qt 6.11+ (a static-destruction-order crash inregisterComplexDBusType'sQMetaTypecleanup) when introspecting an object that exposes complex D-Bus types, which/PlasmaZonesdoes. The crash could discard the buffered support report before it was printed.plasmazones-reportnow prefersbusctl— unaffected, and present on every systemd distro — overqdbus, and the bug-report template recommends thebusctlinvocation instead ofqdbus6.
Installation
Arch Linux (AUR):
yay -S plasmazones # or plasmazones-binArch Linux (manual):
sudo pacman -U plasmazones-3.0.4-*-x86_64.pkg.tar.zstKDE Neon / Debian-based:
sudo dpkg -i plasmazones_3.0.4-*_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora (COPR):
sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazonesFedora (manual RPM):
# Fedora 43
sudo dnf install plasmazones-3.0.4-*.fc43.x86_64.rpm
# Fedora 44
sudo dnf install plasmazones-3.0.4-*.fc44.x86_64.rpmopenSUSE Tumbleweed (manual RPM):
sudo zypper install plasmazones-3.0.4-*.x86_64.rpmopenSUSE Tumbleweed (OBS):
sudo zypper addrepo https://download.opensuse.org/repositories/home:fuddlesworth/openSUSE_Tumbleweed/home:fuddlesworth.repo
sudo zypper refresh
sudo zypper install plasmazonesUniversal Linux (AppDir):
For Fedora Atomic, Steam Deck, or non-root user installation:
tar xzf plasmazones-3.0.4-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.shNixOS (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