diff --git a/.vscode/settings.json b/.vscode/settings.json index 6322c31c1..a2203a03b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,4 +14,7 @@ "[javascript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, + "[typescript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + }, } diff --git a/src/www.ts b/src/www.ts index 6f9613aff..27f445615 100644 --- a/src/www.ts +++ b/src/www.ts @@ -144,7 +144,17 @@ function startHttpServer() { } if (utils.isElectron()) { - import("electron").then(({ dialog }) => { + import("electron").then(({ app, dialog }) => { + // Not all situations require showing an error dialog. When Trilium is already open, + // clicking the shortcut, the software icon, or the taskbar icon, or when creating a new window, + // should simply focus on the existing window or open a new one, without displaying an error message. + if ("code" in error && error.code == 'EADDRINUSE') { + const isNewWindow = process.argv.includes('--new-window'); + if (isNewWindow || !app.requestSingleInstanceLock()) { + console.error(message); + process.exit(1); + } + } dialog.showErrorBox("Error while initializing the server", message); process.exit(1); });