feat(linux): Qt5 focus-free write via synthetic focus events - #1812
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
1905a05 to
332f6eb
Compare
Linux visual regression artifactsMatrix jobs now run independently. Download GIF artifacts from this workflow run:
|
…c focus events Adds three-tier typing strategy for Linux: 1. Native AT-SPI EditableText (Qt6, GTK4 focus-free) 2. Synthetic FocusIn → AT-SPI → FocusOut (Qt5 workaround) 3. X11 XSendEvent fallback (terminal/legacy apps) The synthetic-focus path sends FocusIn to trigger Qt5's AT-SPI bridge without changing the X11 active window, enabling focus-free writes. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
332f6eb to
243099a
Compare
e6504da
into
claude/lucid-lovelace-CMVuM
Summary
Implements focus-free background writes for Qt5 (PyQt5 QLineEdit) via synthetic X11 focus events.
Problem
Solution
Three-tier typing strategy:
FocusIn→ wait 100ms → retry AT-SPI → sendFocusOutKey Insight
Synthetic focus events trigger Qt5 AT-SPI bridge handlers without changing the window manager's active window. Truly focus-free.
Files Changed
platform-linux/src/atspi/mod.rs(+62 lines -type_into_editable)platform-linux/src/input/mod.rs(+38 lines -send_focus_in/out)platform-linux/src/tools/impl_.rs(+47 lines - three-tier strategy)nix/cua-driver/tests/linux-background-gui.nix(+674 lines)Testing
nix build .#checks.x86_64-linux.cua-driver-linux-background-gui-qt