v0.6.0 — geometry refs, no more walk fallback
The collection+walk fallback is gone. Every collection match is now addressable, so reads never need a tree walk to complete an answer.
What the fallback actually was
v0.5 fell back to a full walk whenever a match could not be pathed — 14 of 37 elements in gnome-control-center. Diagnosing it found something more interesting than an identity bug: broken parent/child reciprocity.
NODE filler '' [472,112 578x100]
parent panel '' [472,112 578x100] children=1 index_in_parent=-1
-> pointer match: -1 | role+name+extents match: -1
The node's get_parent() returns a container that does not list it among its children — by pointer, by index, or by role+name+extents. A child-index path to such a node is impossible, not merely unknown. No better identity test could have fixed it (and v0.3 already tried one, atspi_accessible_get_id, which produced wrong refs).
Geometry refs
Those nodes now get a second ref kind:
app:@<roleId>~<x>,<y>,<w>,<h>#<fingerprint>
Resolved with a collection query for that role, matched on exact extents, and verified by the same role+name fingerprint. A rectangle with no match returns exit 84; two widgets sharing a role and rectangle are refused as ambiguous rather than guessed. ref_kind on every element says path or geometry.
Verified: all 14 geometry refs in gnome-control-center resolve to the widget they describe, and act through one drives the app correctly.
Caveat: a geometry ref is tied to screen position, so moving or resizing the window invalidates it — exit 84, never a wrong hit. Re-read state after a move.
Results
| app | method | default | --walk |
geometry refs |
|---|---|---|---|---|
| gnome-calculator | collection | 15 ms | 65 ms | 0 |
| gnome-text-editor | collection | 12 ms | 53 ms | 0 |
| gnome-control-center | collection | 25 ms | 44 ms | 14 |
All three return the same element set as the walk, with every ref usable. gnome-control-center was 76 ms via the old fallback.
Install
curl -L -o linux-use https://github.com/javimosch/linux-use/releases/download/v0.6.0/linux-use-v0.6.0-x86_64-linux
chmod +x linux-use && sudo mv linux-use /usr/local/bin/
sudo apt install libatspi2.0-0 libxtst6 libx11-6 libglib2.0-0
gsettings set org.gnome.desktop.interface toolkit-accessibility true
linux-use doctor && linux-use guidesha256: 9c5ec79dd9ecd820eb504b86f0818d315d81b54c806058def7339442be2c66e7
Docs: https://javimosch.github.io/linux-use/
Full Changelog: v0.5.0...v0.6.0