Skip to content

Releases: DGBooth/HyprKwin

HyprKwin 1.1.0

Choose a tag to compare

@DGBooth DGBooth released this 22 Oct 18:27

HyprKwin animations 1.1.0 (changed in this release).

Added

  • Outer gaps can differ per side: Top, Right, Bottom and Left on the
    settings page, gapsout:T R B L in a workspace rule, and a gaps_out with
    a value per side when importing a hyprland.conf. The outer gap still sets
    every side, and a side left at "same as outer gap" follows it, so existing
    settings carry over. Contributed by Perrelli9338.
  • A stage layout, after macOS's Stage Manager. The focused window takes
    the stage; the workspace's other windows wait beside it as live previews,
    tilted towards it, most recently used at the top. Click a preview (or cycle
    with the "next window in the layout" keys) to bring that window onto the
    stage: it grows out of its preview while the one it replaces shrinks into
    the strip, at Plasma's animation speed. The previews have a strip of their
    own, so the stage window never covers them (the strip between them is
    still the desktop's, to click); it goes on the left or right, and its
    width is set on the Layout tab. Floating windows stay in front of the
    stage. Right-click a preview to close its window. With more windows than fit, the mouse wheel over the previews
    scrolls the strip. Windows can share the stage too: drag a preview onto it and
    that window joins the one there; they wait in the strip together, as one
    preview with both icons, and come back together. Drag a window off the
    stage onto the strip (Meta+drag), or right-click a set's preview, to part
    them again. Choose it like the other layouts: "Next layout", the new "Use
    the stage layout" shortcut (unbound), the default layout setting,
    layout:stage in a workspace rule, or hyprkwinctl layout stage.

Changed

  • Borders and icon tiles step aside for Plasma's own popups (the app
    launcher, the calendar, the system tray) as they already did for menus,
    rather than being painted over them; so do the stage layout's previews.

  • Animations: HyprKwin's own borders, tab bars and stage previews no
    longer fade or scale in and out with Plasma's popup and window effects

    (Fading Popups, Scale, Glide, Fade). They come and go with the windows they
    belong to; the animations effect now claims their opening and closing, the
    way Plasma's effects leave a window to whichever effect claimed it. This is
    what lets a stage switch land without anything fading half way.

Fixed

  • Closing a window you had not focused since it opened left nothing
    focused
    , or Plasma's own pick, rather than the window taking its place.
    KWin focuses a new window before HyprKwin hears of it, so it never counted
    as the focused one. In the stage layout, where the other windows wait off
    screen, nothing got the focus at all.

HyprKwin animations 1.0.1

Choose a tag to compare

@DGBooth DGBooth released this 21 Oct 12:35

The script is unchanged: HyprKwin 1.0.0 is still current.

Changed

  • Smoother animations when windows are re-tiled quickly. A window
    re-tiled while it is still moving now carries on from where it is drawn,
    bending towards its new tile, rather than jumping back and starting over
    (and without the brief cross-fade that came with that). Under fractional
    scaling, the rounding KWin sends a moment after a re-tile no longer
    restarts the animation as the window arrives.
  • Maximizing works with Plasma's Maximize effect. While that effect is
    on, maximizing and restoring are left to it, and HyprKwin takes over only
    where it gives up or does not follow a move; with it off, HyprKwin animates
    maximizing itself. This replaces a blanket half-second pause in animations
    after every maximize.
  • Nothing animates when Plasma's animation speed is set to Instant.

Ported back from KDE Animated Tiling,
microsoftruinseverything456's fork of these animations focused on tiling
(GPL-3.0-or-later, like HyprKwin). Thank you!

HyprKwin 1.0.0

Choose a tag to compare

@DGBooth DGBooth released this 18 Oct 17:30

HyprKwin animations 1.0.0 (unchanged since 1.0.0-rc2).

HyprKwin 1.0. No headline feature: a promise that what is there stays
put and keeps working. From here on, your settings, shortcut names and keys,
window and workspace rules, submaps, saved layouts and hyprkwinctl's
commands and JSON carry over every upgrade (a change that would break one
waits for 2.0); docs/compatibility.md lists exactly
what is kept.

Coming from the KDE Store's 0.17, everything in 1.0.0-rc1 and rc2 below is
new to you. In short:

  • Rules from the window menu (Alt+F3 › Extensions › HyprKwin › Always
    float / tile / open in the scratchpad).
  • Fullscreen and maximize rules move to Plasma's own window rules by
    themselves; HyprKwin's rules are for what Plasma's cannot do.
  • Plain descriptions throughout the settings page and shortcuts.
  • Fixes: a script error loop with two monitors (found by a new,
    hours-long soak test), and directional focus to a monitor a window had
    just left.

Changed

  • Supported: Plasma's LTS and current releases, on Wayland — 6.6 (the
    LTS) and 6.8 — both tested before every release, the LTS now with
    plasmashell too. 6.7 should keep working, but is no longer tested now that
    6.8 has replaced it.

HyprKwin 1.0.0-rc2

HyprKwin 1.0.0-rc2 Pre-release
Pre-release

Choose a tag to compare

