diff --git a/electron/main/index.ts b/electron/main/index.ts index 6b514806..b84443b3 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -843,6 +843,14 @@ app.whenReady().then(() => { }); }); +ipcMain.handle('window:state', () => { + const win = BrowserWindow.getFocusedWindow() + if (!win) return 'normal' + if (win.isMaximized()) return 'maximized' + if (win.isMinimized()) return 'minimized' + return 'normal' +}) + // New window example arg: new windows url // ipcMain.handle('open-win', (_, arg) => { // const childWindow = new BrowserWindow({ diff --git a/electron/preload/index.ts b/electron/preload/index.ts index da219272..27f490b5 100644 --- a/electron/preload/index.ts +++ b/electron/preload/index.ts @@ -51,6 +51,7 @@ type WindowControlBridge = { minimize: () => void; toggleMaximize: () => void; close: () => void; + state: () => Promise<| 'normal' | 'maximized' | 'minimized'>; }; type UpdateCenterStateListener = (snapshot: UpdateCenterSnapshot) => void; @@ -110,6 +111,7 @@ contextBridge.exposeInMainWorld("windowControls", { minimize: () => ipcRenderer.send("window-control-minimize"), toggleMaximize: () => ipcRenderer.send("window-control-toggle-maximize"), close: () => ipcRenderer.send("window-control-close"), + state: () => ipcRenderer.invoke("window:state"), } satisfies WindowControlBridge); contextBridge.exposeInMainWorld("updateCenter", {