Как мне получить положение окна ОС в электроне? - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь заставить электронное приложение открываться в той же позиции на экране, что и при закрытии в последний раз.

Для этого у меня есть файл конфигурации, в котором записываются границыокно, когда оно закрыто.

function set(settingKey, settingValue) {
  nconf.set(settingKey, settingValue);
  nconf.save();
};

mainWindow.on('close', function () {
  config.set('bounds', mainWindow.getBounds());
});

Но , когда я перезагружаю приложение и устанавливаю положение mainWindow, указав опции x, y, width, height илипри вызове setBounds:

mainWindow.setBounds(config.get('bounds'));

окно выглядит немного ниже, чем ранее.Я понял, что полученное мной значение y не учитывает высоту строки заголовка окна.

Этот вопрос похож, но решение приводит к той же проблеме.

Я пробовал:

  • mainWindow.getPosition
  • mainWindow.getContentBounds в сочетании с setContentBounds
  • electron.screen.getDisplayMatching(mainWindow.getBounds()).bounds

безрезультатно.Первые два метода дают мне одинаковые результаты.Последний дает { x: 0, y: 0, width: 1920, height: 1080 }.

Кто-нибудь знает, как получить положение окна ОС в электронном виде?

Если это вообще поможет, я нахожусь на Уэйленде (Гном 3.32).

1 Ответ

2 голосов
/ 08 апреля 2019

Выглядит как давняя нерешенная ошибка в Linux:

В Linux возвращаемая позиция фиксированного BrowserWindow неожиданно изменяется

Например, следующее:

const { app, BrowserWindow } = require ('electron');
let mainWindow = null;
function onAppReady ()
{
    let position = [ 200, 100 ];
    console.log ('init:', position);
    mainWindow = new BrowserWindow ({ x: position[0], y: position[1], width: 800, height: 600, show: false });
    console.log ('new:', mainWindow.getPosition ());
    mainWindow.loadURL (`file://${__dirname}/index.html`);
    mainWindow.on ('ready-to-show', () => { 
        mainWindow.show ();
        console.log ('show:', mainWindow.getPosition ()); });
    mainWindow.on ('close', () => { console.log ('close:', mainWindow.getPosition ()); });
    mainWindow.on ('closed', () => { app.quit (); });
}
app.on ('ready', onAppReady);

Результаты:

Linux Mint:

init: [ 200, 100 ]
new: [ 200, 100 ]
show: [ 201, 125 ]
close: [ 201, 125 ]

Ubuntu:

init: [ 200, 100 ]
new: [ 200, 100 ]
show: [ 200, 100 ]
close: [ 200, 128 ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...