import { BrowserWindow, app, shell } from 'electron' import { join } from 'path' import icon from '../../../resources/icon.png?asset' import { fileURLToPath } from 'url' import { dirname } from 'path' const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) function isDevelopment(): boolean { return Boolean(process.env['ELECTRON_RENDERER_URL']) || process.env.NODE_ENV === 'development' } export function createMainWindow(): BrowserWindow { const mainWindow = new BrowserWindow({ width: 1200, height: 670, show: false, autoHideMenuBar: true, ...(process.platform === 'linux' ? { icon } : {}), webPreferences: { preload: join(__dirname, '../preload/index.js'), contextIsolation: true, sandbox: true, nodeIntegration: false } }) mainWindow.on('ready-to-show', () => { mainWindow.show() }) mainWindow.webContents.setWindowOpenHandler((details) => { shell.openExternal(details.url) return { action: 'deny' } }) if (isDevelopment() && process.env['ELECTRON_RENDERER_URL']) { mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL']) } else { mainWindow.loadFile(join(__dirname, '../renderer/index.html')) } return mainWindow } export function registerMainWindowLifecycle(): void { app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createMainWindow() } }) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } }) }