screen

Retrieve information about screen size, displays, cursor position, etc.

Process: Main

This module cannot be used until the ready event of the app module is emitted.

screen is an EventEmitter.

Note: In the renderer / DevTools, window.screen is a reserved DOM property, so writing let { screen } = require('electron') will not work.

An example of creating a window that fills the whole screen:

docs/fiddles/screen/fit-screen (23.0.0)Open in Fiddle

  • main.js
  1. // Retrieve information about screen size, displays, cursor position, etc.
  2. //
  3. // For more info, see:
  4. // https://electronjs.org/docs/api/screen
  5. const { app, BrowserWindow } = require('electron')
  6. let mainWindow = null
  7. app.whenReady().then(() => {
  8. // We cannot require the screen module until the app is ready.
  9. const { screen } = require('electron')
  10. // Create a window that fills the screen's available work area.
  11. const primaryDisplay = screen.getPrimaryDisplay()
  12. const { width, height } = primaryDisplay.workAreaSize
  13. mainWindow = new BrowserWindow({ width, height })
  14. mainWindow.loadURL('https://electronjs.org')
  15. })

Another example of creating a window in the external display:

  1. const { app, BrowserWindow, screen } = require('electron')
  2. let win
  3. app.whenReady().then(() => {
  4. const displays = screen.getAllDisplays()
  5. const externalDisplay = displays.find((display) => {
  6. return display.bounds.x !== 0 || display.bounds.y !== 0
  7. })
  8. if (externalDisplay) {
  9. win = new BrowserWindow({
  10. x: externalDisplay.bounds.x + 50,
  11. y: externalDisplay.bounds.y + 50
  12. })
  13. win.loadURL('https://github.com')
  14. }
  15. })

Events

The screen module emits the following events:

Event: ‘display-added’

Returns:

Emitted when newDisplay has been added.

Event: ‘display-removed’

Returns:

Emitted when oldDisplay has been removed.

Event: ‘display-metrics-changed’

Returns:

  • event Event
  • display Display
  • changedMetrics string[]

Emitted when one or more metrics change in a display. The changedMetrics is an array of strings that describe the changes. Possible changes are bounds, workArea, scaleFactor and rotation.

Methods

The screen module has the following methods:

screen.getCursorScreenPoint()

Returns Point

The current absolute position of the mouse pointer.

Note: The return value is a DIP point, not a screen physical point.

screen.getPrimaryDisplay()

Returns Display - The primary display.

screen.getAllDisplays()

Returns Display[] - An array of displays that are currently available.

screen.getDisplayNearestPoint(point)

Returns Display - The display nearest the specified point.

screen.getDisplayMatching(rect)

Returns Display - The display that most closely intersects the provided bounds.

screen.screenToDipPoint(point) Windows

Returns Point

Converts a screen physical point to a screen DIP point. The DPI scale is performed relative to the display containing the physical point.

screen.dipToScreenPoint(point) Windows

Returns Point

Converts a screen DIP point to a screen physical point. The DPI scale is performed relative to the display containing the DIP point.

screen.screenToDipRect(window, rect) Windows

Returns Rectangle

Converts a screen physical rect to a screen DIP rect. The DPI scale is performed relative to the display nearest to window. If window is null, scaling will be performed to the display nearest to rect.

screen.dipToScreenRect(window, rect) Windows

Returns Rectangle

Converts a screen DIP rect to a screen physical rect. The DPI scale is performed relative to the display nearest to window. If window is null, scaling will be performed to the display nearest to rect.