Commit Graph
170 Commits
Author SHA1 Message Date
LGUG2Z bc5f4babc4 feat(nix): commands as shared steps and KDE extras 2026-10-30 12:03:01 -07:00
LGUG2Z b09011dce7 fix(nix): a suite step may call something that returns a value 2026-10-30 12:03:01 -07:00
LGUG2Z 5570e994e7 docs(repo): rules_exe passes on kfw 2026-10-30 12:03:01 -07:00
LGUG2Z d84d0b98e7 docs(repo): a ledger of the checks that moved to shared scenarios 2026-10-30 12:03:01 -07:00
LGUG2Z f5db6975b4 feat(nix): hotplug as shared steps and KDE extras 2026-10-30 12:03:01 -07:00
LGUG2Z 47123ad748 feat(nix): scoped checks and a suite helper in the core 2026-10-30 12:03:01 -07:00
LGUG2Z 15d6a5aef3 feat(nix): exe_id spells the id of a rule for a program 2026-10-30 12:03:00 -07:00
LGUG2Z f4dbc790a0 docs(repo): config_reload and locking pass on kfw, rules_exe needs exe_id 2026-10-30 12:03:00 -07:00
LGUG2Z dbe84192d4 feat(nix): an optional komorebi-recorder in the core suites 2026-10-30 12:03:00 -07:00
LGUG2Z ce5b389bad docs(repo): config reload, exe rules and lock in the scenario table 2026-10-30 12:03:00 -07:00
LGUG2Z 2e078f9ef6 feat(nix): config reload, exe rules and lock scenarios in the core 2026-10-30 12:03:00 -07:00
LGUG2Z fcf19933be docs(repo): rules_class passes on kfw 2026-10-30 12:03:00 -07:00
LGUG2Z 13d740bfdf docs(repo): reloading the configuration and rules by exe are not neutral 2026-10-30 12:03:00 -07:00
LGUG2Z 733a5a4934 feat(nix): the rules_class scenario, and an app id for Platform.spawn
A workspace rule by class sends a window to its workspace, an ignore
rule by class leaves one alone, and a window of another class stays
where it opened. Platform.spawn takes an app_id, which is foot's -a on
KDE and the window class on Windows. core-e2e passes 271 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 6a6d5ce49a docs(repo): rules_class is in the table 2026-10-30 12:03:00 -07:00
LGUG2Z ccbfc83463 docs(repo): scrolling passes on kfw 2026-10-30 12:03:00 -07:00
LGUG2Z e375d0a151 feat(nix): the scrolling scenario
In the scrolling layout each window in turn, given the focus, has it
and is inside the work area; changed back to bsp, every window is where
the layout says. core-e2e passes 265 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 9c29757cff docs(repo): lifecycle_hidden passes on kfw, and scrolling is in the table 2026-10-30 12:03:00 -07:00
LGUG2Z 672a6951bd feat(nix): the lifecycle_hidden scenario
A window put away on another workspace is managed again after the
daemon stops and starts, and the ones in view are inside the work area
and clear of each other. KdePlatform.start_komorebi waits for the unit
to be gone first: systemctl start does nothing for a unit that is still
stopping, and a daemon with a window put away took longer to exit.
core-e2e passes 261 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 2be21aaa6d docs(repo): tiling_off passes on kfw, and lifecycle_hidden is in the table 2026-10-30 12:03:00 -07:00
LGUG2Z 74ddcce4d9 feat(nix): the tiling_off scenario
toggle-tiling leaves the windows where they are, a layout change moves
none of them, and toggled again every window is tiled where the layout
says. core-e2e passes 254 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 1e2b10eb86 docs(repo): pausing passes on kfw, and tiling_off is in the table 2026-10-30 12:03:00 -07:00
LGUG2Z 6e111411e7 feat(nix): the pausing scenario
A window that opens while the daemon is paused is not managed; after
toggle-pause again the next one is, and every window is where the
layout says. core-e2e passes 248 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 0d8f073dc8 docs(repo): promoting and flipping pass on kfw, and pausing is in the table 2026-10-30 12:03:00 -07:00
LGUG2Z d58353d22e feat(nix): the flipping scenario
flip-layout horizontal puts every window where the mirror of its place
is, with every window where the layout says, and flipping again gives
the places back. core-e2e passes 244 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 63d5833a84 feat(nix): the promoting scenario
promote puts the focused window on the first tile and keeps its focus,
with every window where the layout says. core-e2e passes 241 checks on
KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 211acae92d docs(repo): workspace_moves, resize_commands and promoting in the table 2026-10-30 12:03:00 -07:00
LGUG2Z 9b1162dcbe feat(nix): the resize_commands scenario
resize-axis horizontal increase widens the focused window and decrease
gives the width back, with every window inside the work area and none
over another, and no pointer. core-e2e passes 237 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z a8b30e1c1b feat(nix): the workspace_moves scenario
move-to-workspace takes a window to another workspace and the focus
with it, focus-last-workspace goes back and forth, and moving the window
home tiles everything again. core-e2e passes 233 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 4a3b0c4b14 docs(repo): layouts, floating, minimizing and padding, and a padding finding
The scenario table has the four new scenarios, which pass on both
ports, and maximizing, which kfw has not run. The state's padding and
the frames' disagree on both ports, by 10 px on kfde and 7 on kfw.
2026-10-30 12:03:00 -07:00
LGUG2Z f1ea111fd0 feat(nix): the maximizing scenario
toggle-maximize gives a window the work area, with the others where they
were and the daemon naming it as the maximized window; toggled again,
every window is tiled where the layout says. core-e2e passes 225 checks
on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z d4d356c70e feat(nix): the padding scenario, and padding in Snapshot
Raising the workspace padding moves the windows in from the edge by as
much, and raising the container padding leaves them less room; putting
the padding back gives back the windows' frames. The measure is of the
padding the scenario sets itself: on KDE the state says 0 and 0 while
the windows sit 10 px in, and the first run's padding is not what the
state says. Workspace has workspace_padding and container_padding now.
core-e2e passes 220 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 4471cc01a8 feat(nix): the minimizing scenario, and Platform.minimize
A minimized window leaves its room to the others, and a restored one
takes it back. Platform.minimize is new: the title bar button on KDE;
activate restores. core-e2e passes 213 checks on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z 4835907b2e feat(nix): the layouts and floating scenarios
layouts changes the layout of the first workspace to each of eight, with
three windows and with five, and checks every window is where the
daemon's layout says, inside the work area and clear of the others.
floating floats a window, checks the others take its room, and that
floating it again tiles it back. Both run in core-e2e: 209 checks pass
on KDE.
2026-10-30 12:03:00 -07:00
LGUG2Z b4dffcaa7a docs(repo): focus_follows_mouse passes, and five green runs on kfw
The scenario's failure was its own: it waited for a focus that already
held. Five consecutive runs of 14 scenarios on Windows passed, hotplug
and focus_follows_mouse apart.
2026-10-30 12:03:00 -07:00
LGUG2Z 4158f63557 fix(nix): focus_follows_mouse rests the pointer over the focused window
On again, the scenario moved the pointer over the first window, which
already had the focus, so it waited for nothing and moved on to the
second at once. A platform that follows the pointer by a hover delay
never saw it enter the first. The pointer now rests there for a
moment, as it would for a person.
2026-10-30 12:03:00 -07:00
LGUG2Z 4c8404dfa0 docs(repo): the scenarios there are, restart_with and known failures 2026-10-30 12:03:00 -07:00
LGUG2Z 7e20061763 docs(repo): focus follows mouse, on again, fails on kfw
The last check of focus_follows_mouse fails on a Windows guest after
the setting was turned off with the pointer on a window and on again;
disable then enable works. The cause is not known, and the scenario is
unchanged.
2026-10-30 12:03:00 -07:00
LGUG2Z ddab35b5b9 feat(nix): the focus_follows_mouse scenario, with a pointer
With focus follows mouse on, the pointer over a window gives it the
focus, and the daemon follows; turned off, it moves nothing; turned on
again, it follows again. The scenario needs a pointer and is skipped
without one. The toggle passes --implementation windows, which kfw's
subcommand requires. drag-resize runs it after resize.
2026-10-30 12:03:00 -07:00
LGUG2Z 7e271955d7 docs(repo): startup_rules passes on Windows too 2026-10-30 12:03:00 -07:00
LGUG2Z efeaafad28 feat(nix): the startup_rules scenario, workspace rules of a file
A window that was open before the daemon, and one that opens after, go
to the workspace a rule in the config names, by the start of their
title; a window no rule names stays on the first. The rule is in the
file, so what is checked is how the file is read at start. core-e2e
runs it as section 12a2.
2026-10-30 12:03:00 -07:00
LGUG2Z 157b3d5e8c docs(repo): kfw keeps a monitor that was unplugged, sometimes
Reported by the kfw session from a probe: the reconciliator sees the
removal and loops on it, and state lists two monitors for as long as it
is watched. It passes in some runs, so it is not a known failure; the
check stays red when it fails.
2026-10-30 12:03:00 -07:00
LGUG2Z 00aec79ee4 docs(repo): the same overlapping-tiles mutation turns kfw red
65 checks failed over 14 scenarios on Windows, all about geometry; rules
and placement, which check only order, stayed green.
2026-10-30 12:03:00 -07:00
LGUG2Z 45fa501d20 docs(repo): a daemon whose tiles overlap turns core-e2e red
Run once on a real KWin with every tile 200 pixels too wide, and not
committed: seven checks failed, all about tiles on each other, and the
other 139 passed.
2026-10-30 12:03:00 -07:00
LGUG2Z f5fad1b2e6 docs(repo): the three ways kfw's placement type is described
Its docs say a place is a string or an integer, its deserializer takes
a string only, and its schema describes objects. Nothing tests the
integer.
2026-10-30 12:03:00 -07:00
LGUG2Z b1e041f53d feat(nix): placement takes known failures by case
A port that cannot start with a case's rules, or orders its windows
otherwise, is recorded as a known failure for that case, and the other
cases run on. kfw does not accept the place as a JSON number, so
BEHAVIOUR.md lists the case as a known failure there.
2026-10-30 12:03:00 -07:00
LGUG2Z b5e9cf5301 feat(nix): the placement scenario, and Platform.restart_with
Where a window that opens goes, from the placement rules of the
config: none, Primary, a number as a number and as text, and rules by
title for the first and the last place. restart_with starts the daemon
afresh with a komorebi.json the scenario gives. KdePlatform.spawn
quotes the title, which a title with spaces needs. core-e2e runs it as
section 12a.
2026-10-30 12:03:00 -07:00
LGUG2Z 7b8a559590 docs(repo): what a daemon that starts again takes up on kfw
A window kfw had cloaked is uncloaked by the stop and managed again on
the first workspace. A minimized window is left minimized and is not
managed. The lifecycle scenario counts only the windows in view.
2026-10-30 12:03:00 -07:00
LGUG2Z 2afe3554ee docs(repo): what is not covered on Windows, and the sweep under load
The pointer on kfw reaches the first display only, because QMP's
absolute tablet is mapped there. The commands sweep passed in the two
runs that had the host to themselves and failed in the two that ran
beside a VM suite and a build.
2026-10-30 12:03:00 -07:00
LGUG2Z 88a431ce8a docs(repo): resize, rules and lifecycle pass on Windows
kfw's 0ffc502c fixes the resize shortfall: a 60 pixel drag widens the
left tile by exactly 60. The commands sweep passes with a second
display, and rules, hotplug and lifecycle pass on a Windows guest.
The earlier sweep failures came with a kfde suite running beside it.
2026-10-30 12:03:00 -07:00