From ba2d5c2f172459bf8a31071b6ae84b9e249d1799 Mon Sep 17 00:00:00 2001 From: Joe Gitta Date: Fri, 22 May 2026 13:05:41 +0000 Subject: [PATCH] fix: responsive toolbar and Chromium resize on screen geometry change --- browser.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/browser.py b/browser.py index a14e0d7..de5f3ea 100755 --- a/browser.py +++ b/browser.py @@ -128,6 +128,29 @@ class CDP: threading.Thread(target=self._send, args=(method, params), daemon=True).start() + def resize_window(self, x, y, w, h): + """Move and resize the Chrome window via CDP Browser.setWindowBounds.""" + if not self.ready: + return + import websocket + with self._lock: + try: + ws = websocket.create_connection(self._ws_url(), timeout=3) + ws.send(json.dumps({"id": 1, "method": "Browser.getWindowForTarget"})) + resp = json.loads(ws.recv()) + wid = resp.get("result", {}).get("windowId") + if wid: + ws.send(json.dumps({"id": 2, + "method": "Browser.setWindowBounds", + "params": {"windowId": wid, + "bounds": {"left": x, "top": y, + "width": w, "height": h, + "windowState": "normal"}}})) + ws.recv() + ws.close() + except Exception as e: + print(f"CDP resize error: {e}") + def navigate(self, url): self._async("Page.navigate", {"url": url}) @@ -486,6 +509,21 @@ class KioskOverlay(QWidget): self.bm_panel = BookmarkPanel(cdp, self) self.show() + # Reflow toolbar and Chrome when screen/RDP size changes + screen = QApplication.instance().primaryScreen() + screen.geometryChanged.connect(self._on_screen_resize) + + def _on_screen_resize(self, rect): + global SCREEN_W, SCREEN_H + SCREEN_W, SCREEN_H = rect.width(), rect.height() + self.setGeometry(0, 0, SCREEN_W, TOP_H) + self.resize(SCREEN_W, TOP_H) + # Resize Chrome after brief delay so X has settled + QTimer.singleShot(300, self._resize_chrome) + + def _resize_chrome(self): + self.cdp.resize_window(0, TOP_H, SCREEN_W, SCREEN_H - TOP_H) + def _build_toolbar(self): bar = QWidget(); bar.setFixedHeight(TOOLBAR_H) bar.setStyleSheet(f"background:{TOOLBAR_COLOR};")