text: // Modules to control application life and create native browser window
  const { app, BrowserWindow, Menu } = require('electron');
  const fontManager = require('./font-manager');
  const winState = require('./win-state');
  
  
  global.APP_ENV = (process.env.NODE_ENV === 'dev') ? 'dev' : 'production';
  
  if (APP_ENV === 'production') {
    require('./update')();
  }
  
  // Keep a global reference of the window object, if you don't, the window will
  // be closed automatically when the JavaScript object is garbage collected.
  let mainWindow;
  
  function createWindow() {
    // get last win stage
    const lastWinStage = winState.getLastState();
  
    // Create the browser window.
    mainWindow = new BrowserWindow({
      x: (lastWinStage.x > 0) ? lastWinStage.x : null,
      y: (lastWinStage.y > 0) ? lastWinStage.y : null,
      width: (lastWinStage.width > 250) ? lastWinStage.width : 1100,
      height: (lastWinStage.height > 250) ? lastWinStage.height : 728,
      icon: `${__dirname}/icons/icon.png`,
      autoHideMenuBar: true,
      webPreferences: {
        nodeIntegration: true,
      },
    });
  
    winState.watchClose(mainWindow);
  
    // and load the index.html of the app.
    if (APP_ENV === 'production') {
      // mainWindow.loadFile('index.html');
      mainWindow.loadURL(`file://${__dirname}/index.html?version=${app.getVersion()}`);
    } else {
      mainWindow.loadURL(`http://localhost:9988/?version=${app.getVersion()}`);
    }
  
    // Open the DevTools.
    // mainWindow.webContents.openDevTools();
  
    // Emitted when the window is closed.
    mainWindow.on('closed', () => {
      // Dereference the window object, usually you would store windows
      // in an array if your app supports multi windows, this is the time
      // when you should delete the corresponding element.
      mainWindow = null;
    });
  
    // const contents = mainWindow.webContents;
    // // contents.openFindWindow();
    // contents.findInPage('133');
  }
  
  // This method will be called when Electron has finished
  // initialization and is ready to create browser windows.
  // Some APIs can only be used after this event occurs.
  app.on('ready', createWindow);
  
  // Quit when all windows are closed.
  app.on('window-all-closed', () => {
    app.quit();
    // On macOS it is common for applications and their menu bar
    // to stay active until the user quits explicitly with Cmd + Q
    // if (process.platform !== 'darwin') {
    //   app.quit();
    // }
  });
  
  app.on('activate', () => {
    // On macOS it's common to re-create a window in the app when the
    // dock icon is clicked and there are no other windows open.
    if (mainWindow === null) {
      createWindow();
    }
  });
  
  // for mac copy paset shortcut
  if (process.platform === 'darwin') {
    const template = [
      // { role: 'appMenu' },
      {
        label: app.name,
        submenu: [
          { role: 'about' },
          { type: 'separator' },
          { role: 'services' },
          { type: 'separator' },
          { role: 'hide' },
          { role: 'hideothers' },
          { role: 'unhide' },
          { type: 'separator' },
          { role: 'quit' }
        ]
      },
      { role: 'editMenu' },
      // { role: 'viewMenu' },
      {
        label: 'View',
        submenu: [
          ...(
            (APP_ENV === 'production') ? [] : [{ role: 'toggledevtools' }]
          ),
          { role: 'togglefullscreen' }
        ]
      },
      // { role: 'windowMenu' },
      {
        role: 'window',
        submenu: [
          { role: 'minimize' },
          { role: 'zoom' },
          { type: 'separator' },
          { role: 'front' },
          { type: 'separator' },
          // { role: 'window' }
        ]
      },
      {
        role: 'help',
        submenu: [
          {
            label: 'Learn More',
            click: async () => {
              const { shell } = require('electron')
              await shell.openExternal('https://github.com/qishibo/AnotherRedisDesktopManager')
            }
          }
        ]
      }
    ];
  
    menu = Menu.buildFromTemplate(template);
    Menu.setApplicationMenu(menu);
  }
  
  // In this file you can include the rest of your app's specific main process
  // code. You can also put them in separate files and require them here.
  