diff --git a/src/common/user-store.ts b/src/common/user-store.ts index 3df9125224..66ab628453 100644 --- a/src/common/user-store.ts +++ b/src/common/user-store.ts @@ -74,7 +74,11 @@ export class UserStore extends BaseStore { // open at system start-up reaction(() => this.preferences.openAtLogin, openAtLogin => { - app.setLoginItemSettings({ openAtLogin }); + app.setLoginItemSettings({ + openAtLogin, + openAsHidden: true, + args: ["--hidden"] + }); }, { fireImmediately: true, }); diff --git a/src/main/index.ts b/src/main/index.ts index 9a0b11b626..79f2a239bc 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -5,7 +5,7 @@ import "../common/prometheus-providers"; import * as Mobx from "mobx"; import * as LensExtensions from "../extensions/core-api"; import { app, autoUpdater, ipcMain, dialog, powerMonitor } from "electron"; -import { appName } from "../common/vars"; +import { appName, isMac } from "../common/vars"; import path from "path"; import { LensProxy } from "./lens-proxy"; import { WindowManager } from "./window-manager"; @@ -151,9 +151,17 @@ app.on("ready", async () => { extensionLoader.init(); extensionDiscovery.init(); + // Start the app without showing the main window when auto starting on login + // (On Windows and Linux, we get a flag. On MacOS, we get special API.) + const startHidden = process.argv.includes("--hidden") || (isMac && app.getLoginItemSettings().wasOpenedAsHidden); + logger.info("🖥️ Starting WindowManager"); windowManager = WindowManager.getInstance(proxyPort); + if (!startHidden) { + windowManager.initMainWindow(); + } + ipcMain.on("renderer:loaded", () => { startUpdateChecking(); LensProtocolRouterMain diff --git a/src/main/window-manager.ts b/src/main/window-manager.ts index af3d2ee1ca..0b7272331e 100644 --- a/src/main/window-manager.ts +++ b/src/main/window-manager.ts @@ -23,7 +23,6 @@ export class WindowManager extends Singleton { this.bindEvents(); this.initMenu(); this.initTray(); - this.initMainWindow(); } get mainUrl() {