PlasmaZones v3.5.0
Added
- Six blur packs gain brightness, contrast, saturation, vibrancy and noise controls: no blur pack offered the whole set before, and most offered only a tint, so a blurred pane could not be lifted, muted or dithered the way a stock blur-behind effect allows. Blur, Glass, Frosted Glass, Rippled Glass, Rain on Glass and Phosphor Glass now expose the set, and Duotone gains the noise beside the contrast it already had. Mosaic takes none of them, being a pixel mosaic rather than a blur. Every one of these new controls is neutral at its default, so none of them changes anything until you move it. Vibrancy comes from Hyprland and lifts saturation mostly where a colour is already fairly saturated and bright, so a muted wallpaper stays muted. The noise is a fine grain over the blur that hides banding in smooth gradients. Frosted Glass keeps its own Voronoi grain instead of taking the shared one, and Glass keeps a grain tuned to a driver-dependent hash, so those two look slightly different from machine to machine where the rest do not. (#1123)
- Glass refraction gains the controls Better Blur's refraction has: a bevel curve that shapes how the bend falls off from the rim, a concave lens mode that draws the backdrop in toward the pane's centre near its edges, the way a thick slab reads, and an edge mirror that folds the backdrop back inside the pane where a strong bend reaches past its edge. Left off, the bend keeps reading the captured scene beside the pane, which can make the edges look see-through. The edge mirror is on Rippled Glass and Rain on Glass, whose ripple and droplet offsets push the sample in whatever direction the surface points, and on Glass, where the concave lens is the one mode that reaches past the pane. Glass's other two modes bend inward, so the mirror has nothing to fold back for them. (#1123)
- Blur presets for the looks people compare against: the Blur pack ships three presets, named after the effects they are aimed at. "Plasma" is a modest blur close to the stock one, "Better Blur" is a wide radius with lifted saturation, and "Hyprland" sets brightness, contrast, noise, vibrancy, saturation and a 128 px radius. They approximate those looks rather than reproducing any upstream's exact defaults. (#1123)
- Every pack that draws a pane's outline can round or square its bottom corners, and most can soften that edge: "Round bottom corners" is on by default, and turning it off rounds only the top two, which suits a pane sitting against a panel or the screen edge. Twenty packs carry it now, the eight Blur-category packs plus the ten Borders packs, Glow and Drop Shadow, so every pack in a chain describes the same shape. Set it on any pack in the chain and the whole chain follows, and where two packs have it set differently the one earliest in the chain wins. "Edge softness" sets the anti-alias feather of the edge, and eighteen of those twenty offer it. The eight Blur packs and nine of the ten Borders packs gained it in this release, Border already had it, and Glow and Drop Shadow take the corner switch alone because a halo's feather already follows its own reach. (#1123, #1126)
- A window on all desktops keeps its own place on each one: a window set to show on every virtual desktop used to have a single placement that followed it around. It now holds a separate one per desktop, in all three modes. In scrolling it can sit in one column of one desktop's strip and a different column of another's. In tiling it takes a tile on each desktop. In snapping it can be snapped into a different zone on each desktop. Those placements survive desktop switches and a restart. This also fixes a bug where switching desktops with such a window on screen could swap two desktops' scrolling strips and drop several windows out of them. (#1103)
Changed
- Dropping a window on a zone of another layout in the zone selector moves the other windows too: the monitor switched to the layout you dropped on, but the other windows snapped there stayed where they were and lost their zones. They now move the way a quick-layout shortcut moves them, each into the same-numbered zone of the new layout, or back to its floating spot when the new layout has fewer zones. (#1125)
- A maximized or fullscreen snapped window stays that way when its zone is put back: switching layouts or desktops, a panel or screen change, PlasmaZones restarting, reopening the window or restoring it from minimize used to drop its maximize, or move it while it stayed fullscreen. It now stays maximized or fullscreen, and returns to its zone, the new one after a layout switch, when you unmaximize it or leave fullscreen. A window that moves to another monitor still leaves both. This reverses part of the 3.4.8 change on purpose, for a window already maximized in its zone or one that opens maximized into a remembered zone. (#1125)
- Snapping a fullscreen or maximized window ends its fullscreen and maximize: a snap shortcut, a drop, a Snap Assist pick or Restore on a fullscreen window used to leave it covering the monitor while PlasmaZones counted it as snapped, and a window moved out of a monocle stack or a maximized scrolling column could stay maximized in its new zone. The window now leaves fullscreen and maximize and lands where you put it. Floating a fullscreen window, or moving it to a tiling monitor, ends its fullscreen too. (#1125)
- The blur-family packs blur with a dual Kawase pyramid: blur, glass, frosted glass, rippled glass, rain glass, duotone and phosphor glass used a two-pass Gaussian at quarter resolution, which was smooth but could not reach far. They now run a four-level pyramid down to a thirty-second of the canvas and back, the same shape stock blur effects use, so a radius up to 256 px stays smooth. A small radius uses fewer of those levels, with the passes above the level it stops at handing the matching down level through unchanged. The reach was recalibrated at the same time so that a radius reads as the width it names, so a pack at its old default is a close approximation of how it looked rather than a match. Under the hood an overlay, animation or surface pack may now declare up to eight buffer passes, where all three capped at four, while the pointer family keeps its own cap of two because its chain runs on every frame the pointer is live, and a surface pack can give each pass its own resolution through a new
bufferScaleslist that the daemon and the KWin effect both honour. (#1123) - Shader packs can ask for smaller buffers: the smallest render target a pack could declare was an eighth of the canvas on each axis, and it is now a hundred and twenty-eighth. The blur pyramid needs the lower floor so that it keeps halving when you turn the decoration blur scale down, and the bound is shared with the overlay, animation and pointer families, so packs of every kind get it. An installed pack that declared a value below the old floor was quietly clamped up to it and is now honoured as written. (#1123)
- The shared overlay multipass header gains a
channelSizehelper: a pack that sampled a buffer pass had to size it itself, and the four sizes the uniform block carries stopped covering the eight channels a chain can now run. The surface family has no equivalent and sizes a later channel withtextureSizeinstead, which its own header says. The helper answers a channel's pixel size from the block where it has one and from the texture where it does not. It is a new public name in a header third-party packs include, so a pack that already defines a function calledchannelSizewill fail to compile against this release and needs to rename its own. (#1123) - The blur radius goes up to 256 px: the cap was 64 px, well short of the wide, soft blur other blur effects reach at their default strength. This covers the seven Blur-category packs that have a blur radius, which is all of them but Mosaic. (#1123)
- One descriptor-binding table for every shader family: the overlay, animation, surface and pointer contracts now take their sampler slots from a single shared table, which has room for eight buffer channels. Each family's header declares the samplers it needs at the slots that table assigns, and how many buffer channels a family actually runs varies. The pack validator reflects every baked stage against that table and fails a pack whose sampler sits at the wrong slot, which used to surface only as a pipeline failure with nothing naming the cause. A pack can only use the samplers the contract defines. One a pack declared for itself was never bound by anything on either host, and the validator now says so rather than passing it. (#1123)
- A window that reopens is restored only on the monitor it opens on: at login, after PlasmaZones restarted, or when an app opened again, a window used to be moved back to the monitor it was last snapped or tiled on. Now it is restored only when its remembered zone or tile is on the monitor it opened on, and otherwise it stays where KWin put it. Two windows of one app on two monitors each come back on their own monitor. That is reversed on purpose, so a window you see open on a monitor is never pulled to another one. (#1125)
- A window you moved while PlasmaZones was off stays where you put it: turning PlasmaZones back on or restarting the service no longer pulls such a window back to its old zone or tile, and its old place is forgotten. A placement rule that snaps a window to a zone still applies when the window first opens. (#1125)
- A floating window you move to another monitor forgets the zone it floated from: unfloating it on the new monitor used to throw it back into its old zone on the first one. Now it snaps into a zone on the monitor it is on when "Unfloat to a zone when there is no previous zone" is on, and otherwise it stays floating. This reverses the 3.3.3 behaviour on purpose, where the float toggle still returned a window to its zone on another monitor. A window you moved is never pulled back to the monitor it left. (#1125)
- A window on a monitor that disconnects floats where KWin puts it, and goes back when the monitor returns: when a monitor is unplugged, or a sleeping monitor drops its connection, KWin moves its windows to another monitor. On a tiling or scrolling monitor they now float there without reflowing the windows already tiled on it, and on a snapping monitor they are no longer snapped. A window on a desktop you are not looking at goes by the mode its own desktop runs on that monitor rather than the one in view, so on a tiling or scrolling desktop it floats in place when you switch to it, and a floating window on a snapping desktop keeps floating. A maximized or fullscreen window stays that way. When the monitor comes back and KWin returns a window you did not touch, it goes back into its zone or tile, and a tiled window on a desktop you are not looking at is back in its tile when you switch to it. A window you moved, resized or placed with PlasmaZones in the meantime stays where you put it, and one you placed with PlasmaZones on the other monitor goes back there. A window whose monitor, desktop or activity you disabled PlasmaZones on in the meantime, or whose desktop you switched to another placement mode, also stays where it is. When a tiling monitor comes back, its windows also get back the split ratio, master count and script layout you set there, even on a desktop that was not in view at the time, and a window the maximum window count had floated goes back to waiting for room rather than staying floating for good. A monitor in standby that stays connected moves nothing. This changes the 2.3.7 standby fix, which kept every window in its old zone while its monitor was gone. Restarting PlasmaZones while the monitor is away forgets what it would have put back. (#1125)
- With auto-assign on, a snapped window moved to another desktop keeps its zone: sending it to another desktop running the same layout used to put it in the next empty zone there instead of the one it was in. It now keeps its zone, the same as with auto-assign off. This reverses part of the 3.4.3 change, where a snapped window arriving on a desktop took the first empty zone. A free window still stays free. (#1125)
- The daemon and the KWin effect must be the same build: the two talk over new calls and signals in this release, among them
WindowTracking.activeWindowScreenChanged, which tells the daemon a focused window changed monitor without being activated again,WindowTracking.reportOutputSettle,Tiling.windowReannouncedand a longerScrolling.scrollingScreensChanged. A mismatched pair refuses to connect rather than misbehaving, so packagers should rebuild and ship both together. (#1125) - A window dragged onto a tiling or scrolling monitor without the snap modifier floats where you let go: the windows already tiled there stay where they are, and Meta+F tiles it. This changes on purpose how such a drag ended before, when the monitor tiled the window as soon as it crossed over. (#1125)
- A column floated from the shell's placement map or dragged out of its strip floats where it is: it used to jump to the spot it last floated at, as if you had pressed Meta+F. It now stays in place, the way it works on an autotile monitor, and Meta+F still sends it back to where it last floated. This changes the old behaviour on purpose. (#1125)
- Window rules that name a desktop follow it when you remove a desktop: window rules that name a desktop after the removed one are renumbered with it, and a rule that named the removed desktop is switched off rather than deleted, so you can fix it in the rule editor. That includes a rule whose only condition is the desktop, such as "Desktop is 3" with Float or Keep above. (#1125)
- The daemon and the KWin effect must be the same build: the effect now holds a window out of the scrolling strip for its own fullscreen through a new
Scrolling.setWindowFullscreenFloatcall, and theleaveNativeFullscreenRequestedsignal that released fullscreen ahead of the windowed-fullscreen toggle is gone, because a fullscreen window is no longer in the strip for it to find. A mismatched pair refuses to connect rather than misbehaving, so packagers should rebuild and ship both together. (#1116)
Fixed
- Only KWin can put window previews in Snap Assist: the check meant to accept thumbnail pushes from KWin alone never ran, so any program on your session bus could put an image of its choosing in the Snap Assist picker. The check runs now. It recognises KWin as the process serving PlasmaZones' own Wayland connection, because most distributions install KWin in a way that hides which program it is from other processes. (#1139)
- A placement map left behind by a crashed shell no longer catches window drops: when the Phosphor shell quit without unregistering its placement map, dragging a window over the spot where the map had been could still snap the window into one of the map's zones until PlasmaZones restarted. The map stops catching drops as soon as the shell leaves. (#1139)
- The settings D-Bus calls answer a bad request with an error:
Settings.getSettingwith an unknown or empty name, and a rejectedSettings.setPerScreenSettingorSettings.clearPerScreenSettings, were meant to answer with anInvalidArgserror and never did. A rejected per-screen write looked as if it had worked, and an unknown setting left the caller waiting until its call timed out. (#1139) - A desktop set to tile with no algorithm holds no floating windows: a window floated in snapping kept its float when you moved or dropped it onto such a desktop, minimized it there, or switched its desktop to no algorithm, and so did one KWin moved there off a monitor that went away. PlasmaZones reported none of them as floating, yet they came back floating once that desktop snapped again. They now land there not floating, and the float shortcut does nothing on that desktop. A window KWin moved off a monitor still goes back to its old place when that monitor returns. (#1139)
- A desktop set to tile with no algorithm keeps no snapped windows: the zone selector still offered its layouts there while you dragged a window, though nothing on that desktop snaps, and switching a desktop to no algorithm left its windows marked as snapped, so minimizing one floated it. The selector no longer shows there. Switching a desktop to no algorithm leaves its snapped windows where they are, no longer snapped, and switching it back to a layout puts them back in their zones. (#1139)
- Windows stay on screen when a scrolling desktop is set to tile with no algorithm: a window from the strip kept its strip position, which could be off the edge of the screen. It now goes back to where it was before the desktop scrolled, as it does when the desktop goes back to zones, or is moved onto the screen at its size. (#1139)
- Switching layouts on one monitor leaves the other monitors alone: the quick-layout and cycle shortcuts put back the snapped windows of every monitor, so a window spanning zones on another monitor shrank to its first zone. A window that does not fit the new layout and has no floating spot to return to is now unsnapped instead of being left in a zone of the old layout, and a switch with nothing to move no longer shows a "no windows to rearrange" message after the layout card. (#1125)
- Exclusion rules that name a desktop or a monitor apply to a window moved there: a tiled window moved to another desktop or monitor was judged by the exclusion rules as they stood before the move, so a rule excluding it where it landed did not stop it being tiled there. It is now judged where it lands, and a window moved onto a desktop where a rule excludes it is let go of rather than carried into that desktop's tiling. (#1125)
- A window snapped right after KWin moved it to another monitor floats back to where it was: a free window KWin had moved to another monitor, then snapped there by shortcut or over D-Bus before PlasmaZones heard of the move, forgot where it had been, so floating it again later left it at the size of the zone. (#1125)
- Snapping a window over D-Bus follows the same rules as the snap shortcuts:
Snap.moveWindowToZoneandControl.snapWindowToZonecould snap a window on a monitor that tiles or scrolls, with snapping switched off, on a monitor or desktop where PlasmaZones is disabled, or a window that no longer exists or is excluded. They are now refused there, a window on a desktop you are not looking at is snapped into that desktop's layout, and a call naming no screen uses the window's own screen when its layout has that zone.Control.snapWindowToZonetakes any zone number the layout has and snaps on the screen named in the call, where it used to take whichever screen first had a matching zone, so with the same layout on two monitors it could land on the wrong one. Given the connector name of a monitor split into virtual screens, it picks the part the window is in. (#1125) - Picking a zone on another monitor in the placement map moves the window there: the focused window went to the zone with that number on its own monitor instead. The focused-window D-Bus verbs (
Snap.snapToZoneByNumber,Snap.pushToEmptyZone,Snap.moveWindowToAdjacentZoneand the others) also follow the snap shortcut rules now, so they do nothing with snapping switched off or on a monitor that tiles or scrolls, and a named monitor accepts any zone number its layout has. (#1125) - Swapping two windows over D-Bus keeps a window spanning several zones whole:
Snap.swapWindowsById, which the placement map uses to swap two cells, gave the other window only the first zone of the span. Each window now takes the other's whole span, and the swap is refused where a snap shortcut could not make it, such as on a monitor that tiles or scrolls or with a window that no longer exists. (#1125) - Floating a window through the Snap D-Bus calls follows the float shortcut's rules:
Snap.toggleFloatForWindow, which the placement map's float button uses on a snapping monitor, andSnap.setWindowFloatfloated or unfloated a window with snapping switched off, on a monitor that tiles or scrolls, or where PlasmaZones is disabled. They are now refused there, andSnap.setWindowFloatacts on the monitor the window is on instead of the one last focused.Snap.toggleFloatForWindowcalled with a monitor other than the window's own is refused too, where it could put the window back into a zone of that other monitor. (#1125) - Snap confirmations record only zones that exist:
Snap.windowSnappedandSnap.windowSnappedMultiZonerecorded any zone id they were given, so a window could be filed in a zone that does not exist and then be skipped by "snap all windows". They now check the window, the monitor and the zone first. A window spanning zones that a batch names with an empty zone is no longer half committed, an unsnap confirmation also forgets the zone the window would have reopened into, and a restore confirmation keeps the floating position remembered for other monitors. (#1125) - Rotating and resnapping windows leave tiling monitors alone: the rotate shortcut and the D-Bus rotate and resnap calls could pull windows a monitor remembered from before it switched to tiling back into zone shapes, act with snapping switched off, or act where PlasmaZones is disabled. They now act only on monitors that snap, and a resnap batch sent over D-Bus drops any window a snap shortcut could not place. (#1125)
- Tiled windows close up when a neighbour is snapped onto another monitor: snapping a tiled window into a zone on a different monitor left the windows it had shared a monitor with in their old, smaller tiles. They are now tiled again over the space it left. (#1125)
Control.toggleAutotileForScreenworks like the mode toggle shortcut: it switched to autotile with no tiling algorithm, so nothing tiled, could not leave a screen set to autotile with no algorithm, rewrote a desktop's setting that an activity-wide one outranked, so nothing changed, and took a monitor split into virtual screens as one screen. It now switches the screen the same way the shortcut does. (#1125)- Snap shortcuts judge a window by its current size and mode: the minimum window size was checked against the size the window opened at, so a window opened small and then enlarged could never be snapped with the keyboard. Exclusion rules that name the placement mode never matched on the keyboard path, and a rule negating a field the shortcuts cannot check excluded every window. (#1125)
- Keyboard moves check the monitor or desktop they move a window to: moving or swapping a window with the keyboard checked exclusion rules and the disabled list only where the window started, so it could be snapped onto a monitor or desktop where a rule excludes it or where snapping is switched off, and every shortcut then ignored it there. A window moved to a monitor or desktop where snapping is off now goes there as an ordinary window outside any zone, at its floating spot, or at its current size when it has none. A move onto a monitor or desktop where a rule excludes the window is refused, Meta+F no longer snaps an excluded floating window, and the message for an excluded window now says it is excluded from snapping. (#1125)
- Zone shortcuts ignore windows on other desktops: focusing, cycling or swapping toward a zone could pick a window snapped there on a desktop you were not looking at, switching desktops or pulling that window onto the current one, and a window on every desktop could be counted twice. (#1125)
- Keyboard shortcuts on a window that spans several zones: focusing from a spanned window focused the window itself, swapping swapped it with itself, and moving it shrank it onto one of its own zones. Focus, swap and move now look past the whole span. A move puts the window into the next zone on its own, and a swap trades the two windows' zones, so a spanned window and its partner swap places and sizes. (#1125)
- Focus moves from a snapping monitor to a tiling one: focusing toward an autotile or scrolling monitor activated a window that only remembered a zone there, or did nothing. It now focuses that monitor's edge window, the way focus already worked in the other direction. (#1125)
- Focusing into the next desktop picks the window in its first zone: at the edge of the layout, focus went to whichever window on the next desktop had the alphabetically first app name. That window could be floating or minimized, belong to another activity, or already be on the current desktop, and a desktop running autotile was entered through a zone left over from before. Focus now picks the window in the first zone of that desktop's layout, or in its last zone when going left, and does not step onto a tiling desktop. (#1125)
- Moving a window to the next desktop with the keyboard keeps the place it already has there: a window shown on several desktops lost the zone it held on the desktop it was moved to, and a window floating there was snapped. It now keeps that zone, or keeps floating. A window spanning several zones keeps its span when both desktops use the same layout. A window on all desktops is no longer moved, and the moved window is reported as snapped in its new zone straight away, so rules that match on the zone see it. (#1125)
- Moving a snapped window to a scrolling desktop with the keyboard works: at the edge of the layout the move to a scrolling desktop on the same monitor did nothing, although the message said it had moved. A window moved with the keyboard from a tiling desktop to a snapping one now lands in a zone of that desktop's own layout, and keeps the zone it already has there. When a tiling monitor refuses a window, the message now says the move failed. (#1125)
- Unfloating a window no longer puts it into another window's zone: a second window of an app that had never been snapped was snapped into the zone the first one floated from. A window shown on several desktops now unfloats into the zone it floated from on the desktop you are looking at. (#1125)
- Activity settings survive the activity service restarting: when the KDE activity service stopped or restarted, PlasmaZones read its empty activity list as every activity having been removed. It deleted every monitor you had switched off for an activity and forgot every activity's tiling and scrolling layout. An empty list is now ignored. (#1125)
- A window closed on another monitor no longer reopens in its old monitor's zones: a window snapped on one monitor that you closed while floating on another kept the zones it held on the first. When it opened again it could snap into those zones on the wrong monitor, or into another desktop's zones there. It now reopens floating, without those zones. (#1125)
- The layout in use at login matches the screen you are on: at startup PlasmaZones loaded your saved session twice, and the second load switched the active layout back to the one from your previous session after it had already been set for the focused screen. Switching layouts, the zone highlight and the layout reported over D-Bus could then use the wrong one until the current activity was reported, which on a system without activities meant until the next desktop switch. The session now loads once, and the last-used zone it restores is kept until snapping is ready. (#1125)
- Splitting a monitor keeps each desktop's last-used zone: changing a monitor's virtual screens checked every desktop's last-used zone against the layout of the desktop you were looking at, so desktops using another layout, or running tiling, lost theirs. Each desktop is now checked against its own layout, and a tiling desktop keeps its snap memory as it is. (#1125)
- The last save before quitting uses your gap rules: when PlasmaZones stopped, it detached the settings that gap rules match on before saving windows for the last time. A gap rule for a layout, an orientation or a colour scheme then no longer applied to that save, so a window floated where it was snapped could have its zone saved as its floating position. The save now runs first. (#1125)
- A window on several activities keeps its place on each of them: a window put on two or more activities, but not all, was treated as if it lived only on the first. Switching to one of its other activities could silently unsnap it or leave its tile unmanaged, and settings resolved for a window followed the wrong activity. PlasmaZones now knows every activity such a window is on. (#1125)
- Resizing a window across a virtual screen edge no longer moves it there before you let go: a snapped window lost its zone, and a tiling screen beside it took the window in, while the edge was still being dragged. The screen the window ends on is now settled once, when the resize ends. (#1125)
- A fast resize of a tile keeps the size you let go at on Wayland: the tiles were laid out from the frame the application had drawn last, so a quick flick of a divider could snap partly back. PlasmaZones now waits briefly for the application to draw the size you released at. (#1125)
- A window that resizes itself stays in its zone: an application that grew its own window, such as one drawing a larger size than its zone, could carry the window's centre into the next virtual screen or onto the next monitor. That unsnapped it, or took a tile out of its layout. A window that only grows in place keeps its screen. (#1125)
- A window you raise while a layout is changing stays on top: when a tiling or snapping layout change slid windows into place one after another, a window clicked or switched to during the slide was pushed back under the windows that had covered it when the change began. (#1125)
- Scrolling on a monitor split into virtual screens keeps each strip to its own part: scrolling one strip slid the other strip's columns with it, and a column scrolled out of one part slid across the neighbouring part and stayed drawn over it. The two strips also shared one row of tab pills, so only one of them showed its tabs. Each strip now scrolls and shows its tab pills on its own. A strip on a split monitor now scrolls without a strip shader, since the shader covers the whole monitor. (#1125)
- Dragging a window across a tiling monitor and back: holding the snap modifier while a window passed over a tiling monitor stopped the zones from coming back when it returned, so the drop could not snap. The zones now return and the window snaps where it is dropped. A tile dragged onto a monitor whose tiles float on drag now takes its free size as it crosses, and a tile dragged over a snapping area and back onto its own stack is reordered into it instead of being dropped as a floating window. (#1125)
- Escape during a window drag over a tiling monitor: once a drag reached a tiling monitor that does not use the keyboard, keys were still held back, so Escape could not end the move. With PlasmaZones not running, a window drag no longer takes the keyboard at all, and when PlasmaZones stops in the middle of a drag, Escape cancels the move again at once. (#1125)
- Window rules see flag changes made after a window opens: a rule that matches on skipping the taskbar or pager, keep above or below, a dialog's parent or modality, or whether the window can be maximized kept the value the window opened with. It now follows the change, and a fullscreen window moved to another activity no longer leaves its monitor without decorations. (#1125)
- Shortcuts, Snap Assist and borders follow the desktop each monitor shows: with each monitor showing its own desktop, the keyboard shortcuts act on the focused window even when its monitor shows a different desktop from the others, Snap Assist offers the windows you can see, and turning tiling off for a monitor gives its windows their borders back. (#1125)
- Quitting PlasmaZones in the middle of a layout change leaves windows alone: windows still waiting to slide into place when the daemon stopped were moved anyway, into the layout of a session that had already let go of them. (#1125)
- Switching between scrolling and tiling contexts keeps each strip as it was: switching to a desktop or activity whose monitor runs the other tiling mode tore down the strip it left, so its fullscreen and maximized windows flashed back on return, and changing a monitor from scrolling to snapping briefly handed its windows to tiling. (#1125)
- Maximizing a window on a split monitor keeps it in its virtual screen: on a monitor divided into virtual screens, maximizing or fullscreening a window anywhere but under the middle of the monitor moved it into the virtual screen at the monitor's centre, so a snapped window lost its zone and came back unsnapped. It now stays snapped and returns to its zone when restored. A window maximized only vertically and moved to the other half of a monitor split side by side now belongs to that half, so shortcuts and rules act on the screen it is on, and the same holds for a horizontally maximized window on a monitor split top and bottom. (#1125)
- A window moved to another monitor during someone else's drag is noticed: while one window was being dragged, a second window that moved to another monitor or virtual screen kept its old zone, and its next snap or reopen used the monitor it had left. (#1125)
- Window shortcuts on a monitor split into virtual screens act on the part the window is in: when a window on such a monitor was focused before its virtual screens had loaded, shortcuts acted on the first part of the monitor. A monitor that appears a moment after a window moves onto it is also no longer treated as unknown. (#1125)
- Window shortcuts act on the monitor under the cursor after the focused window closes: they kept acting on the monitor of the window that had just closed. (#1125)
- A window remembers the size you gave it while it floated: resizing a floating window on a tiling desktop and tiling it again left the size from before the resize as the one it returned to when dragged out. A window you placed by hand on a snapping desktop after leaving a tiling one also returned to its older size when it went back to tiling and was dragged out. (#1125)
- A window moved from a tiling desktop to a snapping one gets its own size back: it kept the size and place of its tile. It now returns to where it was before it was tiled the first time you see it there, unless it was snapped into a zone on the way. (#1125)
- A tiled window moved to another activity is tiled there: moving a window to another activity left it counted as tiled on the activity it left, so it sat untiled over the other activity's windows until it was closed or moved again. It now leaves the old layout and joins the new one, and a window moved onto the activity you are looking at is tiled at once. (#1125)
- A window on several desktops keeps its tile on the others when you take it off one: removing the desktop you are looking at from a tiled window shown on several desktops, or making a window shown on all desktops visible on one desktop again, dropped it from the layouts of the other desktops, so it came back at the end of the stack. It now keeps its place on the desktops it is still on. A tiled window you move onto the desktop you are looking at, or show on all desktops from another desktop, now takes focus when "Focus new windows" is on, and a floating one keeps floating. (#1125)
- A window shown on several desktops is tiled on each of them: a window set to appear on some desktops but not all was treated as if it were on the first of them only, so it was not tiled on the others and was left over their layouts. It now takes a place in the layout of every desktop it is on. (#1125)
- Per-monitor virtual desktops tile windows by the desktop their own monitor shows: with each monitor showing its own desktop, a window moved onto the desktop its monitor was showing was not tiled when the session's current desktop was a different one, and switching desktops on one monitor could demote or re-add windows on another. Tiling now goes by the desktop shown on the window's monitor. (#1125)
- Snapped windows on a hidden desktop get their zone size when you switch to it: a window on a desktop you were not looking at could miss a zone change meant for it, such as moving it into a larger zone on the next desktop with the move shortcut, a panel or resolution change, or a gap edit, because its app does not answer a resize while its desktop is hidden. PlasmaZones now puts it into its zone when you switch to that desktop, and it does so after the effect restarts too. (#1125)
- A window moved to a hidden desktop is not snapped into a new zone when you get there: moving a snapped window to the next desktop with the move shortcut, when that desktop's layout has no matching zone, left it unsnapped on purpose, but switching to that desktop then snapped it into the first empty zone or its last zone. Arriving now only puts a window back into a zone it already holds on that desktop. A window a rule sends to another desktop as it opens is still placed when you get there, by the rules of the monitor it ends up on rather than the one it opened on. (#1125)
- "Re-snap on resolution change" applies as soon as you change it: the setting was read once when PlasmaZones started, so switching it off or on did nothing until a restart. (#1125)
- Snapping stays out of places you switched it off: moving a snapped window to another desktop, switching to a desktop where a window on several desktops holds a zone, switching layouts and changing the gaps all placed windows even with snapping turned off, on a monitor, desktop or activity where it is disabled, or for an app excluded from snapping. A gap change also put windows on a tiling monitor back into the snap zones they hold for when the monitor returns to snapping. None of them do now, and a window is no longer put back into a zone of a layout its desktop stopped using while it was out of view. (#1125)
- Deleting a layout moves its windows into the layout their monitor falls back to: deleting the layout a monitor was using left its windows sitting where they were, still counted as snapped in zones that no longer existed. Windows in view now move into the same-numbered zone of the layout the monitor uses next, or back to their floating spot when it has fewer zones. A monitor or desktop the layout was assigned to directly is left with no layout, so its windows go back to their floating spot, and a window without one is unsnapped where it is. Windows of the deleted layout on other desktops or activities are unsnapped too. A window that was minimized at the time goes into the same-numbered zone of the layout that takes over when you restore it, as it does after a layout switch, or stays floating when that layout has fewer zones. Switching a monitor to no layout yourself still keeps its windows' zones for when a layout comes back. (#1125)
- Editing a layout updates the windows snapped in it: deleting a zone in the editor left the window in it counted as snapped in a zone that no longer existed, and a window spanning several zones kept its old size when one of them was deleted. The window in a deleted zone is now unsnapped where it is, and a spanning window moves to the zones it still has. Switching layouts also clears the snapped look from a window whose zone the new layout lacks, and a monitor set to no layout keeps its windows' zones for when a layout comes back. (#1125)
- Reapply layout puts the windows on the focused monitor back into their zones: it used to replay what the last layout switch left behind, so it either did nothing and said there were no windows to resnap, or moved windows by a switch that had already happened. It now puts every window snapped on the focused monitor's desktop back into the zone it holds. (#1125)
- The keyboard shortcuts act on a fullscreen window you switched to: on a snapping monitor, switching to a fullscreen window was not reported to PlasmaZones, so a snap or move shortcut acted on the window that was active before it. (#1125)
- Switching desktops or changing the gaps no longer opens Snap Assist: moving a snapped window to another desktop, switching to a desktop where a window on several desktops holds a zone, and changing the gaps all put windows back into the zones they already had, and each of them used to pop up the window picker for the empty zones as if you had just snapped something. (#1125)
- Dragging a snapped window to another monitor without the snap key leaves its old zone behind: the window used to stay snapped in its zone on the first monitor while it sat on the second, so a snap shortcut or Meta+F could throw it back. It now floats where you drop it, and a floating window you drag across keeps floating there. The same goes for a drag on a monitor where snapping is off. A drag that KWin cancels over another monitor leaves the window in its zone on the monitor it came from. (#1125)
- A window sent to another monitor with Move to Screen forgets its old zone when a tiling monitor is involved too: a window tiled on one monitor and sent to a snapping one with "Move to Screen" kept the zone it had before that monitor switched to tiling, so switching the first monitor back to snapping pulled the window back into that zone. A move to or from an autotile or scrolling monitor now clears what the window left behind, the same as a move between two snapping monitors. (#1125)
- A window a rule sends to a tiling monitor is tiled there: an "Open on monitor" rule that opened a window on a snapping monitor and sent it to an autotile or scrolling one used to leave it sitting untiled on the new monitor, still counted as floating on the one it opened on. It now joins the tiles there, and on a snapping monitor its float goes with it. (#1125)
- A monitor that comes back is laid out for the desktop it shows: after a monitor was plugged back in or woke up, PlasmaZones kept using the desktop it had when it started for that monitor until you switched desktops there, so its tiles, zones and shortcuts could follow another desktop's windows. (#1125)
- Moving a window to the other monitor with the keyboard could throw it back: with a window snapped on one monitor, Meta+Alt+Shift+Left or Right into a zone on the other monitor could send it back to where it started, and holding the keys down could leave several windows bouncing between the monitors and swapping places after the keys were released. PlasmaZones kept the window's old zone on the monitor it left alongside the new one and treated the pair like a window shown on two desktops, so the next update put it back in the old zone. A window moved to another monitor now forgets its zone on the monitor it left. (#1124, #1125)
- A window moved between a tiling monitor and a snapping one could land back where it started: moving a tiled window onto a snapping monitor with the keyboard sometimes put it back in its old tile a moment later, depending on how quickly the application answered the resize. It now stays on the monitor it was moved to. (#1125)
- Snapping a window by number after moving it to another monitor put it back on the first one: after the focused window was moved to another monitor with a KWin shortcut, a snap-to-zone shortcut snapped it into a zone of the monitor it had just left. PlasmaZones now follows the focused window when it changes monitor. (#1125)
- Focusing a window could change the zones PlasmaZones remembers for it: focusing a snapped window that KWin briefly reported on another monitor recorded its zone as the last one used on that monitor, and could unsnap a window whose zone was on another desktop. Window shortcuts could also act on the monitor a window used to be on, after that monitor switched to tiling or while the window was tiled on another desktop. Focusing a window no longer moves or rewrites its zones, and shortcuts act on the monitor the focused window is on. (#1125)
- Restarting the KWin effect could put windows back into zones they were not in: a window shown on several desktops could be moved into the zone it has on another desktop, and a window tiled on a monitor that had switched to autotile was handed its old zone again. The restart now only restores the snap look of windows snapped on the desktop you are looking at, on monitors that use snapping. (#1125)
- A window moved to a tiling desktop could later be snapped into the zone it had left: a snapped window that KWin moved to a desktop running autotile kept the zone it had on the desktop it came from, so switching that desktop to snapping put the window back into that zone, even on top of another window. The move now clears that memory, and so does removing a desktop or activity a window is still open on. (#1125)
- Switching a monitor back to tiling could pull in a window you had moved away: after a tiling monitor was switched to snapping and one of its windows was moved to another monitor or desktop, switching the first monitor back to autotile or scrolling tiled that window there again. Only the windows still on that monitor and desktop are tiled there now. (#1125)
- A tiled window could stop being tiled when PlasmaZones forgot an old zone of it: when a zone a window had before its monitor switched to autotile was cleared, for example by a layout change, autotile dropped the window from its tiling. Tiled windows now stay tiled. (#1125)
- Splitting a monitor into virtual screens could make a window forget where it floated: a window whose zone did not exist in the new virtual screen's layout lost its remembered floating position on every monitor, and a window shown on all desktops was treated as being on one until it next changed desktops. Both are kept now. (#1125)
- Floating a window you had maximized and then snapped could fill the whole screen: snapping a maximized window with a keyboard shortcut remembered the maximized size as the place to float back to, so floating it again made it cover the monitor. A maximized or fullscreen size is no longer remembered as a floating position. The window floats back to where it was before you maximized it, and window rules that match on fullscreen now notice when a window enters or leaves fullscreen. (#1125)
- The last used zone changed on its own: with "Open new windows in the last-used zone" on, unminimizing a snapped window, switching to a desktop where a window keeps its own zone, or a window being carried to another desktop, such as one KWin moved onto the desktop you are looking at, each recorded that zone as the last one you used, so new windows opened in it. A restored window also lost the mark that keeps focusing it from counting. Only zones you snap a window into on the desktop you are looking at are recorded now, including the first snap of a window PlasmaZones restored. (#1125)
- A tile you floated could stay where it was tiled instead of going back to where it floated before: when an app did not fill its tile, or a zone, exactly, floating it remembered that spot as its floating position. It now returns to where it floated last, and a tile you drag out and drop floats where you dropped it. (#1125)
- "Focus new windows" focuses only windows that just opened: with it on, a window PlasmaZones placed again took focus as if it were new, after PlasmaZones or the KWin effect restarted, on unminimize, when a desktop switch or a move between monitors re-added it, or when a placement that had been waiting finally ran. It now applies only to a window that genuinely opened, and to a window you move onto the desktop you are looking at, in every placement mode. (#1125)
- Tiling could take focus away from the window you were using: after PlasmaZones restarted, or after a floated tile was refocused, the next tiling update could raise or focus a window you had already left. It now only does so while that window still has focus. (#1125)
- Floating a window snapped with the keyboard did not bring it back to where it was: a window snapped with a keyboard shortcut or through the D-Bus interface forgot the position and size it had before, so floating it again left it at the size of the zone. It now returns to where it was before the snap. A window snapped onto another monitor floats where it is, because the place it came from is on the monitor it left. (#1125)
- A border pack rounded a corner you had squared, and erased the pane's own square corner doing it: a corner radius of 0 means square, and the Borders family drew it as an arc the width of its own band, up to 20 px on a single-line pack and 52 on Double Border, which dilates by its whole stack. Because a border pack clears the window content outside its band, that arc also cut the matching corner off whatever backdrop pack sat under it, so a squared pane came out rounded and clipped. A radius of 0 now stays square at both ends, and the band mitres the corner the way a drawing program would. A radius above 0 is unchanged, where the band still runs from the radius you set out to that radius plus its width. (#1126)
- Turning a decoration border off left a faint line where it had been: a border width of 0 is the lowest setting on eight controls across seven packs, and it has to mean no line. It did not. The width collapsed to nothing and the edge term painted a band about two feathers wide straddling the frame edge, at up to a quarter of the border colour. (#1123)
- A glass or rippled pane vanished entirely where nothing sat behind it: with no scene to blur, those packs fall back to a faint tinted slab, and the slab's alpha was scaled by the tint strength. At a tint strength of 0, which is the lowest setting all three packs offer, it drew nothing at all and the pane's shape was not communicated. It now keeps a visibility floor on that fallback only, so a tint strength of 0 still means no tint on a real backdrop. (#1123)
- The Glass pack's rim light did nothing over most of its range: Rim strength acted as a ceiling rather than a level, so 0.25 and 1.0 rendered identically and the shipped default already sat inside that dead range. The thickness glint had the matching problem, gated on the same slider and then ignoring it. Both follow the control across its whole range now. (#1123)
- An unfocused Audio Border was dimmer than its own setting asked for: the focus cue was applied twice, so the pack rendered at 55% of the alpha its Inactive colour setting specified. (#1123)
- Glass refraction could not be switched off: at a Refraction strength of 0 the Snell lens still applied its whole displacement, so the control did not do what its description says. (#1123)
- The Glass pack's glint thinned to a hairline on a scaled display: its band was held in raw device pixels, so at 200% it stayed the same number of pixels while everything around it doubled. (#1123)
- A shader pack installed in the user data directory compiled against the system copy of the shared shader headers: the KWin effect let a user pack win over a bundled one of the same name, but resolved that pack's
#includelines from the system directory first. A user pack that shipped its own shared headers, or a development tree linked into the user directory, got its body from one tree and its contract from another and failed to compile whenever the two disagreed. Decoration packs were fixed first. Animation packs had the same problem, and had it in the daemon as well as in the KWin effect, so the two processes could compile the same pack against different headers. Both now resolve includes from the pack's own shared directory first, then the user directory, then the system one, which is the order the pack validator already used. The sharedanimation.vertthat a pack falls back to when it declares no vertex stage is picked the same way, so a user copy of it is honoured too. (#1123) - A window sent to another virtual desktop takes the zone that desktop's layout has for it: moving a snapped window to another desktop left it at the size and place of the zone it came from, so on a desktop running a different layout it sat in a zone that desktop does not have. PlasmaZones' own "move window to the next desktop" shortcut already put such a window into the matching slot of the destination layout, but the moves it does not drive itself did not, which covers KWin's own Window One Desktop to the Left and Right shortcuts and dragging a window onto another desktop in the overview. Those now land the window in the same slot of the layout the destination desktop runs, and the destination desktop counts it as that zone's occupant. When the destination layout has no slot in that position, a window from the fourth zone of a grid moved onto a two-zone layout for instance, the window goes back to where it was before it was snapped. A window that was floating, or one on a desktop that tiles, is left alone as before. (#1104)
- A second window of an app opened at the size of the first one's zone: snap a Dolphin window into a zone, then open another Dolphin window. It appeared floating, but as big as the zone, and every further window did the same until the first one was floated or closed. KDE apps save their window size to their own settings whenever they are resized, and a snap is a resize, so the app brought the zone's size back for each new window. PlasmaZones did not step in because it treated a window with a same-app sibling as one to leave alone, so it was neither floated nor given a size, and it was not tracked until it was focused. When nothing else places it, a new window of an app that has a snapped window now opens floating at the size the snapped window had before its snap, centred on the spot where the compositor placed it. The same applies to a window reopened with "Restore windows to their previous zone" turned off, and to a floating window reopened with "Restore unsnapped windows to their previous position" turned off. On a tiling or scrolling screen, a window that a rule leaves floating beside a tiled sibling gets the same treatment, since a tile is a resize the app saves too. The size is found even when the first window was snapped on another monitor. (#1106)
- An oversized texture in a shader pack was decoded at full size inside the compositor: a pack can name an image file for its texture samplers, and the KWin effect read it with no size bound, so a very large PNG or a near-square SVG allocated the whole thing in the compositor's own process. The daemon has held the same files to a 16 MiB budget all along. The effect now applies that budget too, and scales an oversized image down while it decodes rather than after. (#1123)
- Every blur-family pack captured the scene behind a window at four times the resolution it reads: the scene behind a pane is captured once, and the capture was sized by asking whether a pack mentions the backdrop at all rather than whether it samples it. All eight backdrop packs read the on-or-off flag in their main shader, so all eight got a full-resolution capture even though the only pass that samples it works at a quarter of the canvas. On a 4K window that is about 33 MB of video memory per decorated window, and a full-canvas copy on every frame, where 8 MB and a quarter of the copy would do. The capture is now sized for the pass that actually reads it, at twice that pass's own resolution, which is what its filter expects. That also fixes a shimmer on the blurred backdrop while the scene behind it moved, since the first blur pass had been averaging single pixels into blocks of sixteen. A pack whose main shader samples the backdrop directly, which of the bundled ones is only Mosaic, still gets the full-resolution capture. (#1123)
- A pack that read the backdrop from two passes at different resolutions under-sampled the finer one: the capture resolution was taken from the first pass that read it instead of the densest, so a later, sharper pass sampled texels that were never captured. No bundled pack reads the backdrop from more than one pass, so this was reachable only by a third-party pack. (#1123)
- A decoration's glow could be clipped for the length of an animation that began during a resize: the enlarged quad that an animating window's outer margin is drawn on was measured from a rect that can briefly still describe the previous frame, and that one measurement was then kept for the whole animation. (#1123)
- A shader pack asking how big its own texture is got a different answer in the two processes:
iTextureResolutionis the list of bound texture sizes, and the KWin effect filled it one place to the left of where the daemon does, so a pack's first image landed on the entry that belongs to the window's own content. The effect also never filled that first entry at all, which the daemon does. Both now agree that entryiholds the size ofuTexture<i>, so a pack's first declared image is entry 1 and entry 0 is the window. No bundled pack reads these sizes, so this only affected packs written against the contract. (#1123) - The blur quality setting no longer shrinks the captured backdrop, only the blur passes: it used to scale both, and scaling the capture was wrong. The first pass of the blur pyramid steps a fixed distance measured on the pane, so shrinking what it reads from moved its five samples closer together until, at the lowest quality, they all landed on the same pixel and that pass stopped blurring at all. The capture is now held at the density the pyramid expects whatever the setting says, and the setting goes on scaling the passes themselves, which is where its cost mostly sits. The trade is that Low no longer saves the memory the capture takes, so a decorated window with a blurred backdrop holds a larger texture at that setting than it did before. (#1123)
- The decoration blur quality setting only applied to windows: Low, Balanced and High set the resolution the blur passes render at, and only the KWin effect read it. The same pack decorating an on-screen display, a popup or a shell surface always rendered at its declared resolution, so turning the quality down left those looking different from your windows and costing what they always did. Every host that draws a decoration now applies the setting. (#1123)
- Fireflies lost most of its swarm behind the window: each spark orbited on an oval drawn around the window rather than following the window's outline, and an oval that size runs inside the window over most of its loop, where the pack draws behind the window and hides the spark completely. The swarm read as four blinking arcs at the middles of the edges and nothing at all near the corners. Measured on a 800x500 window, a spark was visible for 132 degrees of its orbit and is now visible for all 360. (#1123)
- Phosphor Motes drew expanding rings at the corners instead of dust: the coordinate that spaces the dust along the window's edge was constant across each corner, so a speck that lit up there painted a uniform quarter-ring about half a cell thick and blinked as a whole. The same coordinate also made the dust along the top edge a mirror copy of the dust along the left edge. (#1123)
- Drop Shadow and Glow tinted the whole body of a see-through window: both packs draw only where the surface is not opaque, and that was the only thing keeping them out of the window. On a window whose own body is translucent, rather than the usual opaque one, the halo covered the entire window instead of the margin around it. They now also stop at the edge of their own reach, so what they draw inside the window goes no further in than it reaches out. An opaque window was never affected and still is not. (#1123)
- The Glass pack's concave lens magnified the backdrop instead of shrinking it: the mode is described as shrinking the backdrop toward the pane's centre, the way a thick concave slab reads, and it did the opposite. At full strength the pane's edge showed content from 80% of the way out instead of from past the pane, so the middle of the scene was stretched across the whole pane. It compresses a wider view into the pane now. The mode is off by default, so this only changes how it looks for anyone who turned it on. (#1123)
- Frosted Glass stretched its crystals to the shape of the window: the crystal pattern was laid out in a grid of the same count on both axes, so on a wide window each crystal came out as a long ellipse rather than a crystal, and the same Grain scale setting gave different crystal sizes on different windows. A wider window now gets proportionally more crystals instead of wider ones, which is what a density setting should do. A square window looks exactly as it did. (#1123)
- Phosphor Motes cut its dust off in a straight line: the twinkling dust field faded out slowly enough that it was still at about a third of its brightness where the drawing room ran out, so it ended in a hard rectangle with specks sliced through the middle. It now fades to nothing just before that edge. Its drifting motes could also be carried sideways out of the drawing room at a high Sway with a low Mote range, which the shipped settings never reached but the sliders allowed. (#1123)
- Glass bent the backdrop further sideways than up and down on a wide window: the default refraction measured its displacement against each side of the pane separately, so on a 1600x400 pane one Refraction strength bent the scene four times as far left and right as it did up and down. It now bends the same distance in every direction, measured against the pane's shorter side. A square window looks exactly as it did, and a wide one has its sideways bend brought down to match. Turning on Physically based refraction still makes the bend much smaller at the same strength, since that mode measures against the bevel width instead of the pane, and both settings now say so. (#1123)
- Rules edited outside the settings app took effect only after a restart: the daemon never watched
rules.json, so a rule added by hand, restored from a backup or written by a config import stayed invisible until the daemon was restarted or told to reload over D-Bus. Worse, the daemon's next rule save wrote its stale set back over the edit. The daemon now watches the file and reloads it when another process changes it. (#1119) - A window you move before its remembered zone is restored stays where you put it: a slow restore answer could snap it into the zone after you had already dragged it away. (#1125)
- A tile dragged across a snapping monitor and back is still floated by its own engine: with the zone selector off, PlasmaZones stopped following the drag once it reached the snapping monitor, so the window was dropped back with nothing managing it. (#1125)
- A window dragged out of its zone stays under the pointer on X11: the restored size kept the zone's top-left corner, so the window shrank away from the cursor and jumped on the next motion. (#1125)
- Animation rules scoped to a monitor follow the window to where it lands: a placement outside a scrolling strip that moved a window onto another monitor matched its animation rules against the monitor it was leaving. (#1125)
- Moving a window with the keyboard works on a snapping monitor: during KWin's Window Move, PlasmaZones took every key, so the arrow keys did nothing and Return could not finish the move. (#1125)
- Moving a snapped window with the keyboard or touch takes it out of its zone: a move accepted with Return, or ended by lifting a finger, was treated as cancelled and the window kept its zone. (#1125)
- A window you keep moving after letting go of the left button is placed once, where the drop put it: with a mouse-button trigger still held, a monitor crossing after the drop was reported before the drop was settled, and the window could end up off the zone it was dropped on. (#1125)
- No log flood while PlasmaZones is turned off: with the PlasmaZones service disabled, moving or dragging a window no longer writes a failed-call warning to the system log for every step of the move. (#1125)
- The shell's desktop maps show tiled windows on desktops you are not looking at: the map of a tiling or scrolling desktop you were not on showed none of its tiled windows, and a tiled window that once had a zone showed as snapped. Middle-clicking one of those windows on the map leaves it alone instead of floating it into the desktop in view. (#1125)
- A window that reopens at login no longer flashes into another window's zone: the instant restore could put an opening window in the zone of an older window of the same app, or in a zone of the layout another activity runs, before PlasmaZones moved it to its real place. It now skips those cases and lets the restore place the window. (#1125)
- Switching a snapping monitor to tiling keeps your windows in zone order: changing a monitor to a tiling algorithm from the settings or the layout picker tiled its snapped windows in arrival order instead of by their zones. Windows stacked in one zone also come out in the same order every time now. (#1125)
- A small floating window comes back where it was: floating a snapped window narrower or shorter than 100 pixels, or one that sat across the edge between two virtual screens, put it back pulled into one virtual screen or onto the neighbouring monitor. It now returns to the spot it was snapped from, which completes the 3.4.6 fix for small windows. (#1125)
- Windows on every desktop follow the sticky-window setting after a restart: a window already shown on all desktops when PlasmaZones started was taken for an ordinary window, so tiling and scrolling placed it even with the setting that leaves such windows alone. (#1125)
- Switching back to snapping puts a window on every desktop in this desktop's zone: a window shown on all desktops that was snapped on another desktop took that desktop's zone on this one. (#1125)
- Splitting a monitor keeps the zones each desktop's layout still has: changing a monitor's virtual screens judged every window's zone against the layout of the desktop in view, so a window on another desktop or activity lost a zone its own layout still held, and a window snapped on two desktops kept a stale zone on one of them. Splitting a monitor, or removing the split, also made a window shown on several desktops forget the zones it held on the other desktops. (#1125)
- A window closed before you split a monitor reopens on the right part of it: its remembered place kept naming the whole monitor, so it could reopen stretched across both halves. (#1125)
- Dragging a window to a monitor on another desktop keeps it where you drop it: with each monitor showing its own desktop, dragging a snapped window to the other monitor could send it back to the first one on a desktop nobody was looking at, so it vanished. (#1125)
- Move to Screen across desktops lands the window on the screen you chose: with each monitor showing its own desktop, KWin's Move to Screen on a maximized or resized window could leave it on the old monitor on a desktop not shown there. (#1125)
- A tiled window moved to another desktop keeps its free size there across a PlasmaZones restart: after the restart it could only float at its tile size. (#1125)
- A window a layout switch puts back to its free spot floats there: switching to a layout with fewer zones moved the windows that had no zone left back to where they were before they were snapped, but PlasmaZones then lost track of them, so the float shortcut ignored them and a later layout switch could pull them into a zone again. They now float where they land. Restoring one could also clear the spot the window remembered on every monitor, and now clears only the one on the monitor it lands on. (#1125)
- A window shown on several desktops shows the right float state after a snap: snapping it on one desktop could tell the effect it had stopped floating on the desktop you were looking at, and snapping it on the desktop in view did not say it had stopped floating when it floated on another desktop, so the next float shortcut there showed "Floating" over a window that still looked snapped. The float state shown now follows the desktop in view. (#1125)
- A window moved to another desktop takes the zone it already has there: a window shown on two desktops with its own zone on each, moved to one of them with KWin's move-to-desktop or in the pager, stayed at the size and place of the zone on the desktop it left. It now goes into its zone on the desktop it moved to, and a window floating there keeps floating. (#1125)
- A floating window moved to another desktop stays floating: PlasmaZones stopped tracking a floating window moved to another snapping desktop, so the float shortcut there did nothing. It now arrives floating where it is. (#1125)
- A minimized window moved to another desktop comes back in the right zone: a snapped window minimized and then moved to a desktop running another layout came back at the place of its old zone. It now returns into the matching zone of the layout on the desktop it is on. (#1125)
- A window spanning several zones keeps its span when moved to another desktop: KWin's move-to-desktop shrank it to its first zone. It keeps the span when the other desktop runs the same layout, and takes the slot of its first zone otherwise. (#1125)
- A window shown on several desktops floats where you floated it: floating it on one desktop and switching back from another left it at the other desktop's zone with its snapped look, and the float shortcut then acted as if it were snapped. Switching to the desktop now puts it back where it floats there, with its floating look, and a desktop where it is neither snapped nor floating shows it unsnapped. (#1125)
- A snapped window moved to the activity you are looking at keeps its place: it was left at the size and place of its zone in the activity it came from, no longer snapped. It now goes into the matching zone of the layout this activity runs, or keeps the zone it already has here. A window moved to an activity you are not looking at goes into its zone there the first time you see it. (#1125)
- Unfloating or unminimizing a window never puts it in a zone of the old layout: after its monitor switched layouts, the float shortcut or an unminimize could put a window back into a zone of the layout the monitor no longer runs, on top of the new one. It now only goes back into a zone the current layout has, and a window minimized while the monitor switched layouts unminimizes into the zone with the same number in the new layout, like the windows that stayed open, or at its floating position when the new layout has fewer zones. With "Unfloat to a zone when there is no previous zone" on, the float shortcut picks a zone of the new layout instead, and otherwise the window stays floating where it is. (#1125)
- Windows left out of snapping are not snapped into a remembered zone: a small window, or one an exclusion rule leaves alone, could be put into the zone its app's last window had, and then kept the app's next real window from returning there. The exclusion and the minimum window size are now checked before any remembered placement or placement rule. (#1125)
- "Open new windows in the last-used zone" ignores a zone the layout no longer has: after switching a monitor to another layout, a new window could still be snapped into the last zone of the old one, at a size and place the new layout does not have. (#1125)
- Rearranging monitors keeps windows in their virtual screens: swapping the order of two monitors, or lining one up differently, left PlasmaZones with the old positions of a split monitor's virtual screens, so windows were moved into the other half and unsnapped. (#1125)
- Moving the focused window to another desktop hands focus on: when a keyboard move sent the focused window to the next desktop, it stayed focused while hidden, so typing went to a window you could not see and the next shortcut moved it again. Focus now passes to the next window on the desktop you are looking at, as it does with KWin's own Window to Desktop. (#1125)
- Moving a window to a monitor on another desktop keeps it visible: with each monitor showing its own desktop, moving a window to the other monitor with a PlasmaZones shortcut left it on its old desktop, which that monitor was not showing. It now joins the desktop the monitor shows, as KWin's own Move to Screen does, and its dialogs go with it. (#1125)
- Removing a virtual desktop no longer leaves PlasmaZones on the wrong one: after a desktop was removed, switching to the desktop that took over its number could go unnoticed, so layouts, tiling and new snaps stayed on a desktop you were no longer looking at. (#1125)
- Rules follow a window the keyboard moves to another monitor: a rule scoped to a monitor, such as one that hides the title bar, now applies as soon as a window moved there by a PlasmaZones shortcut arrives. It used to keep the first monitor's rules until something else made PlasmaZones read them again. (#1125)
- Removing the desktop you are on keeps the monitor's layout: removing the virtual desktop a monitor was showing left PlasmaZones arranging that monitor for the desktop the session started on, until the next desktop switch there. (#1125)
- A window maximized in one direction does not reopen stretched: a window maximized only vertically or only horizontally could have that tall or wide frame remembered as its floating size and position, and came back that way. A window maximized on one axis, or made fullscreen, now also floats back to where it was just before, instead of to an older position. A window in a scrolling strip that goes fullscreen is left out of that, so it does not float back at the size of its column. (#1125)
- Minimizing a window on a scrolling monitor no longer shows a floating message: minimizing or restoring a column showed Floating and then Tiled. A window on two desktops of one monitor also keeps its place on the other desktop when it is minimized. (#1125)
- A window that leaves a scrolling strip does not take its old column back: a window moved to another monitor or desktop while its strip was switched to another mode returned to its old column and width when that strip came back, and a new window of the same app could take the column of one still open elsewhere. (#1125)
- Scrolling strips keep their windows when desktops are added, removed or reordered in the middle: adding a virtual desktop before others, or moving one, renumbered the desktops after it, and the scrolling strips stayed on the old numbers, so a strip showed up on the wrong desktop. Removing a desktop in the middle lost the strip of the last desktop. (#1125)
- Removing a virtual desktop keeps the other desktops' layouts: after a desktop in the middle of the list was removed, every desktop after it took the layout, mode and settings of the desktop before it. Each desktop now keeps its own, and settings for a removed activity are deleted with it. (#1125)
- Desktops removed while PlasmaZones was off keep the others' layouts: at the next start, each remaining desktop keeps its own layout and settings, and settings for desktops and activities that no longer exist are removed. (#1125)
- A window no longer jumps into its old zone when zone restore is off: with "Restore windows to their previous zone" turned off, with snapping switched off, or for an app a rule keeps out of that restore, the first window of an app to open after login was still put on the zone it had last time and left there without being snapped. It now opens where KWin places it. (#1125)
- Floating a tile a second time on a tiling monitor works like the first: after a floated tile was dropped back into the stack, or came back to a tiling monitor from another mode, floating it again could leave it maximized on a monocle layout, behind the other windows or without focus. (#1125)
- Tab colour rules follow a window's state: a rule that colours a scrolling tab when its window is maximized, fullscreen, kept above, shown on all desktops or on a given desktop picked its colour once and kept it until the window's title changed. It now follows each change the window reports. (#1125)
- Shortcuts leave the window you are dragging alone: pressing Float, Snap to Zone, Move, Swap, Span, Push to Empty Zone, Restore or Swap with Master in the middle of a drag could snap the window under the cursor, or leave it counted in a zone it never reached. Those shortcuts now do nothing until you drop the window. (#1125)
- Window rules that match a monitor apply as soon as tiling moves a window there: a rule for a monitor, its layout or its orientation kept judging a tiled window by the monitor it had left, until something else made the rules look again. (#1125)
- A tiled X11 window keeps the width its minimum size needs after it is floated and tiled again: floating it, minimizing it or moving it between modes made the tiling engine forget the minimum, and the window then overlapped its neighbour. (#1125)
- A window moved onto a tiling monitor with the keyboard behaves like the other tiles there: it could not be floated by a drag, and a later move to another monitor left it held by the monitor it had left. (#1125)
- A maximized scrolling column moved to a tiling monitor with the keyboard is not left half maximized: PlasmaZones went on counting it as a maximized column, so a Monocle layout ignored un-maximizing it and maximized it again. (#1125)
- A maximized Monocle window that comes back with its monitor can be un-maximized again: after the monitor returned, un-maximizing it did nothing and the next layout pass maximized it again. (#1125)
- A fixed-size X11 game in a maximized scrolling column stays in its column: PlasmaZones took the maximize as given even when the game could not be maximized, and then let the game move itself off the strip. (#1125)
- Switching desktops right after a tiled window closes no longer flickers the next desktop's fullscreen tiles: a layout pass meant for the desktop you left could still finish after the switch and briefly take the new desktop's tiles out of fullscreen. (#1125)
- Turning tiling back on for a monitor no longer raises windows that left it: windows moved to another monitor or desktop while it was off were raised over the windows in front of them. (#1125)
- After monitors are rearranged, a window leaving a tiling layout stays where it is: it used to jump to where its monitor had been, which could put it on another monitor. (#1125)
- Scrolling strips stay put when monitors are rearranged: they jumped to where their monitor used to be and back once the layout caught up. (#1125)
- Rules for snapped windows stop applying once a monitor switches to tiling: a window that had been snapped there still matched snapped and zone rules after it was tiled, and snap focus-follows-mouse could still focus it. (#1125)
- A tiled window keeps its own floating size when you drag it out: after the KWin effect restarted, or after a monitor was switched to tiling, a window could take the floating spot of another window of the same app, one that had moved to another monitor, when it was first dragged out of its tile. (#1125)
- A floating or minimized window keeps its state when its monitor goes away: a window you had floated on a monitor that was unplugged, or asleep and disconnected, arrived on the other monitor no longer floating and no longer known to PlasmaZones, so the float shortcut there said the window was not managed. It now arrives floating where KWin put it. A floating window that was minimized at the time also stays floating on the monitor it landed on, and a later switch of that monitor to tiling no longer floats it because of the move. A tiled window that was minimized when its monitor went away returns to its tile when you restore it after the monitor is back, instead of staying floating. (#1125)
- A snapped window moved to a desktop where it floats takes its floating spot: moving it with KWin's move-to-desktop or in the pager to a desktop you were not looking at left it at the size and place of the zone it came from. It now goes to its floating spot the first time you switch to that desktop, unless you moved it meanwhile. (#1125)
WindowTracking.setWindowFloatingfloats the window in the mode its monitor runs: over D-Bus it told the KWin effect a tiled or scrolling window was floating while the window stayed in the layout, and on a snapping monitor it floated a window without taking it out of its zone. It now floats or unfloats the window the way the compositor's own float does on that monitor, and leaves a window alone when it is not on the desktop and activity its monitor shows, so a background window is not pulled into the layout in view. (#1125)- The placement map floats a window only on the monitor it is on:
WindowTracking.setWindowFloatingForScreencalled with a monitor other than the window's own, as a placement map drawn before the window moved can send, took the window out of its zone and handed it to that monitor's tiling or scrolling. Such a call from anything other than the KWin effect is now refused. (#1125) - Windows on a removed desktop keep their tiles: windows that KWin moved to the next desktop when you removed theirs were left untiled on top of that desktop's tiles. They are now tiled there. (#1125)
- Snapped and tiled windows keep their place when you add or reorder desktops: adding a desktop in the middle of the list, or dragging desktops into another order, left the zones and tiles of every desktop after it filed under the old desktop numbers, so a window could be pulled out of its zone or tile and the desktop you switched to showed another desktop's layout. Zones and tiles now move with their desktop. (#1125)
- Floating windows return to the right place after a monitor moves: plugging in a monitor that shifted another monitor's position, then floating a snapped or tiled window there, left it on its zone or put it back at an old position. Remembered floating positions are now kept relative to their monitor, so they follow it when it moves, while PlasmaZones runs and across a login with the monitors arranged differently. Positions saved by an older version are converted once, and those on a monitor that is not connected at that moment are dropped. (#1125)
- Layouts that reuse another layout's zone ids are kept apart: a hand-made or imported layout that copied another layout's zone ids could put windows in the wrong zone after a layout switch. Its zones now get ids of their own when it loads, and its file is updated with them. Windows snapped in that layout lose those snaps once. (#1125)
- Windows on one of two identical monitors keep their place when the other is connected or removed: plugging in or removing a second monitor of the same model renames the first one inside PlasmaZones, and the windows on it kept naming the old monitor, so a layout switch could skip them and the next snap could forget their zones on other desktops. Their zones and remembered floating positions now follow the new name. (#1125)
- A window that overflows a tiling layout on a split monitor belongs to the half it floats on: a window the layout had no room for went back to its old spot on the other half of the monitor but was still counted by the half that floated it, so tiling it again sent it back there. (#1125)
- Dragging a window onto a tiling monitor no longer rearranges that monitor before you let go: the windows there made room for it while it was still being dragged, and moved back if it was dropped elsewhere. (#1125)
- A fullscreen Monocle window moved to another desktop gives its size back: a Monocle tile that was fullscreen when it moved to another desktop now returns to its own size when it leaves fullscreen there, unless that desktop runs Monocle too. (#1125)
- Maximizing a scrolling window no longer flickers at the column's corner: a window maximized from its title bar, or made fullscreen, on a scrolling monitor no longer shows for a moment at the top-left of its column first. (#1125)
- Moving a scrolling window to another monitor with KWin works: a window sent to another monitor from its window menu or with KWin's own shortcut now leaves its strip and is placed on the new monitor, instead of disappearing until its column changed. (#1125)
- A Monocle window no longer floats by itself when the layout changes twice in quick succession: the window read the first change arriving late as you un-maximizing it, so it floated and left the stack. (#1125)
- A maximized scrolling column moved to a Monocle monitor stays there when un-maximized: it went back to its old place on the monitor it came from. (#1125)
- A window that opens after a layout or desktop change lands in the right place: the zone positions PlasmaZones hands the KWin effect to place an opening window at once were read when PlasmaZones started. After a layout switch, a desktop or activity switch, turning PlasmaZones off for a monitor or desktop, or rearranging monitors, a window could open in a zone its monitor no longer shows and stay there. The effect now reads them again after each of these changes. (#1125)
- A window you move to another monitor right after a monitor change stays there: sending a window to another monitor with a shortcut or the window menu shortly after a monitor was plugged in, unplugged or woke up could move it back to where it was. (#1125)
- Pressing Escape while dragging a Monocle window puts it back: cancelling the drag of a maximized window in a Monocle layout floated it and took the other window out of the stack. It now goes back into the stack, maximized as before. (#1125)
- Cancelling a window move with Escape puts a tiled window back as it was: on a monitor whose tiles float when dragged, a tiled window whose drag was cancelled kept the look of a floating window until the layout next changed, and a maximized one also lost its gaps. On a monitor whose tiles stay in the layout while dragged, a tile moved with the keyboard over a snapping monitor and back, then cancelled with Escape, was left looking floating the same way. Both now go back to their tile with their tiled look. (#1125)
- Maximize animations play for scrolling windows: maximizing or restoring a window on a scrolling monitor from its title bar now animates, and the animation set for windows let go plays on the restore. (#1125)
- A window you stop keeping on top joins the tiling again: turning off "Keep Above Others" on a window on a tiling monitor now tiles it right away, instead of leaving it floating until an unrelated change. (#1125)
- Rules that match a window title follow the title: a rule that matches the title (or the normalized caption) now applies or lets go as soon as the window renames itself, instead of at its next focus or move. (#1125)
- A window grabbed or maximized while it is still sliding into place does not jump: grabbing, resizing or maximizing a window during its snap or tile animation now starts from where the window is drawn, instead of finishing the animation underneath or jumping back to its old place. (#1125)
- A window kept above others floats back to where you left it: snapping a window you had set to stay on top, then floating it again, now returns it to the spot you last moved it to. (#1125)
- A window moved to a new desktop is placed there right away: Move to New Desktop, or switching to a desktop you just added, reached PlasmaZones before it had read the new desktop list, and the desktop was refused as one that does not exist. The window was then treated as being on no particular desktop, and a monitor switched to the new desktop could keep the old desktop's layout, until something else happened to that window or monitor. (#1125)
- Turning tiling off with no monitor tiling leaves snapped windows alone: switching autotile or scrolling off while no monitor was tiling snapped every snapped window into its zone again. (#1125)
- Picture-in-Picture windows hold their place on a scrolling strip: a window that enforces its own size, such as a Picture-in-Picture player, no longer snaps back to an older size after the strip moves it twice in quick succession. (#1125)
- Maximized windows stay maximized when their floating spot is restored: a maximized window that PlasmaZones puts back at its floating position, when it reopens or its monitor comes back, now stays maximized, and un-maximizing it lands at that position. (#1125)
- A tile maximized on another monitor's edge stays maximized: a maximized tile moved with the keyboard or by touch to another monitor and maximized there by its top edge is no longer treated as a cancelled move and put back. (#1125)
- The settings app follows desktop names as they change: renaming a virtual desktop while the settings app was open left it showing the old name, and a desktop added meanwhile could be listed without its name. It now picks up each change. (#1125)
- A window's saved size could be replaced by the size of the screen: while a window on a scrolling screen was fullscreen, PlasmaZones could record the full screen as the size to give it back when it floats. It now keeps the size it had before. (#1116)
- The shell's placement map re-read the strip on every step of a drag: each change on a scrolling strip made the map ask the daemon for the whole strip again, and the daemon laid the strip out again to answer. The map now waits for a burst of changes to settle and asks once. (#1116)
- Going fullscreen on a scrolling screen showed a floated notification: when a tiled window went fullscreen by itself, PlasmaZones took it out of the strip the same way a Meta+F float does, so the on-screen notification said the window was floated, said it was tiled again when the window left fullscreen, and its saved free size was put back over the fullscreen picture. The window still leaves the strip for as long as it is fullscreen, but quietly, with no notification and no size change. (#1116)
- Moving a free window to another desktop snapped it into a zone: on a layout with auto-assign turned on, sending a window to another virtual desktop with a KWin shortcut, the pager or Overview put it in the first empty zone there, even when you had floated it or placed it by hand. A desktop move now only fills a zone for a window that was snapped where it came from. A window that was free stays free and keeps its size and position. (#1108)
- A restored window flashed at its old size before tiling: minimize the only window on a tiling screen, open a few more, then bring the first one back. It appeared at the full work area it used to have, covering the others for the length of the restore animation, and then jumped into its tile. PlasmaZones waits for that animation before retiling, which is invisible when the layout has not moved and wrong when it has. It now notices that the screen's tiled windows changed while the window was away, or that the window was moved to another screen, and places it straight into its tile. (#1110)
- A reopened window no longer lands in a layout its desktop does not run: PlasmaZones remembers the zone a window was snapped into and puts it back there when the window reopens. It put it back by zone alone, without asking which layout the desktop in front of you actually runs, so a window snapped into Focus on one desktop and reopened on a desktop set to Master + Stack came back at the Focus zone's size and place, as if a second layout were haunting that desktop. The same happened on a desktop whose layout you had switched while the window was closed, and when a window came back after a screen returned from tiling to snapping. A remembered zone is now applied only when it belongs to the layout in force for that screen and desktop. Otherwise the window opens like any new window and follows that desktop's layout. (#1104)
- Alt+Tab could not leave a fullscreen game: with "Keep floating windows above" turned on, a fullscreen window that PlasmaZones had floated stayed on top of everything, even after you switched away from it. This happened to games whose minimum size is larger than the screen's work area, because a window that cannot fit is floated when it opens. Alt+Tab did switch to the other window, but it opened underneath the game where you could not see it. A fullscreen window is no longer kept above the others, and it goes back to being kept above as soon as it leaves fullscreen. (#1114)
- A glowing square over the system tray: apps that still use the old style of tray icon, such as Battle.net and other Windows programs run through Wine or Proton, left a small bordered and glowing square sitting on the panel. The helper that shows those icons keeps a tiny hidden window behind each one, and PlasmaZones mistook it for an application window and drew your window decoration on it. PlasmaZones now leaves those helper windows alone, so they are not decorated or animated and are never offered to snapping or tiling. (#1115)
- A game that opened fullscreen was placed on the scrolling strip: a window that was already fullscreen when it opened was put on the strip like any other window. With "Group windows of the same application as tabs" turned on, which is off by default, a game that shares an app name with its launcher landed as a tab in the launcher's column. The tab bar could show up over the game, and the first time you used a scrolling shortcut the game was pulled out of fullscreen and stretched across the strip, taking the launcher with it. It happened on some launches and not others, which made it look random. A window that is already fullscreen when it opens is now left alone, the same way snapping and tiling screens treat it, and it joins the strip only if it later leaves fullscreen. Seen with World of Warcraft started from Battle.net under Proton. (#1116)
- The tab bar could draw over a fullscreen window on a scrolling screen: a tiled window that went fullscreen by itself, such as a game, a video or a browser after F11, could end up with its column's tab bar painted on top of it, and it could slide when the strip scrolled behind it. PlasmaZones stopped treating the window as part of the strip while it was fullscreen, but the next layout update quietly undid that, so it depended on whether anything else on the strip changed in the meantime. The window now leaves the strip for as long as it is fullscreen, which the entry "A window in its own fullscreen still held its column on the strip" below describes, so no tab bar is drawn over it and nothing moves it. (#1116)
- Scrolling shortcuts pulled a window out of fullscreen: moving focus along the strip, by shortcut or by the wheel, took any fullscreen window on that screen out of fullscreen first. A game that only runs at one size then fought the column it was given and could leave its whole column stretched across the screen. 3.4.5 made the wheel do this, and 3.4.6 made every keyboard verb that acts on the strip do it, width and height changes included, so that the strip and a window covering it could not drift apart. That is reversed on purpose. A window in its own fullscreen now leaves the strip instead, so there is nothing left to drift, and moving around the strip by shortcut or by the wheel leaves a fullscreen window alone. (#1116)
- A window in its own fullscreen still held its column on the strip: a tiled window that went fullscreen by itself kept its column, so the windows beside it did not close up and focus could land on the hidden column. With "Group windows of the same application as tabs" turned on, a game could also sit as a tab inside its launcher's column. The window now leaves the strip for as long as it is fullscreen. When it leaves fullscreen it returns to its slot in its column at the width it had, or to a fresh column if the window it sat beside has closed in the meantime. PlasmaZones' own windowed fullscreen is not affected. (#1116)
- Windowed fullscreen turned off every decoration on the monitor: with "Stop while a window is fullscreen" turned on, putting a column into windowed fullscreen removed the decorations from the panels and from everything else on that monitor until you toggled it back. A window in windowed fullscreen stays its column's size and the panels stay on screen, so it no longer counts as fullscreen for that setting. The window itself still has no border while it is held. (#1116)
- A fullscreen window could come back undecorated after a desktop round trip: on a scrolling screen, switch away from a desktop while a window on it is fullscreen, come back, and take the window out of fullscreen. PlasmaZones had set the window aside for the desktop switch and never picked it up again, so it stayed out of the strip and without its decoration until you left the desktop and returned once more. A window set aside like that is now picked up again when it leaves fullscreen with its desktop in front, and it returns to its column straight away. (#1116)
- A restarted effect could save the screen size as a window's free size: if the KWin effect restarted while a window on a scrolling screen was fullscreen, the first time that window left fullscreen its full-screen frame was written down as the size to give it back when it floats, and a later float made it fill the screen. The frame of a window that has just left fullscreen is never its free size, so it is no longer recorded. (#1116)
- The shell's placement map could show the wrong mode's cells: when a screen changed placement mode while the map was still waiting on an answer from the daemon, the answer for the old mode landed on the new one, so a tiling or snapping screen could briefly show a scrolling strip or a set of zones it does not run. A map that is pinned, or whose screen has moved to another mode, now ignores answers meant for the mode it left. Each step of a drag on a scrolling screen also made that screen's other maps re-read their layout, including maps pinned to a snapping or tiling desktop. Those re-reads are now folded together, like the strip re-read is. (#1116)
- Restoring a minimized window could put a fullscreen window on the strip: on a scrolling screen, a window brought back from minimize is put back in its column a moment after the restore animation. If the window went fullscreen in that moment, it was placed on the strip anyway, as a full-screen column. The window is now checked again just before it is put back, and a window that has gone fullscreen is left alone until it leaves fullscreen. (#1116)
- Maximizing one tab maximized the whole tab group: clicking the maximize button on the tab in front of you, an app maximizing itself, or KWin's own maximize shortcut stretched the entire column, and the column stayed stretched after that window was gone. A game that opened as a tab beside its launcher could leave the launcher filling the screen. When the window that asks is the one in front of the focused column, and that column holds other windows as tabs or in a stack, it is now moved into a column of its own and maximized alone, and it stays in that column when you un-maximize it. A window in front of a column that is not the focused one still maximizes its whole column, as a background tab does. PlasmaZones' Maximize to Screen Edges shortcut, Meta+Alt+M, still maximizes the focused column with all of its tabs. (#1116)
Installation
Arch Linux (AUR):
yay -S plasmazones # or plasmazones-binArch Linux (manual):
sudo pacman -U plasmazones-3.5.0-*-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.5.0-*_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.5.0-*.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.5.0-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.5.0.tar.gz"}/packaging/nix/package.nix"
{ version = "3.5.0"; })
];Post-Installation
systemctl --user enable --now plasmazones.service
systemsettings kcm_plasmazones