Immutable
release. Only release title and notes can be modified.
PlasmaZones v3.4.15
Fixed
- Tab indicators no longer vanish when the pointer crosses them: moving the mouse over a tabbed column's indicator made the whole band disappear until something repainted the entire screen, so it looked like the tabs flickered under the pointer. The band is drawn clipped to whatever part of the screen the compositor is repainting that frame, and that clip was handed over in the wrong orientation. A repaint of the whole screen is the same either way up, which is why the band always came back after a window opened or an animation played, but a small repaint over the band, such as the one a hover or the pointer itself causes, clipped the band to a box that did not contain it and left the pixels underneath showing through. The clip is now mapped the same way the compositor maps its own, so the band holds still under the pointer at every scale, including the fractional one the earlier fix was aimed at. (#1079)
- A window moved to another virtual desktop no longer leaves its slot behind: on a tiled desktop, moving a window to a desktop with nothing assigned while looking at that desktop left the window's slot occupied on the desktop it came from. The other windows there kept tiling around a gap until the daemon restarted. The compositor side had been deciding whether to release a moved window from what it could see of the desktop in view, and a desktop that runs no tiling could not say anything about the one the window left. The daemon now owns that decision. Whenever a window's set of virtual desktops or its activity changes, any tiling or scrolling stack keyed by a context the window no longer belongs to releases it, whatever context is in view and whatever each desktop runs. A sticky window, and a window whose desktop set merely grew, keep their place. A screen where one desktop tiles and another scrolls now hands the release to the engine that was actually holding the window, rather than to whichever engine answered first. Closing a window on a desktop that is not in view also no longer re-flows the windows on the desktop that is. (#1076, #1078)
- Removing a virtual desktop no longer scatters the tiled windows on the ones that are left: deleting a virtual desktop renumbers every desktop above it, and PlasmaZones only dropped the stacks whose number had gone past the new count. Every remaining stack was still filed under the number it had before, so each of its windows now reported a different desktop and the daemon released the lot. The stacks are re-keyed to the new numbering when a desktop is removed, so the surviving desktops keep their layouts. (#1078)
- Removing a virtual desktop no longer moves your per-desktop switches onto the wrong desktops: PlasmaZones stores which desktops you have turned snapping, tiling or scrolling off on by desktop number. Deleting a desktop renumbers the ones above it, and those switches kept the numbers they were written with, so each of them quietly ended up on a different desktop than the one you had chosen. They are renumbered with everything else now, and a switch for the deleted desktop is dropped rather than handed to whichever desktop takes its number. (#1078)
- Un-sticking a window while a different desktop is in view puts it back in the layout: a window that was tiled, then made sticky, then un-stuck from another desktop was released from its layout and never taken back, so it floated until the daemon restarted. It now joins the layout of the desktop it is actually on. (#1078)
- A window opened on a screen pinned to one desktop stays where it was placed: while every window on a screen was sticky, that screen was pinned to the desktop it was showing, and a window opened there afterwards was filed under the pinned desktop instead of the one the compositor reports for it. Every report of its desktops then looked like the window had left, so it was released from the layout as soon as it arrived. A pinned screen is now left alone. (#1078)
- Windows follow the desktop of the monitor they are on: with a separate current desktop per monitor, the code that watches a window move between desktops read the one desktop the session as a whole was on. On a monitor showing something else it acted on windows it should have left alone and passed over ones it should have handled. It now reads the current desktop of the window's own monitor, which is the same reading as before when all monitors share one desktop. (#1078)
- A window moved to another activity no longer leaves its slot behind: the same leftover slot happened on the activity axis, and nothing released it there at all. Moving a window to another activity now frees the place it held, the same way moving it to another desktop does. (#1078)
- A window moved off a desktop stops occupying the zone it was snapped into there: zone occupancy is read across every desktop rather than only the one on screen, so a window snapped into a zone and then moved away stayed listed as being in that zone. Cycling or swapping windows in that zone could pick it, which threw you onto whichever desktop the window had moved to. (#1078)
- A window keeps its decoration when it moves to another virtual desktop: the PlasmaZones decoration was taken off a window as its desktops changed, and nothing put it back while the window was still on screen, so it stayed bare until something else caused it to be drawn again. The decoration is now rebuilt for a window that is still visible. (#1078)
Installation
Arch Linux (AUR):
yay -S plasmazones # or plasmazones-binArch Linux (manual):
sudo pacman -U plasmazones-3.4.15-*-x86_64.pkg.tar.zstDebian 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 plasmazonesOn 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.15-*_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.4.15-*.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.4.15-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.4.15.tar.gz"}/packaging/nix/package.nix"
{ version = "3.4.15"; })
];Post-Installation
systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones