electron-window-state是一个用于管理 Electron 应用窗口状态的 npm 包。它的主要功能是记住应用程序窗口的位置、大小和状态,并在下次启动时自动恢复。
使用场景:
当你希望 Electron 应用在每次启动时都能保持上次关闭时的窗口大小和位置,从而提供更好的用户体验时,就可以使用这个包。
主要功能:
1. 记住窗口位置和大小
-
自动保存窗口的 x、y 坐标(位置)
-
记住窗口的宽度和高度
-
下次启动时自动恢复到相同的位置和大小
2. 记住窗口状态
-
最大化状态(是否全屏)
-
最小化状态
-
多显示器支持
3. 跨会话持久化
-
将窗口状态保存到磁盘文件
-
即使应用完全退出再重启也能恢复状态
代码:
首先下载: pnpm add electron-window-state
其次在主进程里引入使用
javascript
import windowStateKeeper from 'electron-window-state'
// 创建窗口
function createWindow() {
// 加载窗口状态
const mainWindowState = windowStateKeeper({
defaultWidth: 1500,
defaultHeight: 1000
})
console.log('窗口状态:', mainWindowState)
// Create the browser window.
const mainWindow = new BrowserWindow({
...mainWindowState,
// width: 1200,
// height: 700,
show: false,
autoHideMenuBar: true,
...(process.platform === 'linux' ? { icon } : {}),
webPreferences: {
preload: join(__dirname, '../preload/index.js'),
nodeIntegration: false, // 禁用Node.js集成
contextIsolation: true, // 启用上下文隔离
sandbox: false
}
})
// 管理窗口状态
mainWindowState.manage(mainWindow)
配置选项:
-
defaultWidth:默认宽度(整数) -
defaultHeight:默认高度(整数) -
path:存储状态文件的路径(可选,默认是app.getPath('userData')) -
file:状态文件的文件名(可选,默认是'window-state.json') -
maximize:是否保存窗口的最大化状态(布尔值,默认false) -
fullScreen:是否保存窗口的全屏状态(布尔值,默认false)
返回的窗口状态对象具有以下属性:
-
x:窗口的x坐标 -
y:窗口的y坐标 -
width:窗口的宽度 -
height:窗口的高度 -
isMaximized:窗口是否最大化(如果配置中启用) -
isFullScreen:窗口是否全屏(如果配置中启用)
方法:
manage(window):开始监听窗口的状态变化并自动保存。当窗口移动或调整大小时,状态会被更新。在窗口关闭时也会保存状态。