github fuddlesworth/PlasmaZones v3.4.17
PlasmaZones v3.4.17

5 hours ago

PlasmaZones v3.4.17

Added

  • Ready for Plasma 6.8: Plasma 6.8 changes the three drawing hooks a KWin effect provides, so the PlasmaZones effect had to be updated to match. It now builds against 6.7 and 6.8 from the same source, which matters because the distributions move to 6.8 at their own pace and your package has to keep building on whichever one you are running today. Nothing changes if you stay on 6.7. One thing worth knowing when you do update, and it is not new in this release: the effect is compiled against one exact KWin version and KWin refuses to load it against any other, so the drag overlay and the scrolling tab indicators go quiet after a KWin update until a rebuilt package reaches you. That rebuild is already automatic. A check runs every six hours, so a rebuilt package normally reaches you the same day. Window placement itself runs in the background service rather than the effect, so snapping, tiling and scrolling carry on working while you wait. Plasma 6.8 also tells an effect when a frame failed to draw, which no earlier version could, so a frame lost to a graphics driver reset is now treated as a failure instead of being kept as a blank window thumbnail. (#1096)
  • Four more pointer packs: Prism reads the brand spectrum across the width of the stroke rather than along it. Move slowly and it is a single white filament, and as you speed up the filament spreads edge to edge into the full ramp, cyan along one side and rose along the other. Echo makes the brush the cursor itself, stamping your real pointer sprite along the path behind you with each copy tinted further down the spectrum as it ages. Charge treats speed as a budget the stroke banks and then spends. Sustained movement widens and whitens it and climbs it toward rose, and stopping or clicking spends it as a bright pulse that runs the length of the stroke and leaves a thin quiet line behind. Filament keeps Phosphor Trail's tube and puts current through it, with bright nodes travelling up the stroke toward your hand. Seventeen packs ship now. (#1093)

Changed

  • One name for a pointer pack's trail window: the setting that says how long a point on the path stays lit was called Lifetime in six packs, Duration in WindTrail, Tail length in Comet and Life in Sparks and Burst, for the same thing each time. Comet's was the worst of them, since a name like Tail length reads as a distance and the value is in seconds. They are all called Lifetime now. Duration is kept only where it means how long an event runs rather than how long something stays lit, which is Click Ripple, Flash and Brackets. If you had changed that slider on Comet, WindTrail, Sparks or Burst, it goes back to its default and you will want to set it again. Nothing else about those packs changed. (#1093)

Fixed

  • A pointer pack could sample the wrong thing: a pack that reads one of the buffer channels without declaring a buffer pass for it had nothing bound to that channel, so it sampled whatever texture happened to be left over from earlier in the frame. On a pack with no textures of its own that could be part of a window. Those channels are now left unbound, and the pack is told so when it loads. Only packs written against channels they do not declare are affected, so no bundled pack changes. (#1096)
  • Snap assist could stop using the fast thumbnail path: two capture failures in a row switched the session to the slower path and kept it there until the next login, on the assumption the graphics driver could not do the fast one. A frame lost to a driver reset was being counted as one of those failures, which it is not. Only a real capability problem counts now. (#1096)
  • The pointer could go missing during a scroll: when a scrolling leg gave up on a frame, it hid the system cursor without drawing its own, so the pointer disappeared for the rest of the leg. It also stopped the settle animation from finishing, leaving the leg's textures in memory until something else happened to repaint. Both are handled. (#1096)
  • Pointer trails follow a curve instead of a polygon: the trail history holds 32 samples spread over the window a pack asks for, so at the common settings one lands every 30 milliseconds. Sweep the pointer quickly and consecutive samples are 45 pixels apart, and every pack that draws along the path was joining them with straight lines. The trail read as a visible polygon, and the faster you moved the more obviously polygonal it got. All seven path packs now trace a smooth curve through the same samples, so a fast sweep draws a clean arc. Smoothing also weights each sample's neighbours by how far apart they are in time rather than treating them equally, which had been leaving the head of the stroke a little way behind the cursor. (#1093)
  • Pointer decorations kept drawing on a cursor nobody could see: a software KVM such as Deskflow hides the cursor sprite on this machine while you work on the other one, but it keeps driving the real pointer across the desktop so the remote motion mirrors. Every liveness check still passed, so the trail carried on drawing a comet chasing an invisible cursor on the monitor you had left. Pointer decorations now read both of the ways a cursor gets hidden, KWin's own hide counter and a program installing an empty cursor image, and stop at every stage rather than only refusing to paint. The last frame is erased on the way out, so nothing stays frozen on screen when the pointer disappears without moving first. (#1094)
  • A column dropped at the end of the strip ignored Always centering: with "center focused column" set to Always, dragging a window to the end of a scrolling strip left it pressed flat against the trailing edge. It only moved to the middle once you focused another column and came back. The drop used to pin the column exactly where the drag indicator promised, whatever the centering policy said. Always means the focused column sits in the middle whatever put it there, and a drop is one of those things, so the drop now centers under that policy and under the lone-column rule. The other policies keep the old behaviour, which is what the override was written for. (#1095)

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

sudo pacman -U plasmazones-3.4.17-*-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.17-*_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.17-*.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.17-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.17.tar.gz"}/packaging/nix/package.nix"
    { version = "3.4.17"; })
];

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.