feat(electrobun): custom window chrome — no title bar, sidebar drag, edge resize
- titleBarStyle: "hidden" removes native GTK decoration - Sidebar + right-bar: mousedown starts window drag (skips buttons) - 8 resize handles (N/S/E/W + 4 corners) with 4px hot zones - window.setFrame RPC for atomic position+size updates - Min window size: 600x400 - Cursor feedback: grab on sidebars, directional resize on edges - Frame persisted to SQLite on drag/resize end (debounced)
This commit is contained in:
parent
1de6c93e01
commit
31338ad949
2 changed files with 106 additions and 5 deletions
|
|
@ -120,6 +120,9 @@ const rpc = BrowserView.defineRPC<PtyRPCSchema>({
|
|||
"window.close": () => { try { mainWindow.close(); return { ok: true }; } catch (err) { console.error("[window.close]", err); return { ok: false }; } },
|
||||
"window.getFrame": () => { try { return mainWindow.getFrame(); } catch { return { x: 0, y: 0, width: 1400, height: 900 }; } },
|
||||
"window.setPosition": ({ x, y }: { x: number; y: number }) => { try { mainWindow.setPosition(x, y); return { ok: true }; } catch { return { ok: false }; } },
|
||||
"window.setFrame": ({ x, y, width, height }: { x: number; y: number; width: number; height: number }) => {
|
||||
try { mainWindow.setFrame({ x, y, width, height }); return { ok: true }; } catch { return { ok: false }; }
|
||||
},
|
||||
},
|
||||
messages: {},
|
||||
},
|
||||
|
|
@ -181,7 +184,7 @@ const savedHeight = Number(settingsDb.getSetting("win_height") ?? 900);
|
|||
|
||||
mainWindow = new BrowserWindow({
|
||||
title: "Agent Orchestrator",
|
||||
titleBarStyle: "default",
|
||||
titleBarStyle: "hidden",
|
||||
url,
|
||||
rpc,
|
||||
frame: {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue