import { app, BrowserWindow, nativeTheme, Menu, MenuItem, shell } from 'electron' app.commandLine.appendSwitch('disable-software-rasterizer', 'true') try { if (process.platform === 'win32' && nativeTheme.shouldUseDarkColors === true) { require('fs').unlinkSync(require('path').join(app.getPath('userData'), 'DevTools Extensions')) } } catch (_) { } /** * Set `__statics` path to static files in production; * The reason we are setting it here is that the path needs to be evaluated at runtime */ if (process.env.PROD) { global.__statics = __dirname } let mainWindow function createWindow () { /** * Initial window options */ mainWindow = new BrowserWindow({ useContentSize: true, frame: false, webPreferences: { // Change from /quasar.conf.js > electron > nodeIntegration; // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration nodeIntegration: process.env.QUASAR_NODE_INTEGRATION, nodeIntegrationInWorker: process.env.QUASAR_NODE_INTEGRATION, enableRemoteModule: true, // More info: /quasar-cli/developing-electron-apps/electron-preload-script // preload: path.resolve(__dirname, 'electron-preload.js') } }) mainWindow.setMenu(null) mainWindow.maximize() mainWindow.loadURL(process.env.APP_URL) mainWindow["isDev"] = false mainWindow.on('closed', () => { mainWindow = null }) mainWindow.webContents.on('will-navigate', event => { event.preventDefault() }) mainWindow.webContents.on('new-window', (event, url) => { event.preventDefault() shell.openExternal(url) }) mainWindow.webContents.on('context-menu', (event, params) => { const menu = new Menu() // Add each spelling suggestion for (const suggestion of params.dictionarySuggestions) { menu.append(new MenuItem({ label: suggestion, click: () => mainWindow.webContents.replaceMisspelling(suggestion) })) } // Allow users to add the misspelled word to the dictionary if (params.misspelledWord) { menu.append( new MenuItem({ label: 'Add to dictionary', click: () => mainWindow.webContents.session.addWordToSpellCheckerDictionary(params.misspelledWord) }) ) } if((params.dictionarySuggestions && params.dictionarySuggestions.length) || params.misspelledWord){ menu.popup() } }) } const gotTheLock = app.requestSingleInstanceLock() if (!gotTheLock) { app.quit() } else { app.on('second-instance', (event, commandLine, workingDirectory) => { // Someone tried to run a second instance, we should focus our window. if (mainWindow) { if (mainWindow.isMinimized()) mainWindow.restore() mainWindow.focus() } }) // Create myWindow, load the rest of the app, etc... app.on('ready', createWindow) } app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } }) app.on('activate', () => { if (mainWindow === null) { createWindow() } })