Immutable
release. Only release title and notes can be modified.
PlasmaZones v3.4.5
Added
- Windows come back on the virtual desktop they were on: logging out with windows spread across several desktops and logging back in put every one of them on whichever desktop was showing, so a multi-desktop layout collapsed onto one. A Wayland session carries no record of which desktop a window belonged to, and applications are simply relaunched, so nothing told PlasmaZones where they had been. PlasmaZones already stored each window's desktop with the rest of its placement, and it now uses that. A window that reopens somewhere other than its recorded desktop is sent back there before anything places it, and it takes its place in that desktop's layout when you switch to it. This works the same way whether the monitor is snapping, tiling or scrolling. Put windows back on their virtual desktop, under General → Session restore, turns this off. Each remembered window is moved at most once, and a rule that routes a window to a particular desktop still wins (#1019).
- The support report summarizes your session instead of dumping it: the Session State section printed
session.jsonword for word, which on a system that had been running a while ran to thousands of lines and buried everything else in the report. It now gives the active layout, the last zone used, how many placements are stored by kind, and the twenty most recent ones, with the full file still in the archive for anyone who wants it. A new Placement Modes section says which mode each screen resolves to and whether the tiling and scrolling engines are on, since the scrolling engine did not appear in the report at all before. The Rules section gains a line per rule ahead of the JSON, the Config section says that only settings you have changed are listed, the report carries the time it was generated, and the archive script lists the files it packed (#1022).
Changed
- The daemon and the KWin effect must be the same build: this release changes the message they speak again, so a mismatched pair refuses to connect rather than misbehaving. Packagers should rebuild and ship both together (#1019).
- The new settings text is translated: the strings added for Session restore and Put windows back on their virtual desktop are translated in German, Georgian, Dutch, Polish, Brazilian Portuguese, Russian and Swedish, so those languages have no English left showing in the settings (#1025).
Fixed
- A new window no longer lands on the monitor an old one died on: with tiling on more than one monitor, dragging a browser tab out into its own window, or opening a second window with Ctrl+N, put the new window on whichever monitor the last window of that application had closed on rather than where you asked for it. A closed window left behind a record that looked exactly like the ones written at logout, and those records exist so windows come home to the right monitor at login. A record now carries a mark saying it is worth restoring, a window closing during the session gives that mark up, and a window that has come home retires its own. Login restore is unaffected. Moving a tiled window to another monitor with a shortcut or a window rule was also being undone by the same machinery, and it now sticks (#1020).
- Moving windows around no longer costs other windows their login restore: a window moved to another desktop, or between monitors, is taken off the strip and announced again, which looked to the restore bookkeeping like a window opening for the first time. Each one spent restore evidence belonging to a window that had not reopened yet, so a busy session left later windows without the record that brings them back to their monitor at the next login. A move is now recognized as a move (#1024).
- Dropping a window into a zone on another monitor keeps the snap: on a multi-monitor setup, dragging a window into a zone on a second monitor left it sitting at the zone's shape with no zone behind it, so it did not resize with the zone and, with restore on unsnap turned on, could jump back to a full-screen size straddling both monitors. Ending the drag briefly puts the window back where the drag started, and the compositor reported that as you moving the window off the monitor a moment after the snap was recorded, so PlasmaZones dropped the assignment it had just made. That report is no longer mistaken for a move. The same fix covers the drag-out case, where the compositor's move could stay live and make the window follow you between desktops until you released the button (#1023).
- Dragging a window out of the strip no longer leaves it on every desktop: dragging a window off a scrolling strip could leave it following you from desktop to desktop as though it had been pinned to all of them. PlasmaZones never pinned it. The drop landed on one of the tab pills at the top of a column, the pill took the mouse for itself, and the button release that would have ended the compositor's drag never reached the compositor, so the drag stayed open and the window rode along with it. A pill no longer takes the mouse while a drag is in progress, and a window dropped out of the strip has its drag ended where you dropped it (#1021).
- Focusing a window on another desktop brings its column into view: activating a window from the task switcher or the taskbar when it lives on another desktop switched to that desktop but left the strip where it was, so the window you asked for could be off the side of the screen. The strip moved its focus in the background but the desktop you arrived on was never told to redraw, because every position matched what it had stored. A focus that arrives while another desktop is still current is now remembered and applied when that desktop comes up (#1021).
- Maximize to Screen Edges fills the screen for a window with a set height: the feature added last release only widened a window that had been given a fixed or preset height, so it went the full width of the screen at its short height rather than filling it. With Center short columns turned on it then sat marooned in the middle of the screen while the maximize button claimed it was full. A column filling the screen edge to edge now ignores its windows' height settings for as long as it is in that state, and gives them back exactly as they were when you restore it (#1021).
- A video going fullscreen on a scrolling monitor covers the screen: making a video fullscreen in a window on the strip, in Vesktop or any other application, gave the fullscreen surface the size of the monitor but the position of its column, so it hung off the edge and showed as a black band where the column had been, with the rest of the desktop pushed out of view. A window taking its own fullscreen now covers the monitor it is on, whether its column was on screen or parked off the side, and scrolling the strip with the wheel leaves the fullscreen first so the strip and the window never disagree. Keyboard scrolling still leaves the fullscreen in place, which needs a wire change to fix (#1026).
Installation
Arch Linux (AUR):
yay -S plasmazones # or plasmazones-binArch Linux (manual):
sudo pacman -U plasmazones-3.4.5-*-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.5-*_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.5-*.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.5-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.5.tar.gz"}/packaging/nix/package.nix"
{ version = "3.4.5"; })
];Post-Installation
systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones