index.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import './sentry'
  2. import './lru'
  3. import { app, ipcMain, Menu } from 'electron'
  4. import { parseArgs } from './cli'
  5. import { Application } from './app'
  6. import * as electronDebug from 'electron-debug'
  7. if (!process.env.TERMINUS_PLUGINS) {
  8. process.env.TERMINUS_PLUGINS = ''
  9. }
  10. const application = new Application()
  11. ipcMain.on('app:new-window', () => {
  12. application.newWindow()
  13. })
  14. app.on('activate', () => {
  15. if (!application.hasWindows()) {
  16. application.newWindow()
  17. } else {
  18. application.focus()
  19. }
  20. })
  21. app.on('window-all-closed', () => {
  22. app.quit()
  23. })
  24. process.on('uncaughtException' as any, err => {
  25. console.log(err)
  26. application.broadcast('uncaughtException', err)
  27. })
  28. app.on('second-instance', (_event, argv, cwd) => {
  29. application.send('host:second-instance', parseArgs(argv, cwd), cwd)
  30. })
  31. const argv = parseArgs(process.argv, process.cwd())
  32. if (!app.requestSingleInstanceLock()) {
  33. app.quit()
  34. app.exit(0)
  35. }
  36. if (argv.d) {
  37. electronDebug({
  38. isEnabled: true,
  39. showDevTools: true,
  40. devToolsMode: 'undocked',
  41. })
  42. }
  43. app.on('ready', () => {
  44. if (process.platform === 'darwin') {
  45. app.dock.setMenu(Menu.buildFromTemplate([
  46. {
  47. label: 'New window',
  48. click () {
  49. this.app.newWindow()
  50. }
  51. }
  52. ]))
  53. }
  54. application.init()
  55. application.newWindow({ hidden: argv.hidden })
  56. })