text: const {app, BrowserWindow, ipcMain} = require('electron')
  const path = require('path')
  const url = require('url')
  
  let win
  let varInspector;
  
  function openVariableInspector () {
    varInspector = new BrowserWindow({
      x: 800,
      y: 0,
      width: 500,
      height: 800,
      title: "Variable Inspector"
    });
  
    varInspector.loadURL(url.format({
        pathname: path.join(__dirname, "dist", "variable_inspector.html"),
        protocol: "file:",
        slashes: true
      }));
  
    varInspector.on('close', () => {
      varInspector = null;
    })
  }
  
  function createWindow () {
    win = new BrowserWindow({
      x: 20,
      y: 0,
      width: 750,
      height: 1000,
      icon: path.join(__dirname, 'livepython.png'),
      title: "Livepython"
    })
  
    win.loadURL(url.format({
      pathname: path.join(__dirname, 'dist', 'index.html'),
      protocol: 'file:',
      slashes: true,
    }))
  
    ipcMain.on("command", (evt, msg) => {
      process.send(msg)
    })
  
    ipcMain.on("toggle_variable_inspector", (evt, msg) => {
      if (varInspector) {
        varInspector.close();
        varInspector = null;
      } else {
        openVariableInspector();
      }
    });
  
    process.on('message', message => {
      const parsed = JSON.parse(message)
      if (parsed.type === 'finish') {
        app.quit()
      }
      if (win) win.webContents.send('trace', { msg: message })
      if (varInspector) varInspector.webContents.send('trace', { msg: message });
    })
  
    // win.webContents.openDevTools()
  
    win.on('closed', () => {
      win = null
    })
  }
  
  app.on('ready', createWindow)
  
  app.on('window-all-closed', () => {
    app.quit()
  })
  
  app.on('activate', () => {
    if (win === null) {
      createWindow()
    }
  })
  