PlasmaZones v3.1.1
Added
- Route a window to a monitor or virtual desktop: two new window-rule actions, RouteToScreen and RouteToDesktop, open a matched window on a specific monitor or virtual desktop (or both) and can snap it into a zone there. On its own a rule can just move the window to that monitor. This restores the per-monitor app-to-zone assignment from v3 and generalizes it to "open app X on context Y" for both snapping and tiling (#691).
- Autotile capability badges in layout previews: the shared preview cards used by the overlay picker, the zone selector, and the settings layout surfaces now show the autotile capability badges, matching the Layouts page (#688).
Changed
- Curated default layout and algorithm visibility on fresh installs: the plain
gridautotile algorithm is hidden by default because the resize-awarealigned-gridsupersedes it, and theWidesnapping layout is now shown by default. This only seeds on a fresh config, so existing users keep their current visibility (#687).
Removed
- The "is one of" match operator: this window-rule match operator was unusable in the editor and has been removed (#691).
Fixed
- Autotiling failed to load any algorithm in non-C locales: scripted algorithms compile through Luau, which parsed numbers with the system locale, so a regional locale with a decimal comma broke every algorithm, including the shared prelude, and the UI reported "No autotile algorithms available". LC_NUMERIC is now pinned to "C" while Luau compiles and runs (#692, discussion #690).
- Per-monitor app assignments stopped working after upgrading from v3: the v3 to v4 migration dropped the legacy per-monitor
targetScreenpin and left X11 two-token patterns (chromium chromium) that never matched the normalized app id. The migration now carries the pin across as a RouteToScreen action and normalizes the pattern (#691, discussion #686). - Quick Shortcuts applied the wrong layout:
Meta+Alt+#applied whatever layout sat at that position in Priority order instead of the layout bound to that quick slot (#684). - Windows landed in the wrong zones during fast rotation: holding the rotate shortcut applied superseded geometry updates after the daemon had already moved on, so windows ended up in stale zones. The effect now drops superseded geometry ticks (#689).
restoreWindowsToZonesOnLogindid nothing: the toggle round-tripped through config, D-Bus, and the UI but its value was never read, so a window snapped at logout always restored to its zone. It is now honored on login (#685).- Per-context gap and padding overrides were ignored for tiled windows: window-rule gap overrides applied only to snapped windows, not autotiled ones. They now apply to both (#685).
- Snapping ignored some window-rule exclusions: window-class, title, and minimum-size exclusion conditions were not honored on the snapping path. The full window query is now consulted (#685).
- Layout names were blank in the overlay previews: the picker, OSD, and zone-selector preview cards read the old
namekey instead ofdisplayName, so the name label rendered empty. They now readdisplayName(#688). - The layout dropdown highlight washed out the badges: the layout combo box highlighted the active row with a full opaque band that left the category, capability, and aspect-ratio badges illegible. It now uses the same subtle tint as the rest of the app (#693).
Installation
Arch Linux (AUR):
yay -S plasmazones # or plasmazones-binArch Linux (manual):
sudo pacman -U plasmazones-3.1.1-*-x86_64.pkg.tar.zstKDE Neon / Debian-based:
sudo dpkg -i plasmazones_3.1.1-*_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 44
sudo dnf install plasmazones-3.1.1-*.fc44.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.1.1-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 (without flakes):
Build this tag's source against your host's pkgs (no release asset needed):
# configuration.nix
environment.systemPackages = [
(pkgs.callPackage
"${builtins.fetchTarball "https://github.com/fuddlesworth/PlasmaZones/archive/v3.1.1.tar.gz"}/packaging/nix/package.nix"
{ version = "3.1.1"; })
];Post-Installation
systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones