Учебник по Electron.js

Местоположение окна на экране

Задать местоположение окна на экране при создании окна позволяют следующие опции:

Пример:

win = new BrowserWindow({
   width: 800,
   height: 600,
   center: false,
   x: 100,
   y: 100,
   movable: true
});

Управлять местоположением окна после его создания позволяют следующие методы:

win.setBounds({x: 200, y: 200, width: 800, height: 600});

Если какое-либо свойство не указано, то оно будет иметь текущее значение. Укажем только высоту:

win.setBounds({height: 500});
console.log( win.getBounds() );
// { x: 200, y: 200, width: 800, height: 500 }
win.setContentBounds({x: 200, y: 200, width: 800, height: 600});
console.log( win.getNormalBounds() );
// { x: 200, y: 200, width: 800, height: 600 }

События:

win.on('will-move', (e, b) => {
   e.preventDefault();
   console.log(b); // { x: 760, y: 356, width: 500, height: 300 }
});

Получение информации о размере экрана

Для отображения окна у правой или нижней границы необходимо знать размеры экрана. Получить эту информацию позволяет объект screen из пакета electron:

const { screen } = require('electron');

Обратите внимание: если объект создается таким образом в процессе Renderer, то он не будет доступен, т. к. существует глобальный объект window.screen.

Объект screen содержит следующие основные методы (полный список см. в документации):

console.log(screen.getCursorScreenPoint());
// { x: 767, y: 549 }
console.log(screen.getPrimaryDisplay());

Примерный результат:

{
  id: 2528732444,
  bounds: { x: 0, y: 0, width: 1920, height: 1080 },
  workArea: { x: 0, y: 0, width: 1920, height: 1040 },
  accelerometerSupport: 'unknown',
  monochrome: false,
  colorDepth: 24,
  colorSpace: '{primaries_d50_referred: [[0.6599, 0.3287],
  [0.3300, 0.5948],  [0.1541, 0.0602]], transfer:IEC61966_2_1,
   matrix:RGB, range:FULL}',
  depthPerComponent: 8,
  size: { width: 1920, height: 1080 },
  displayFrequency: 60,
  workAreaSize: { width: 1920, height: 1040 },
  scaleFactor: 1,
  rotation: 0,
  internal: false,
  touchSupport: 'unknown'
}

Полные размеры основного экрана доступны через свойство bounds:

const display = screen.getPrimaryDisplay();
console.log(display.bounds);
// { x: 0, y: 0, width: 1920, height: 1080 }

Свойство workArea содержит размеры и координаты только доступной части экрана (без размера Панели задач):

console.log(display.workArea);
// { x: 0, y: 0, width: 1920, height: 1040 }