Repository navigation
Two-screen fixes, headless visual checks, release workflow and repo cleanup - #9
Merged
linsaftw merged 27 commits intoOct 27, 2026
Merged
Conversation
The shape-span iterator borrowed its clip bounds past the function, so flamewm-render-x11 no longer compiled. Test-only shadow helpers are now cfg(test), the Task Manager literals and loops satisfy the workspace lints, and rustfmt is applied to the files that pass touched.
The shared menu frame now uses the translucent white contour, and a frame that leaves a drag gesture re-shades as soon as it settles, as the scene code always did. The Qt appearance test only expects the owned kdeglobals prefix when the KDE platform theme plugin is installed.
Sixty-nine dated pass reports, handoff notes and a session transcript move from docs/ and the repository root into docs/history/. The root symlinks to scripts/ and the one-off cleanup script are gone or moved under scripts/, and MANIFEST.sha256 is removed: it listed 805 files that no longer exist and nothing read it.
Some drivers report an enabled head as disconnected because they cannot sense a sink (virtual heads, the Xorg dummy driver, some docks). X still lists such an output as a monitor, but the WM and desktop skipped it, so the second screen got no wallpaper, no panel and no work area.
The WM publishes the wallpaper layout its titlebars use on the root as _FLAMEWM_WALLPAPER_OUTPUTS. Panels, popups and the app-window fallback canvas read it instead of fitting one wallpaper over the whole root, so on a second screen they no longer blend over an unrelated slice of the picture.
tools/flamewm_visual_tests.py starts Xorg with the dummy driver on one or two 1280x800 outputs, runs flamewm-session and drives it with xdotool. It checks for black outputs, a panel per output, Start popup latency and cleanup, frame shadows, drag feedback latency, black marks behind moved windows, the minimize animation restoring the desktop, and windows on the second output. A bench mode runs bench-flamewm-cpu.py on the same session.
The installed package is exercised on one and two screens and the screenshots are uploaded as an artifact.
Pushing a v<version> tag builds the Arch package and the .deb, attaches both with checksums to a GitHub release and, when AUR_SSH_PRIVATE_KEY is set, pushes the PKGBUILD and .SRCINFO to the flamewm-git AUR package.
A terminal started as a session leader, as setsid-style launchers do, took the slave as its own controlling terminal and was killed by SIGHUP as soon as the shell's session claimed it, so no window ever appeared.
Each crop computed taps for the whole root and blended three channels on both axes for every pixel. It now builds taps for the cropped range only, blends each source row horizontally once and mixes two such lines per output row. Output is bit-identical. Dragging a translucent terminal with live contents drops from 53.9% to 29.5% of a core in the terminal.
Each repeat left the window at the drop point, so later repeats grabbed empty desktop and measured a rubber band instead of a window move.
A translucent window dragged with live contents recropped the whole window from the wallpaper canvas on every motion step. The canvas is the same, so the previous crop is shifted and only the newly exposed strips are computed. Terminal CPU during a live drag drops from about 54% to 24% of one core (5 s windows, median of 5).
Captured from the headless test session on Xorg's dummy driver.
The README now leads with real screenshots, lists the Wayland session next to X11 with its known issues instead of a preliminary label, points to the headless visual checks and the release packages, and replaces the old memory notes with the figures in PERFORMANCE.md.
The docs and package description stop labelling the session preliminary. They keep the facts: X11 is the default, no hardware login is on record and one reported login failure is open. Nested runs with native Wayland clients and XWayland are now recorded. PACKAGING.md documents the release workflow and the AUR secret it needs.
Bug reports ask for the session, version, hardware and logs, and the pull request template asks how a change was checked.
Test-only helpers become cfg(test), the contour coverage helper moves its inner function out of the body and collapses a nested if, a constant test assertion is checked at compile time, and rustfmt is applied.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This branch fixes two-screen sessions and a terminal crash, adds headless visual checks and a release workflow, and cleans up the repository. Each change is its own commit.
Fixes
_FLAMEWM_WALLPAPER_OUTPUTS, and panels, popups and app windows read it.flamewm-terminaldied with SIGHUP when started as a session leader, assetsid-style launchers do. It opened the pty slave withoutO_NOCTTYand became that tty's controlling process.Testing and CI
tools/flamewm_visual_tests.pystarts Xorg with the dummy driver on one or two 1280x800 screens and runsflamewm-session. It checks for black outputs, a panel per screen, Start popup latency and cleanup, frame shadows, drag feedback latency, black marks behind moved windows, the minimize animation restoring the desktop, and windows on the second screen. Against the build before the two-screen fixes, three checks fail. With this branch all 32 pass.benchmode measures CPU and memory on the same session.docs/PERFORMANCE.mdnow has real numbers: idle PSS of 12.2 MiB for the WM, 16.4 MiB for the desktop and 11.5 MiB for the shell, no measurable idle CPU, Start popup in about 320 ms, drag feedback in 5 to 7 ms.Release workflow
Pushing a
v<version>tag builds the Arch package and the.deb, then attaches both with checksums to a GitHub release. It also updates theflamewm-gitAUR package, but only after a maintainer adds the AUR account's SSH key as theAUR_SSH_PRIVATE_KEYsecret. Until then that step is skipped. Details are indocs/PACKAGING.md. actionlint passes, but the workflow has not run on GitHub yet.Repository and docs
docs/history/. The root symlinks intoscripts/are gone,cleanup_bloat_v1.shmoved underscripts/, and the staleMANIFEST.sha256is removed (805 of its files no longer exist, and nothing read it).foot,weston-simple-shm) and XWayland work. They also keep the open facts: no successful hardware login is on record, one reported login failure is still open, andcursor-shape,text-inputandxdg-toplevel-iconare missing.CONTRIBUTING.mdnow lists three starter tasks that could becomegood first issueissues once the label exists.Not done or not verified
build-deband the release workflow were not run here; the host has nodpkg.xrender_aa::clipped_runs_preserve_partial_corner_coveragefails onmainas well. It comes from the taskbar pass, and this branch does not touch it.main.