Skip to content

PlasmaZones v3.4.8

Choose a tag to compare

@github-actions github-actions released this 02 Sep 21:47
· 20 commits to main since this release
Immutable release. Only release title and notes can be modified.

PlasmaZones v3.4.8

Removed

  • Putting windows back on their virtual desktop after login: PlasmaZones used to send a window that reopened on the wrong virtual desktop back to the one it was recorded on, controlled by Put windows back on their virtual desktop under General → Session restore. In practice it was hard to predict, since it moved windows around on its own while you were still logging in, so it has been taken out along with its setting. Windows now stay on whichever desktop the session puts them on. Rules that route a window to a particular desktop are unaffected. (#1034)

Fixed

  • Dropping a dragged window into the scrolling strip no longer strands it alone on the screen: dropping a window into a new column could end with that window sitting on bare wallpaper and every other strip window scrolled out of sight, because the strip re-centered the new column after the drop and a column wider than about half the screen leaves no room for a neighbour when centered. The strip now lands the column where the drop indicator promised it and scrolls only as far as it takes to show the whole column, so the neighbour you dropped it next to stays on screen. Three related drag problems are fixed with it. Picking a window up could leave the view staring at empty strip space where the picked-up column used to be, so you were aiming the drop at wallpaper. The view now settles over the remaining windows for the whole drag. With focus following the mouse, hovering other windows mid-drag could scroll the strip underneath the cursor, and those focus changes are now ignored until the drag ends. And cancelling a drag with Escape now puts the view back exactly where it was before the drag, unless you scrolled the strip yourself by holding the window at a screen edge, in which case the scrolled position is kept. (#1037)

  • A window could stop returning to its own monitor after a rule moved it to another desktop: when a rule sent a window to a virtual desktop that was not on screen, PlasmaZones used up two of the app's monitor memories instead of one. Another window of the same app could then reopen on the wrong monitor and stay there. (#1034)

  • A window could stop reopening on the monitor it was last used on: closing a floating window could throw away what PlasmaZones remembered about another window of the same app that had not been reopened yet since login. A later window of that app then opened on the wrong monitor. (#1034)

  • A tiled window grows into its new space when it becomes the only one: minimizing or closing the second-to-last window on a tiled monitor hands the survivor the whole screen. Sometimes the survivor kept its old size instead and sat centered with dead margins on either side. PlasmaZones was reading the window's size while the application was still answering the resize request, mistook the old size for a refusal, and then remembered that mistake so the window never recovered. It now waits for the application's answer before deciding anything. The dead margins were also where moving the mouse focused nothing, which is a large part of why focus following the mouse felt broken after rearranging windows. (#1035)

  • Focus no longer sticks to a window after a drag-to-float drop: with drag-to-float and focus-follows-mouse on, dropping a dragged window pinned focus to it. Hovering other windows did nothing, and after clicking one, sweeping the mouse across the floating window captured focus right back. Moving the mouse over a floating window now leaves focus alone in both directions, so floating windows are focused by clicking, and a drag the service did not settle no longer leaves the window wrongly marked as floating. (#1035)

  • Keep-floating-above stays on the desktop it belongs to: with the setting that keeps floating windows above others, windows parked on a desktop with no placement mode could acquire keep-above and hold it indefinitely. The flag is now granted only to windows on the desktop you are looking at, and a window that leaves it gets the user's own setting back the next time the windows are checked. (#1035)

  • A minimized window frees its tile even while the service is restarting: a window minimized while the service was still reconnecting could keep its tile occupied for the whole session, because the one message that frees it was dropped and never resent. It is resent on every later pass now, and a request the service has to refuse is answered with the window's real state instead of being dropped, so the tile is freed either way. The retry that puts a minimized window back also no longer fires the same doomed request in bursts of four after every monitor change when the service has already said the window has nowhere to go. (#1035)

  • The float shortcut acts on the window you meant: right after dropping a dragged window, two presses of the float toggle could each do nothing and a later one could fling the window to a remembered position, because the shortcut looked the window up in bookkeeping the drag had just moved it out of. The shortcut now resolves the window the same way every other float action does. (#1035)

  • Snapping a maximized window into a zone no longer leaves the maximize armed against it: dropping a maximized window into a zone moved it, but the compositor still considered it maximized, so it kept re-inflating to the full screen over the zone, and the position it would return to on unmaximize stayed wherever it was last maximized. On two monitors that meant one press of the maximize button later, the window teleported back to the other monitor at its old size and PlasmaZones read the jump as you moving it, dropping the snap it had just made. Every way a window lands in a zone (dropping it there, the keyboard shortcuts, snap assist, a monitor change, and a window that opens maximized straight into a remembered zone) now clears the compositor's maximize first and aims its return position at the zone itself. Maximizing a snapped window afterwards still works, and unmaximizing returns it to its zone on the same monitor (#1036).

  • Wobbly windows stop jittering during a drag, and the default feel now matches KWin's: the wobble simulation only advanced in whole 10 ms steps and carried the remainder of each frame over to the next, so some frames moved the window without moving the wobble mesh at all, which showed as jitter while dragging. Each frame now advances the simulation by exactly the time that passed, the way KWin's own wobbly windows does. The default stiffness also sat far looser than KWin's, and the stiffest setting the slider allowed was still below KWin's default, so that feel was unreachable. The defaults now match KWin's preset and the slider range reaches it. (#1038)

  • Resizing an X11 window no longer smears its edges across the animation: during an animated resize, an X11 application that draws no shadow of its own, Steam among them, had its outermost row of pixels stretched across the animation's padding ring, which showed as colored streaks around the window until the animation ended. Wayland windows never showed it because the same region falls in their transparent shadow band. The area outside the window is now treated as transparent on both. The animation could also briefly measure its drawing canvas from a window rectangle the compositor had not updated yet, which X11 leaves stale for a moment after a resize, so the canvas could run more than a thousand pixels past the real window. The canvas and the window snapshot are now measured from the window's real frame. (#1039)

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-3.4.8-*-x86_64.pkg.tar.zst

Debian testing/unstable (apt repository):
Tracks KDE as it lands in Debian and rebuilds when KWin moves.

sudo curl -fsSL https://download.opensuse.org/repositories/home:fuddlesworth/Debian_Unstable/Release.key -o /etc/apt/keyrings/plasmazones.asc
echo 'deb [signed-by=/etc/apt/keyrings/plasmazones.asc] https://download.opensuse.org/repositories/home:/fuddlesworth/Debian_Unstable/ /' | sudo tee /etc/apt/sources.list.d/plasmazones.list
sudo apt update
sudo apt install plasmazones

On Debian testing, swap Debian_Unstable for Debian_Testing in both lines. Packages are built for x86_64 only.

Debian (manual .deb):
Built on Debian unstable. Prefer the apt repository above, which rebuilds when KWin moves.

sudo dpkg -i plasmazones_3.4.8-*_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):

# Fedora 44
sudo dnf install plasmazones-3.4.8-*.fc44.x86_64.rpm

openSUSE Tumbleweed (OBS):

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

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

tar xzf plasmazones-3.4.8-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 (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.4.8.tar.gz"}/packaging/nix/package.nix"
    { version = "3.4.8"; })
];

Post-Installation

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