Repository navigation
feat(wayland): accept aw-awatcher as the Wayland watcher - #143
Conversation
[Medium impact] The PR appears safe to merge; no new actionable issues remain. SummaryAdds
Both previous threads are addressed in the current code. Neither supplied root comment has a Comment number, so neither receives a numbered determination. Reviews (2) · Last reviewed commit: "docs(wayland): spell out why an unavaila..." · Reviewed by Greptile |
🤖 AI code reviewAdds aw-awatcher as a second accepted Wayland watcher. Moves Wayland watcher identities and session detection into a new aw_qt/wayland.py module, updates _apply_wayland_substitutions() to select the first installed watcher with explicit selections taking precedence, and extends persist_module_autostart() so stopping a Wayland watcher also disables the other Wayland watcher and the X11 watchers it replaces. Adds tests for the new selection logic and the persistence behavior. Safe to merge — no P0/P1 findingsConfidence 5/5 ✅ No findings. The diff looks correct to me on this pass. Files changed (5) — the diff as I read it
Previous review passes
Reviewed Maintainer commands
|
|
Pushed 5186676 and f5ab320 through the in-band review wrapper:
Verification: 221 tests passed, mypy passed, Flake8 passed with the existing W503/E203 style exceptions, and No further review rounds triggered. Current CI: CodeQL/Analyze passed; Linux, macOS and Windows tests still running. The CodeQL unused-symbol advisories remain; they do not reproduce the removed import cycle. Still stacked on #142; no merge attempted. |
Convergence adjudication — maintainer handoffRecommendation: no remaining blocking review finding on
|
|
@greptileai review |
|
@TimeToBuildBob 142 merged, rebase |
The Linux desktop bundle ships awatcher as `aw-awatcher`, but the substitution only looked for `aw-watcher-window-wayland`, so a stock bundle on Wayland still warned and started no watcher. Look for both implementations and use the first one available, preferring `aw-watcher-window-wayland` (the standalone module) over `aw-awatcher` (the bundled one). Behaviour is otherwise unchanged: nothing is substituted unless a watcher was actually selected, and the X11 modules are kept when no Wayland watcher is installed. Refs ActivityWatch/activitywatch#92 Git-Session-Id: 1827fd29-8a7c-5293-98ef-7481a8bcd9ad
Git-Session-Id: 845a16bb-4607-50b7-800e-27f61f3134ab
Git-Session-Id: fb4abb0b-d905-5b1a-91af-b74be3eee571
Git-Session-Id: fb4abb0b-d905-5b1a-91af-b74be3eee571
Git-Session-Id: c3ba4966-46ab-53e5-ae2c-2d797e9fd239
The old sentence ('kept unchanged unless X11 watchers were also selected')
read as if the unavailable selection survived the X11-substitution case. It
does not: it cannot run, so it is dropped from the returned launch list, while
the persisted autostart_modules config is untouched. State both cases
explicitly so the behaviour is not re-reported as a contradiction.
No behaviour change; tests/test_wayland.py already pins the result.
Git-Session-Id: 918d9d29-2603-4b15-b995-d9bb6201683a
83c3df4 to
89ccfcf
Compare
|
Rebased onto What changed:
Verification on the rebased head:
Greptile's review request from before the rebase will land on the new head; nothing else outstanding. |
|
CI follow-up: all 5 checks now passed (Linux, macOS, Windows, CodeQL, Analyze). Greptile returned 5/5. AI review also 5/5 on current head |
What
_apply_wayland_substitutions()now looks for both Wayland watcher implementations and uses the first one available:aw-watcher-window-wayland(the standalone module)aw-awatcher(what the Linux desktop bundle ships)Why
ActivityWatch/activitywatch#1531 makes the PyInstaller Linux bundle ship
awatcherasaw-awatcher. Without this change, #142's detection finds noaw-watcher-window-waylandin a stock bundle, warns, and leaves the X11 watchers selected — which capture nothing on Wayland.Erik on ActivityWatch/activitywatch#92: "Get on implementing Wayland support in aw-qt, should be as easy as bundling awatcher or something and adding the detection to aw-qt." This is the detection half of that pairing.
Behaviour
aw-watcher-window-waylandis preferred when both are installed, so the standalone module keeps priority.Tests
tests/test_wayland.pygains a class covering: onlyaw-awatcheravailable, both available (preference), insertion position, and no-wayland-watcher fallback. Existing tests are unchanged and still pass against the new selection path.Refs ActivityWatch/activitywatch#92, ActivityWatch/activitywatch#1531