Skip to content

a11y: expose pane content over AT-SPI (Linux) - #31

Open
Eyalm321 wants to merge 1 commit into
mainfrom
feat/atspi-pane-text
Open

Eyalm321 wants to merge 1 commit into
mainfrom
feat/atspi-pane-text

Conversation

@Eyalm321

Copy link
Copy Markdown
Owner

The terminal grid is drawn to a texture, so assistive tech — screen readers, and
assistive automation like a desktop agent — sees each pane as an empty rectangle.
This hands it the visible screen as accessible text.

  • accessibility feature, Linux only. It is dropped workspace-wide because
    accesskit pins windows 0.58 against wgpu-hal 29's 0.62; that conflict only
    exists when building for Windows, so the feature is requested from
    [target.'cfg(target_os = "linux")'.dependencies] and Windows resolution is
    untouched.
  • PaneItem.a11y-text carries the text; TerminalPane exposes it through
    accessible-role / -label / -value, read-only.
  • paneview fills it from the existing TerminalPane::screen_text(), behind
    a11y_wanted()HYPERPANES_A11Y=1 forces on, NO_AT_BRIDGE=1 forces off,
    otherwise the GNOME toolkit-accessibility setting. Nothing is extracted when
    no assistive client is connected.

cargo check passes in rs/crates/app. Verified in a scratch worktree at this
commit alone, so it does not depend on anything else in flight.

🤖 Generated with Claude Code

The terminal grid is drawn to a texture, so assistive tech saw each pane as an
empty rectangle. TerminalPane now carries the visible screen as accessible text.

- Slint's `accessibility` feature is requested per-target for Linux only. It is
  dropped workspace-wide because accesskit pins `windows 0.58` against wgpu-hal
  29's `0.62` — a conflict that only exists when building for Windows, so the
  Windows resolution is untouched.
- PaneItem.a11y-text carries the text; TerminalPane exposes it via
  accessible-role/label/value (read-only).
- paneview fills it from the existing TerminalPane::screen_text(), gated by
  a11y_wanted() so it costs nothing when no assistive client is connected
  (HYPERPANES_A11Y=1 forces on, NO_AT_BRIDGE=1 forces off, else the GNOME
  toolkit-accessibility setting).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant