The wrapper takes the xenia window's geometry from `xwininfo -root -children` and crops the game surface out of it. Two things are wrong with that here, and neither errors: * `-children` lists only DIRECT children of the root, and openbox reparents the game window — so the real one is not in that list at all; * the app owns more than one window of class "xenia_canary" — an off-screen 10x10 helper as well as the 1280x745 game window — so `head -1` picked the 10x10 one. Every grab came back a 10-pixel sliver, and nothing failed: `screen_id.py` happily classified the sliver, the movie-skip heuristic fired on its noise, and a whole session's worth of screen ids were meaningless. It also drove a stray tap into the title screen's save-data probe, which crashed the guest. Walk the full tree and take the largest xenia window by area, using its absolute geometry (a reparented window's own +X+Y is relative to its frame).