Repository navigation
test(wayland): tools/wayland-matrix.sh and a nightly job drive TaskSmack on headless sway and labwc with a real pointer (#2724) - #3008
Merged
Conversation
…way and labwc with a real pointer (#2724) The second slice of the headless Wayland matrix. On sway: the on-display suites; a title-bar drag and a right-edge resize, checked against swaymsg -t get_tree; a second output at scale 1.5 that the window moves onto and that is then unplugged under it; the size saved on a close the compositor asks for and restored on the next start. On labwc: Maximize and Restore, which the on-display test now checks on native Wayland when TASKSMACK_COMPOSITOR_MAXIMIZES=1. A headless seat has no pointer device, so no client gets a pointer and neither swaymsg's seat cursor nor wlrctl (whose device lives for one command) reaches one: tools/wayland/virtual-pointer.c holds one zwlr_virtual_pointer_v1 and takes commands on stdin; its protocol XML is vendored from wlr-protocols (MIT). labwc always starts Xwayland, so where /tmp/.X11-unix isn't sticky (WSLg) it gets its own in an unprivileged mount namespace. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
…rix.sh on headless sway and labwc (#2724) The third slice of the headless Wayland matrix: nightly, and on a dispatch with scope all, Ubuntu 24.04 installs sway, labwc and libwayland-dev, builds the debug preset and runs the matrix, uploading its logs when a check fails. The maintainer approved merging this workflow change on green. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mgradwohl
marked this pull request as ready for review
October 26, 2026 04:13
mgradwohl
enabled auto-merge (squash)
October 26, 2026 04:13
…as onNativeWayland() does (#2724) Windows' CRT deprecates getenv, which warnings-as-errors turned into a build failure in win-coverage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 26, 2026
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.
Description
Fixes #2724, with #2978 (the on-display tests on native Wayland).
tools/wayland-matrix.shruns TaskSmack on a headless sway and a headless labwc and drives it with a real pointer, checking each result against the compositor's own idea of the window.sway
kill) is saved and restored on the next start.labwc (sway never maximizes)
TitleBarButtonsDoWhatTheySaynow checks Maximize and Restore on native Wayland whenTASKSMACK_COMPOSITOR_MAXIMIZES=1.TheHitTestCallbackAnswersForTheRealWindow's maximized round runs too, instead of skipping.Why a virtual-pointer tool: a headless seat has no input device, so it offers clients no pointer (seat
capabilities: 0). Then neitherswaymsg seat … cursornorwlrctl pointerreaches TaskSmack, andwlrctl's device lives for only one command.tools/wayland/virtual-pointer.c(~120 lines of C) holds onezwlr_virtual_pointer_v1and takesabs/move/press/release/quiton stdin, answeringokafter each. The script builds it withwayland-scannerandcc. Its protocol XML is vendored from wlr-protocols (MIT, pinned commit, REUSE entry).labwc on WSLg: labwc always starts Xwayland, which needs a sticky
/tmp/.X11-unix. Where it isn't (WSLg), the script gives labwc its own in an unprivileged mount namespace (unshare -rm). CI runners don't need that.docs/dev/wayland-test-matrix.mddescribes the script.The nightly job: Heavy Checks gains
wayland-matrix. It runs nightly, and on a dispatch with scopeall. Ubuntu 24.04 installs sway, labwc and libwayland-dev, builds the debug preset, runs the script, and uploads its logs when a check fails. The maintainer approved merging this workflow change on green. Verified: dispatched run 40265404539'swayland-matrixjob passed. That run'swin-coveragefailure was this PR'scompositorMaximizes()callingstd::getenvon Windows, where the CRT deprecates it; that's fixed in ce13f2c.PR Size
Type of Change
Checklist
clang-formaton my changespre-commit run --all-filesor installed pre-commit hooks (REUSE and shellcheck included)Testing
tools/wayland-matrix.shon WSL Ubuntu 26.04 with sway 1.11 and labwc 0.9.3, all checks passing:shellcheckis clean. Xvfb runs are unaffected: the new environment switch is unset there.Additional Notes
Found along the way: synthetic runs called themselves Administrator (#3004, fixed in #3005). Tooling and tests only, so no shipped code.
🤖 Generated with Claude Code