@DGBooth DGBooth released this 13 Oct 19:59

HyprKwin animations 1.0.0-rc2 (changed in this release).

Added

  • Rules from the window menu. Alt+F3 on a window (or right-click its
    title bar) › Extensions › HyprKwin › Always float, Always tile or
    Always open in the scratchpad: the rule for that app goes into the
    settings page's list, replacing an earlier one of those for it, and the
    window follows it at once. KWin only lets JavaScript scripts add to that
    menu, so HyprKwin starts a small one (code/menu.js) alongside itself. The
    three are shortcuts too, unbound.

Changed

  • Window rules are for what Plasma's own cannot do. fullscreen and
    maximize rules did exactly what Plasma's window rules (System Settings ›
    Window Rules) do, so they move there by themselves when HyprKwin starts,
    with a message saying so; a rule with a floating: matcher, which Plasma's
    rules cannot express, stays and keeps working. Plasma's own rules are kept
    as they are, in whichever format your Plasma keeps them. The hyprland.conf
    importer likewise writes fullscreen, maximize, minsize, maxsize and
    nofocus rules as Plasma window rules (once, however often it runs). The
    rest of HyprKwin's rules are about tiling, workspaces, scratchpads and
    floating windows, or override HyprKwin's own settings. Raised on r/kde by a
    KDE contributor.

  • Descriptions say what things do, for Plasma users. The settings page,
    the animations' settings, shortcut descriptions, the store description and
    the docs explained features by comparison with Hyprland ("like Hyprland",
    dwindle:force_split, "Inner gaps (gaps_in)"). They now describe each
    setting plainly; Hyprland comes up where it helps someone moving over (the
    default keys, the rule syntax, the importer). A few shortcuts read
    differently — "Keep window at its own size in its tile" (was "Pseudotile
    window"), "Send window to workspace N (stay here)" (was "Move window
    silently…"), "Back to the workspace you were on" (was "Former workspace")
    — with the same names and keys.

HyprKwin 1.0.0-rc1

HyprKwin 1.0.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@DGBooth DGBooth released this 12 Oct 17:56

HyprKwin animations unchanged: 0.16.1 is still current.

Fixed

  • Meta+→ (or any direction) to a monitor a window had just left did
    nothing.
    With nothing that way on its own monitor, HyprKwin asked KWin
    for "the screen to the right", which KWin counts from its own idea of the
    active screen, and just after a window went to the other monitor and came
    back that was still the other one. The monitor that way is now found from
    where the focus is.

  • A script error loop with two monitors (in every release since at least
    0.12, emulated per-monitor workspaces): a window sent back to its monitor
    just after the split beside it was nudged took the focus while still on its
    way; the current desktop followed it, KWin focused a window on that
    desktop, the desktop followed that one back, and so on until HyprKwin ran
    out of stack ("Maximum call stack size exceeded" in the log). A focus
    change HyprKwin's own desktop switch caused no longer moves the desktop
    again. Found by the new soak test (tests/e2e/soak.py), which runs hours
    of everyday use on two monitors and watches for errors, leaks and slowdown.

  • Upgrades are rehearsed: the tests install 0.10, 0.12 and 0.15 from
    their release tags, with lived-in settings (an old-style rule, a submap, a
    workspace rule, colours and gaps, a key of your own, a saved layout),
    upgrade them as the KDE Store does, log in again, and check that all of it
    carried over and that the new version is the one running.

  • Faster layout switches with many windows open. Switching layout on a
    workspace with 40 windows took up to 75 ms (a visible stutter), most of it
    making the icon tiles that stand in for tiles too small to use; those are
    now kept and used again, and the same switch takes about 25 ms. HyprKwin
    times its layout and drawing, and the tests hold them to a budget.

HyprKwin 0.17.0

Choose a tag to compare

@DGBooth DGBooth released this 11 Oct 22:56

HyprKwin animations unchanged: 0.16.1 is still current.

  • The README is now a short front page, with the details in
    docs/: getting started,
    settings, rules and scripting,
    troubleshooting (new: the common problems, and
    how to report one) and development.

  • hyprkwinctl comes with the KDE Store package (in
    ~/.local/share/kwin/scripts/hyprkwin/contents/tools/), and bug reports on
    GitHub have a form asking for what it says (hyprkwinctl version).

  • HyprKwin says when the animations are missing or off. The animations
    are a separate KWin effect, and the KDE Store cannot make one depend on
    the other, so it is easy to end up with the script alone, or with the
    effect installed but never turned on (KWin only finds a new effect after
    logging in again, and then it still has to be switched on). Shortly after
    starting, HyprKwin says which, and where to fix it. Once: it remembers
    having said so, and "Tell me when the animations effect is missing or
    turned off" on the settings page (Behaviour) turns it off.

  • The message about keys other shortcuts hold comes once, not at every
    login, and gives the command that hands them over. It comes again only if
    a key comes to clash later (a Plasma update, say). Meta+K still marks every
    one.

  • The animations effect keeps its own version from now on: it only
    changes when the animations do, so an update to the script no longer
    brings an update to the effect with nothing in it. Every release says
    which version of the animations goes with it, and has both files.
    (tools/release.sh does the releasing.)

HyprKwin 0.16.1

Choose a tag to compare

@DGBooth DGBooth released this 11 Oct 17:50

Fixed

  • The keys guide (Meta+K) opened empty the second time: only its title
    and search box showed. It now opens at the full list's height every time,
    and keeps that height while a search narrows the list (Qt also stops
    warning about a binding loop on its height).
  • With focus following the mouse, the keys guide closed as soon as the
    pointer moved.
    Nothing has the keyboard while the guide is up, so the
    first window the pointer crossed took the focus, and taking the focus
    counted as being done with the guide. Focus that only follows the pointer
    (KWin's focus policy or HyprKwin's own setting) no longer closes it; Escape
    or Meta+K do, and the window under the pointer keeps the focus.

HyprKwin 0.16.0

Choose a tag to compare

@DGBooth DGBooth released this 11 Oct 11:43
  • The workspace keys work on any keyboard layout. Plasma matches a
    shortcut by the character a key types, so the defaults (Meta+! …
    Meta+) for moving a window to a workspace) only ever worked on a US
    layout: on a UK one Meta+Shift+3 is Meta+£, and on AZERTY even
    Meta+1 needs Shift. HyprKwin now gives the workspace keys (switch, move,
    move silently, group window) the characters of the layout in use, from a
    table of every layout xkb knows, and follows when you switch layout. A key
    you rebound yourself stays as it is; where a layout's character already
    belongs to another shortcut, the workspace key keeps its old one and the
    key check reports it.
  • Getting ready for 1.0: docs/compatibility.md
    lists what stays stable across upgrades (settings, shortcut names, rule
    syntax, hyprkwinctl's commands, saved layouts) and what does not. Along
    with it:
    • Window rules kept the old way (one text entry, from before the settings
      page had its list) move into the list, so the page shows them. They
      applied all along; now you can see and edit them.
    • Saved layouts carry a format version. Older ones are still read.
    • hyprkwinctl version says what is installed and running, and which
      KWin. hyprkwinctl state is marked as internal, for debugging; scripts
      should use windows --json and workspaces --json.
    • The dumpState shortcut is labelled "Used by hyprkwinctl (leave
      unbound)" in System Settings, and left out of the keys guide.
  • A submap whose key another shortcut holds is reported, as HyprKwin's
    other keys already were: on screen at start, and in the keys guide.
  • Tests: a crash in the test sandbox no longer shows up as a crash of your
    desktop. Nothing the tests start leaves a core dump (a core limit of 1
    makes the kernel skip systemd-coredump, which KDE's crash reporter reads),
    and the sandbox has its own cache and state folders, where KWin's crash
    handler writes. A test still fails on a crash, from KWin's log.

HyprKwin 0.15.1

Choose a tag to compare

@DGBooth DGBooth released this 10 Oct 15:49
  • The keys guide (Meta+K) can be searched
    (#6): type and it narrows to
    the shortcuts whose name, section or keys hold every word, or whose name
    has the letters in order (mvws finds "Move window to workspace"). Escape
    empties the search, then closes the guide. While it is up nothing else has
    the keyboard, so typing reaches no window underneath; the one you were in
    has it back after. KWin gives scripts' windows no keyboard, so the guide
    holds the letter keys itself while it is up, and lets KDE forget them
    after: neither they nor its scrolling keys stay listed in System Settings
    any more.

HyprKwin 0.15.0

Choose a tag to compare

@DGBooth DGBooth released this 10 Oct 13:45
  • Ready for Plasma 6.8. Nothing HyprKwin uses changed, but KWin 6.8
    checks scripts more strictly and logged a warning for every setting read
    before the line that declares it; those are declared first now. The
    end-to-end tests also run against Plasma 6.8 in a container
    (tools/test-plasma.sh 6.8, which replaces tools/test-plasma-6.6.sh:
    tools/test-plasma.sh 6.6 runs the 6.6 one).
  • Tests: the panel tests run against a real plasmashell again (it needs
    kactivitymanagerd, and software drawing when nested on NVIDIA), and on
    Plasma 6.8 too; tests whose tools are missing say SKIP rather than pass;
    nothing the sandbox starts reaches your own session or outlives it; and
    on a machine with an integrated GPU beside an NVIDIA one, the tests use
    the integrated one.
  • The open/close animation picked in the animations effect's settings
    holds on Plasma 6.8.
    6.8 can load its own (Scale, by default) after
    HyprKwin's effect at login, which left both running; the choice is now
    applied again as windows open.

Fixed

  • Activities (#2):
    • Going to a workspace could switch activity. A workspace remembers the
      window used last on it, and focusing that window, when it was on another
      activity, took KWin there. Only windows on the current activity (and not
      minimized) are given the focus now, there and when a window closes.
    • Switching activity with several monitors could shuffle what they show,
      putting two workspaces' windows on one monitor. KWin remembers a desktop
      for each activity and switches to it, which HyprKwin took for a
      workspace switch on the monitor in use. Each activity now remembers what
      every monitor showed on it, and gets it back.
    • After switching activity, the window you last used there has the focus.