Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exit full screen when "esc" is pressed (using javascript with electron)

I'm working on an app (with electron) and I would like users to be able to exit fullscreen mode when pressing "esc". I tried different methods, in vain. Here is the code who launch the app in a new browser window in fullscreen mode and display and HTML/CSS content :

    'use strict';

const electron = require('electron');
// Module to control application life.
const app = electron.app;
// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow;

// 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 () {
  // Create the browser window.
  mainWindow = new BrowserWindow({fullscreen:true});

  // and load the index.html of the app.
  mainWindow.loadURL('file://' + __dirname + '/index.html');

  // Emitted when the window is closed.
  mainWindow.on('closed', function() {
    // 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;
  });
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', createWindow);

// Quit when all windows are closed.
app.on('window-all-closed', function () {
  // On OS X 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', function () {
  // On OS X 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();
  }
});

And here is what I'm trying to add to this code to be able to exit full screen but it doesn't work :

app.on('keydown', function(e){
    if(e.keyCode === 27){
      app.exitFullscreen();
    }
});

I also tried with "cancelFullscreen". And "fullscreen:false". Not working.

Thanks a lot for your attention!

like image 388
G. Delvigne Avatar asked Jun 22 '16 12:06

G. Delvigne


People also ask

How do I get out of full screen ESC?

Using the F11 key on your computer's keyboard will let you both enter and exit full-screen mode in many applications.

Which function key exits full screen?

To exit out of fullscreen in most programs, you can press the Esc key. When in an Internet browser, you can press the F11 function key to enter and exit fullscreen mode.


2 Answers

It's quite easy. Add a keyboard listener in render process, and then manipulate the window through the remote module.

    const remote = require("electron").remote;

    document.addEventListener("keydown", event => {

        switch (event.key) {
            case "Escape":
                if (remote.getCurrentWindow().isFullScreen()) {
                    remote.getCurrentWindow().setFullScreen(false);
                }
                break;
             }
    });
like image 152
Zen Avatar answered Sep 23 '22 18:09

Zen


Here is the solution that worked for me:

function minimizeWindow () {
    mainWindow.setFullScreen(false);
    console.log(mainWindow);
}

app.on('ready', function() {

  const ret = electron.globalShortcut.register('Escape', function(){
    console.log('Escape is pressed');

        minimizeWindow();
  });

console.log(electron.globalShortcut.isRegistered('Escape'));
});

app.on('will-quit', function(){

  electron.globalShortcut.unregister('Escape');

  electron.globalShortcut.unregisterAll();
});
  • Doc for the properties and methods of the window: http://electron.atom.io/docs/api/browser-window/#winsetmaximizablemaximizable-macos-windows
  • Doc for the keyboard event: http://electron.atom.io/docs/api/global-shortcut/
like image 28
G. Delvigne Avatar answered Sep 21 '22 18:09

G. Delvigne