github fuddlesworth/PlasmaZones v3.5.3
PlasmaZones v3.5.3

2 hours ago

PlasmaZones v3.5.3

Fixed

  • A window taller than its scrolling tile no longer covers the tile below it: a window that made itself taller than its share of a column it was stacked in with others, as some games do to keep a whole-number scale, hung over the window under it. Its tile now gets the height the window takes and the other tiles in the column share what is left, or the window floats when the column cannot hold them all. The tile gives that height back once the window has its column to itself again on every desktop it is shown on, once the column's width changes, or once you resize the window across the strip yourself. On a strip that runs vertically this applies to the window's width. Like the width, this is learned only while "Respect minimum size" is on. (#1156)
  • An X11 window wider than its scrolling column widens the column too: the column widening for a window that makes itself wider than its column worked only for Wayland apps. An X11 app running through XWayland that keeps resizing itself past its column now widens the column the same way. A single resize that KWin or a script makes is still put back. (#1157)
  • A scrolling column that was once wider peeks past the screen edge again: a column that had once been wider than it is now stayed hidden off screen whenever it reached past the edge, instead of showing the part that fits, until it was shown in full. It now peeks again once the window has taken its narrower size. (#1154)
  • Move to Screen hands a scrolling window cropped at the screen edge to the other screen's strip: a column reaching past the edge of its monitor, with most of it on the neighbouring monitor, was not taken in by that monitor's strip when you sent it there with Move to Screen, and PlasmaZones could pull it back to the monitor it came from. (#1153)
  • Fixed-size zones can keep their exact pixel size under display scaling: a fixed-size zone's numbers are scaled pixels, like every other size in Plasma, so a layout drawn to fill a screen at 100% grew with the display scaling and overflowed it at 125%. The layout settings in the editor now offer "Fixed sizes count physical pixels". With it on, a zone keeps the size you entered on the screen itself at any scaling, and layouts follow when a screen's scaling changes. Existing layouts are unchanged until you turn it on. (#1160)
  • Resizing a centred scrolling column with the mouse puts its edge where you let go: with the focused column always centred, or a lone column centred, dragging one edge of a window in the strip changed the column by the drag and then centred it again, so the edge you dragged moved back by half the distance and reaching the edge of the screen took several tries. The column now changes by twice the drag when it will be centred, so the dragged edge stays where you released it and the other edge moves to match. The same holds across the strip for a lone window or a tabbed column when short columns are centred, which is the top or bottom edge on a strip that runs side to side and the left or right edge on one that runs top to bottom. A window stacked with others still takes the drag as it is. The far edge moves only when you let go, because the window is KWin's to resize while you drag. When the focused column is not centred, dragging its leading edge now keeps the far edge where it was, so the edge you dragged also lands where you let go. (#1158)
  • An app's splash screen no longer sizes its main window: with a minimum window size set, a splash screen smaller than it, like the one Discord and Equibop show while loading, was left alone. When it closed, though, PlasmaZones remembered its size and spot, and the app's main window opening next took them and floated there. Being as small as the splash, it then stayed out of tiling and snapping. A window kept out of placement, by its size or by a rule, is no longer remembered when it closes. (#1158)
  • A floating window dragged into the scrolling strip keeps its size: with the default column width or window height set to "Window decides", a floating window dragged into the strip was given the fallback size on that axis instead of the size it had. It now joins the strip at the width you were holding, and at the height you were holding too when it lands in a column of its own, and the drop indicator shows that size. With a set column width, a window that floated as it opened and is then dragged into the strip takes that width, where it used to get half the screen. (#1158)
  • Snapped windows go back to their zones after a visit to a tiling or scrolling desktop: a window shown on several desktops, snapped on one and placed by a tiling or scrolling desktop on the same monitor, stayed at its tile or strip size and position when you went back to the snapping desktop, until you picked the layout again. It now returns to its zone. A window snapped across several zones gets all of them back when its monitor returns to the layout it was snapped in, where it used to keep only the first, and a window that never made it into a tiling or scrolling desktop is no longer moved to a stale position when you leave that desktop. (#1151)
  • A window on several desktops keeps its place on each of them: a title change could arrive with the window's desktops listed in another order, and PlasmaZones then took the window to have left all but one of them and forgot its zone or tile there. A window on several activities could lose them the same way, and keeps them now too. (#1147)
  • Activities are followed when the activity service starts after PlasmaZones: if the activity manager was not running yet when PlasmaZones started, switching activities later changed nothing in PlasmaZones until it was restarted, so per-activity layouts and rules stayed on the activity it started with. (#1146)
  • Only the compositor can report what it sees: the calls through which the KWin effect tells PlasmaZones where windows are, what size they committed, when they open, close, move or are dragged, and what the screens look like, could be made by any program on your session bus, and PlasmaZones acted on them as fact. They are now accepted only from the compositor that registered, and a program that tries one is refused. Only the compositor's own process can register, so no other program can take that registration, even one that starts before KWin or registers while PlasmaZones restarts. The check is made on KWin's connection to the session bus, which every KWin effect and KWin script shares, so those calls are accepted along with the PlasmaZones effect's own. (#1155)
  • Switching Tiling off and on again keeps your Tiling quick-layout shortcuts: turning Tiling off cleared the layouts you had put on the Tiling quick-layout shortcuts, and turning it back on did not bring them back. They are now kept. (#1158)
  • A floating window reopens where it floated on a split monitor: once a monitor was split into virtual screens, a window remembered floating on it was still filed under the whole monitor, so it was not restored when it opened again. It now reopens on the part of the monitor it floated on. (#1158)
  • Brazilian Portuguese button tooltips read as actions: tooltips for removing a preset, an action, a condition, a zone or a template column used a form that describes rather than asks, such as "Remove esta predefinição". They now read as actions, as in "Remover esta predefinição". (#1152)

Installation

Arch Linux (AUR):

yay -S plasmazones  # or plasmazones-bin

Arch Linux (manual):

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

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

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

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

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

sudo dpkg -i plasmazones_3.5.3-*_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (COPR):

sudo dnf copr enable fuddlesworth/PlasmaZones
sudo dnf install plasmazones

Fedora (manual RPM):

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

openSUSE Tumbleweed (OBS):

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

Fedora Atomic (Kinoite):
Layer the COPR package. Replace 44 with your Fedora release.

sudo curl -fsSL -o /etc/yum.repos.d/plasmazones.repo https://copr.fedorainfracloud.org/coprs/fuddlesworth/PlasmaZones/repo/fedora-44/fuddlesworth-PlasmaZones-fedora-44.repo
rpm-ostree install plasmazones
systemctl reboot

Arch-based tarball (no root):
Built on Arch Linux, so it only runs where KWin is exactly the version Arch shipped at release time and Qt is the same or newer. It does not work on Fedora, Debian or SteamOS. The installer checks both versions and stops before copying anything if they do not match.

tar xzf plasmazones-3.5.3-linux-x86_64.tar.gz
cd plasmazones-linux-x86_64
./install.sh

NixOS (flake):

# flake.nix inputs
plasmazones.url = "github:fuddlesworth/PlasmaZones";

# configuration.nix
programs.plasmazones.enable = true;

NixOS (without flakes):
Build this tag's source against your host's pkgs (no release asset needed):

# configuration.nix
environment.systemPackages = [
  (pkgs.callPackage
    "${builtins.fetchTarball "https://github.com/fuddlesworth/PlasmaZones/archive/v3.5.3.tar.gz"}/packaging/nix/package.nix"
    { version = "3.5.3"; })
];

Post-Installation

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

Don't miss a new PlasmaZones release

NewReleases is sending notifications on new releases.