1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // Modules to control application life and create native browser window
- const { app, BrowserWindow, ipcMain, shell, dialog } = require('electron/main')
- const path = require('node:path')
- let mainWindow
- if (process.defaultApp) {
- if (process.argv.length >= 2) {
- app.setAsDefaultProtocolClient('electron-fiddle', process.execPath, [path.resolve(process.argv[1])])
- }
- } else {
- app.setAsDefaultProtocolClient('electron-fiddle')
- }
- 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()
- }
- dialog.showErrorBox('Welcome Back', `You arrived from: ${commandLine.pop().slice(0, -1)}`)
- })
- // Create mainWindow, load the rest of the app, etc...
- app.whenReady().then(() => {
- createWindow()
- })
- app.on('open-url', (event, url) => {
- dialog.showErrorBox('Welcome Back', `You arrived from: ${url}`)
- })
- }
- function createWindow () {
- // Create the browser window.
- mainWindow = new BrowserWindow({
- width: 800,
- height: 600,
- webPreferences: {
- preload: path.join(__dirname, 'preload.js')
- }
- })
- mainWindow.loadFile('index.html')
- }
- // 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', function () {
- if (process.platform !== 'darwin') app.quit()
- })
- // Handle window controls via IPC
- ipcMain.on('shell:open', () => {
- const pageDirectory = __dirname.replace('app.asar', 'app.asar.unpacked')
- const pagePath = path.join('file://', pageDirectory, 'index.html')
- shell.openExternal(pagePath)
- })
|