index.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { app, shell, BrowserWindow, ipcMain } from 'electron'
  2. import { join } from 'path'
  3. import { electronApp, optimizer, is } from '@electron-toolkit/utils'
  4. import icon from '../../resources/icon.png?asset'
  5. function createWindow(): void {
  6. const mainWindow = new BrowserWindow({
  7. width: 1120,
  8. height: 860,
  9. minWidth: 1000,
  10. minHeight: 700,
  11. show: false,
  12. autoHideMenuBar: true,
  13. ...(process.platform === 'linux' ? { icon } : {}),
  14. webPreferences: {
  15. preload: join(__dirname, '../preload/index.mjs'),
  16. sandbox: false
  17. }
  18. })
  19. mainWindow.on('ready-to-show', () => {
  20. mainWindow.show()
  21. })
  22. mainWindow.webContents.setWindowOpenHandler((details) => {
  23. shell.openExternal(details.url)
  24. return { action: 'deny' }
  25. })
  26. if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
  27. mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
  28. } else {
  29. mainWindow.loadFile(join(__dirname, '../renderer/index.html'))
  30. }
  31. }
  32. app.whenReady().then(() => {
  33. electronApp.setAppUserModelId('com.electron')
  34. app.on('browser-window-created', (_, window) => {
  35. optimizer.watchWindowShortcuts(window)
  36. })
  37. ipcMain.on('ping', () => console.log('pong'))
  38. createWindow()
  39. app.on('activate', function () {
  40. if (BrowserWindow.getAllWindows().length === 0) createWindow()
  41. })
  42. })
  43. app.on('window-all-closed', () => {
  44. if (process.platform !== 'darwin') {
  45. app.quit()
  46. }
  47. })