From 44b34d1ea01a73e30261e034308c20843e35b057 Mon Sep 17 00:00:00 2001 From: contributor Date: Fri, 7 Nov 2025 19:55:38 +0200 Subject: [PATCH 1/4] send global shortcut to current window, not the first one --- apps/server/src/services/window.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index 459ebdf59..cb047dba4 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -337,14 +337,15 @@ async function registerGlobalShortcuts() { const result = globalShortcut.register( translatedShortcut, cls.wrap(() => { - if (!mainWindow) { + const targetWindow = getLastFocusedWindow() || mainWindow; + if (!targetWindow) { return; } // window may be hidden / not in focus - mainWindow.focus(); + targetWindow.focus(); - mainWindow.webContents.send("globalShortcut", action.actionName); + targetWindow.webContents.send("globalShortcut", action.actionName); }) ); From a29597a4bf59a3e729aacfac63d9e2efed34d7c8 Mon Sep 17 00:00:00 2001 From: contributor Date: Fri, 7 Nov 2025 20:20:03 +0200 Subject: [PATCH 2/4] add safety check to ensure electron window is not destroyed --- apps/server/src/services/window.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index cb047dba4..844c54a28 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -338,7 +338,7 @@ async function registerGlobalShortcuts() { translatedShortcut, cls.wrap(() => { const targetWindow = getLastFocusedWindow() || mainWindow; - if (!targetWindow) { + if (!targetWindow || targetWindow.isDestroyed()) { return; } From 9a5f2f8d3b177153e6f56e4d5c711f53709848f1 Mon Sep 17 00:00:00 2001 From: contributor Date: Fri, 7 Nov 2025 21:08:50 +0200 Subject: [PATCH 3/4] make global shortcut work with windows in system tray --- apps/server/src/services/window.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index 844c54a28..9eed23536 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -343,6 +343,10 @@ async function registerGlobalShortcuts() { } // window may be hidden / not in focus + if (targetWindow.isMinimized()) { + targetWindow.restore(); + } + targetWindow.show(); targetWindow.focus(); targetWindow.webContents.send("globalShortcut", action.actionName); From f629f564cd9fdaf1a60cd5c36d0df00f6bee9875 Mon Sep 17 00:00:00 2001 From: contributor Date: Fri, 7 Nov 2025 21:15:35 +0200 Subject: [PATCH 4/4] add reusable showAndFocusWindow function --- apps/server/src/services/window.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index 9eed23536..3f0813219 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -343,11 +343,7 @@ async function registerGlobalShortcuts() { } // window may be hidden / not in focus - if (targetWindow.isMinimized()) { - targetWindow.restore(); - } - targetWindow.show(); - targetWindow.focus(); + showAndFocusWindow(targetWindow); targetWindow.webContents.send("globalShortcut", action.actionName); }) @@ -363,6 +359,17 @@ async function registerGlobalShortcuts() { } } +function showAndFocusWindow(window: BrowserWindow) { + if (!window) return; + + if (window.isMinimized()) { + window.restore(); + } + + window.show(); + window.focus(); +} + function getMainWindow() { return mainWindow; }