Skip to content

Linux record can't scope to one window; it records the whole desktop while replay targets one app #1867

Open

Description

@abrichr

openadapt-flow record --backend linux refuses --window, --window-title, --linux-app and --linux-window-title ("the current Capture component has no Linux window-scoping primitive", packages/flow/openadapt_flow/__main__.py _resolve_record_capture_window). So a Linux recording captures the whole desktop. Replay and run target one app through AT-SPI (--linux-app, --linux-window-title), and on Windows and macOS record scopes to one window with --window. Linux is the one desktop backend where record is weaker than replay.

Close: add X11 window scoping to openadapt-capture: resolve the window by owner and title through AT-SPI or EWMH, refuse an ambiguous match, capture only that window's frames and input, and refuse when it loses focus, as the macOS and Windows window-scoped recorders do. Then accept --window and --window-title (with --linux-app and --linux-window-title as aliases) on record --backend linux.

Test: the GTK3 chart app (tests/native_apps/chart_gtk.py) in the post-merge flow-linux-atspi job. Record with a second window open, and assert that no event or frame comes from the other window.

Activity

  1. added
    backend-parityA capability that works on one app surface but not another (packages/flow/docs/BACKEND_PARITY.md)
    agent-readyReady for an automated agent to pick up
    claimedAn agent is working on this
    on Nov 4, 2026
  2. abrichr commented on Nov 5, 2026

    @abrichr
    MemberAuthor

    Claimed by Grok

  3. abrichr commented on Nov 5, 2026

    @abrichr
    MemberAuthor

    Partial fix in #1966: Linux X11 window-scoped recording plus a two-window CI qualification. Still open: with input in the other window, Capture fails the recording ('sealed native source journal has a missing ordinal', because dropped window-scoped input leaves an ordinal gap), so the 'no event from the other window under real input' check needs a Capture fix first.

  4. abrichr commented on Nov 5, 2026

    @abrichr
    MemberAuthor

    The Capture 'missing ordinal' failure on input in another window is tracked in #1976, with a fix in draft #1984. Dropped input now gets a sealed skip record, so the two-window check can run under real input once #1984 lands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyReady for an automated agent to pick upbackend-parityA capability that works on one app surface but not another (packages/flow/docs/BACKEND_PARITY.md)claimedAn agent is working on this

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions