Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mawie81/electron-window-state
A library to store and restore window sizes and positions for your Electron app
https://github.com/mawie81/electron-window-state
Last synced: 4 days ago
JSON representation
A library to store and restore window sizes and positions for your Electron app
- Host: GitHub
- URL: https://github.com/mawie81/electron-window-state
- Owner: mawie81
- License: mit
- Created: 2015-10-31T15:43:06.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-20T21:58:01.000Z (9 months ago)
- Last Synced: 2024-10-29T22:52:32.976Z (4 months ago)
- Language: JavaScript
- Homepage:
- Size: 313 KB
- Stars: 657
- Watchers: 5
- Forks: 67
- Open Issues: 39
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
- awesome-electron - electron-window-state - Persist window sizes and positions. ![](https://img.shields.io/github/stars/mawie81/electron-window-state.svg?style=social&label=Star) (Library / Position/Size)
- awesome-electron-zh - electron-window-state - Persist window sizes and positions. (Tools / For Electron)
README
# electron-window-state [![Build Status](https://travis-ci.org/mawie81/electron-window-state.svg)](https://travis-ci.org/mawie81/electron-window-state)
> A library to store and restore window sizes and positions for your
[Electron](http://electron.atom.io) app*Heavily influenced by the implementation in [electron-boilerplate](https://github.com/szwacz/electron-boilerplate).*
## Install
```
$ npm install --save electron-window-state
```## Usage
```js
const windowStateKeeper = require('electron-window-state');
let win;app.on('ready', function () {
// Load the previous state with fallback to defaults
let mainWindowState = windowStateKeeper({
defaultWidth: 1000,
defaultHeight: 800
});// Create the window using the state information
win = new BrowserWindow({
'x': mainWindowState.x,
'y': mainWindowState.y,
'width': mainWindowState.width,
'height': mainWindowState.height
});// Let us register listeners on the window, so we can update the state
// automatically (the listeners will be removed when the window is closed)
// and restore the maximized or full screen state
mainWindowState.manage(win);
});
```Please do not set `useContentSize` to `true` at creating `BrowserWindow` instance
because it changes how to calculate window size.## API
#### windowStateKeeper(opts)
Note: Don't call this function before the `ready` event is fired.
##### opts
`defaultWidth` - *Number*
The width that should be returned if no file exists yet. Defaults to `800`.
`defaultHeight` - *Number*
The height that should be returned if no file exists yet. Defaults to `600`.
`path` - *String*
The path where the state file should be written to. Defaults to
`app.getPath('userData')``file` - *String*
The name of file. Defaults to `window-state.json`. This is usefull if you want to support multiple windows. Simply create multiple ```windowStateKeeper``` instances with different filenames.
`maximize` - *Boolean*
Should we automatically maximize the window, if it was last closed
maximized. Defaults to `true``fullScreen` - *Boolean*
Should we automatically restore the window to full screen, if it was last
closed full screen. Defaults to `true`### state object
```js
const windowState = windowStateKeeper({
defaultWidth: 1000,
defaultHeight: 800
});
````x` - *Number*
The saved `x` coordinate of the loaded state. `undefined` if the state has not
been saved yet.`y` - *Number*
The saved `y` coordinate of the loaded state. `undefined` if the state has not
been saved yet.`width` - *Number*
The saved `width` of loaded state. `defaultWidth` if the state has not been
saved yet.`height` - *Number*
The saved `heigth` of loaded state. `defaultHeight` if the state has not been
saved yet.`isMaximized` - *Boolean*
`true` if the window state was saved while the window was maximized.
`undefined` if the state has not been saved yet.`isFullScreen` - *Boolean*
`true` if the window state was saved while the window was in full screen
mode. `undefined` if the state has not been saved yet.`manage(window)` - *Function*
Register listeners on the given `BrowserWindow` for events that are
related to size or position changes (`resize`, `move`). It will also restore
the window's maximized or full screen state.
When the window is closed we automatically remove the listeners and save the
state.`unmanage` - *Function*
Removes all listeners of the managed `BrowserWindow` in case it does not
need to be managed anymore.`saveState(window)` - *Function*
Saves the current state of the given `BrowserWindow`. This exists mostly for
legacy purposes, and in most cases it's better to just use `manage`.## License
MIT © [Marcel Wiehle](http://marcel.wiehle.me)