fix(electrobun): X11 XMoveResizeWindow bypass for resize (no GTK involvement)

begin_resize_drag + XUngrabPointer still fails because GTK's layout
cycle re-asserts WebView preferred size, fighting the WM resize.

New approach: JS mousemove → XMoveResizeWindow via libX11.so.6 FFI.
Completely bypasses GTK size negotiation. GTK only receives
ConfigureNotify after the X server has already resized the window.

Added: x11SetFrame() using gdk_x11_display_get_xdisplay +
gdk_x11_window_get_xid + XMoveResizeWindow.
This commit is contained in:
Hibryda 2026-03-25 14:19:27 +01:00
parent 058ae563d5
commit 0e6408a447
3 changed files with 98 additions and 10 deletions

View file

@ -161,6 +161,13 @@ const rpc = BrowserView.defineRPC<PtyRPCSchema>({
return { ok };
} catch (err) { console.error("[window.gtkSetFrame]", err); return { ok: false }; }
},
"window.x11SetFrame": ({ x, y, width, height }: { x: number; y: number; width: number; height: number }) => {
try {
const { x11SetFrame } = require("./gtk-window.ts");
const ok = x11SetFrame((mainWindow as any).ptr, x, y, width, height);
return { ok };
} catch (err) { console.error("[window.x11SetFrame]", err); return { ok: false }; }
},
},
messages: {},
},