"use strict"; const { app, globalShortcut, BrowserWindow } = require("electron"); const sqlInit = require("./src/services/sql_init"); const appIconService = require("./src/services/app_icon.js"); const windowService = require("./src/services/window"); const tray = require("./src/services/tray"); // Adds debug features like hotkeys for triggering dev tools and reload require("electron-debug")(); appIconService.installLocalAppIcon(); require("electron-dl")({ saveAs: true }); // needed for excalidraw export https://github.com/zadam/trilium/issues/4271 app.commandLine.appendSwitch("enable-experimental-web-platform-features"); // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. app.on("window-all-closed", () => { if (process.platform !== "darwin") { app.quit(); } }); app.on("ready", async () => { // app.setAppUserModelId('com.github.zadam.trilium'); // if db is not initialized -> setup process // if db is initialized, then we need to wait until the migration process is finished if (sqlInit.isDbInitialized()) { await sqlInit.dbReady; await windowService.createMainWindow(app); if (process.platform === "darwin") { app.on("activate", async () => { if (BrowserWindow.getAllWindows().length === 0) { await windowService.createMainWindow(app); } }); } tray.createTray(); } else { await windowService.createSetupWindow(); } await windowService.registerGlobalShortcuts(); }); app.on("will-quit", () => { globalShortcut.unregisterAll(); }); // this is to disable electron warning spam in the dev console (local development only) process.env["ELECTRON_DISABLE_SECURITY_WARNINGS"] = "true"; require("./src/www.js");