mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-14 09:01:14 +02:00
Round-2 review of #83: the display search ran before the usual 5 s property and geometry reads, and its 30 s memory never helped because the server starts a fresh `python3 - panels` per request. With X tools answering in 4.6 s the run passed the server's 20 s. - One xprop call reads all of gamescope's root properties; :0 is read first and, when it has them, used with no other probe. Other displays are only asked (2 s each) if :0 has none. - focus() and focusable() reuse that reading instead of re-reading. - A `panels` run has one deadline (12 s); every xprop/xwininfo is cut to what's left, and past it the run returns what it found with a "why" saying the headset was too slow. - The display memory is documented as being for the long-lived input helper only. - Tests: `frame_touch.py panels` run as a fresh process with fake xprop and xwininfo on PATH (lists panels; 4.6 s tools return in about 12 s, where the previous head ran past 60 s), plus unit tests for the single read, probing, the deadline and partial results. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>