window.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /**
  2. * window
  3. * @author: oldj
  4. * @homepage: https://oldj.net
  5. */
  6. import getIndex from '@main/libs/getIndex'
  7. import isDev from '@main/libs/isDev'
  8. import { BrowserWindow } from 'electron'
  9. import path from 'path'
  10. const makeWindow = () => {
  11. let win: BrowserWindow | null
  12. win = new BrowserWindow({
  13. frame: false,
  14. // titleBarStyle: 'hidden',
  15. hasShadow: true,
  16. resizable: false,
  17. // transparent: true,
  18. width: 300,
  19. height: 600,
  20. minWidth: 300,
  21. minHeight: 200,
  22. maximizable: false,
  23. minimizable: false,
  24. skipTaskbar: true,
  25. webPreferences: {
  26. contextIsolation: true,
  27. preload: path.join(__dirname, 'preload.js'),
  28. spellcheck: true,
  29. },
  30. })
  31. win.loadURL(`${getIndex()}#/tray`)
  32. .catch(e => console.error(e))
  33. win.hide()
  34. win.on('blur', () => win?.hide())
  35. win.on('close', (e: Electron.Event) => {
  36. if (global.is_will_quit) {
  37. win = null
  38. } else {
  39. e.preventDefault()
  40. win?.hide()
  41. }
  42. })
  43. if (isDev()) {
  44. // Open DevTools, see https://github.com/electron/electron/issues/12438 for why we wait for dom-ready
  45. win.webContents.once('dom-ready', () => {
  46. win!.webContents.openDevTools()
  47. })
  48. }
  49. return win
  50. }
  51. export {
  52. makeWindow,
  53. }