Electron里的electron-window-state 使用

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):开始监听窗口的状态变化并自动保存。当窗口移动或调整大小时,状态会被更新。在窗口关闭时也会保存状态。
相关推荐
Cobyte1 分钟前
4.响应式系统基础:从发布订阅模式的角度理解 Vue3 的数据响应式原理
前端·javascript·vue.js
晓得迷路了3 分钟前
栗子前端技术周刊第 124 期 - ESLint v10.2.0、React Native 0.85、Node.js 25.9.0...
前端·javascript·eslint
星空椰12 分钟前
JavaScript基础:运算符和流程控制
开发语言·javascript·ecmascript
半个俗人20 分钟前
fiddler的基础使用
前端·测试工具·fiddler
a11177622 分钟前
变电站数字孪生大屏ThreeJS 开源项目
前端·信息可视化·开源·html
恋猫de小郭22 分钟前
AI 的公开测评得分都在作弊,就像泡面的封面,一切以实物为准
前端·人工智能·ai编程
꯭爿꯭巎꯭24 分钟前
visual studio code (vscode)下载
ide·vscode·编辑器
禅思院24 分钟前
使用 VueUse 构建一个支持暂停/重置的 CountUp 组件
前端·vue.js·架构
薛定e的猫咪34 分钟前
2026 年 4 月实测:OpenAI Codex 保姆级教程,从安装到 MCP、Skills 与多智能体协作
前端·数据库·人工智能
I love studying!!!37 分钟前
Web应用程序:用户账户
前端·数据库·sqlite