Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/davidfig/window-manager
A javascript-only Window Manager
https://github.com/davidfig/window-manager
electron javascript maximize minimize save ui win window windowmanager
Last synced: about 1 month ago
JSON representation
A javascript-only Window Manager
- Host: GitHub
- URL: https://github.com/davidfig/window-manager
- Owner: davidfig
- License: mit
- Created: 2018-01-05T08:10:34.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-07-21T04:13:22.000Z (over 2 years ago)
- Last Synced: 2024-11-11T20:15:22.120Z (about 1 month ago)
- Topics: electron, javascript, maximize, minimize, save, ui, win, window, windowmanager
- Language: JavaScript
- Homepage:
- Size: 1.61 MB
- Stars: 65
- Watchers: 4
- Forks: 9
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# simple-window-manager
A javascript-only Window Manager## version 2
* the API has changed from v1 to v2
* rollup is used to compile the libraries, so there is no longer a default export: see sample code below
* animations are deprecated for now since they felt slow--I'm open to putting them back in
* finally moved away from `style.left` and `style.top` to `transform: translate(x, y)` (should have done this sooner)
* snapping working much better; screen snapping now optionally responds to window resize
* minimize has been removed since it does the same thing as close (unless we add a taskbar)## features
* basic windowing experience (works great with electron to run multiple windows under one process)
* create normal and modal windows
* optionally snap windows to screen edges and/or other windows
* takes advantage of all the features of the DOM, including undefined width and/or height to automatically adjust size of window based on content
* windows may be resized, maximized, and minimized
* minimize works by minimizing to a small square that can be moved independently. Clicking it restores to its original size and location. Minimizing again moves the small square back to the last minimized location.
* can save and load windowing state (e.g., using localStorage or json files using Electron)
* emits events (using eventemitter3)
* uses javascript animations instead of CSS## rationale
I used [Ventus](https://github.com/rlamana/Ventus) to build internal tools and editors, but I wanted a more configurable solution with a better event model that didn't rely on CSS.
## live example
[https://davidfig.github.io/window-manager/](https://davidfig.github.io/window-manager/)## installation
npm i simple-window-manager
## API documentation
[https://davidfig.github.io/window-manager/jsdoc/](https://davidfig.github.io/window-manager/jsdoc/)## sample code
```js
import { WindowManager } from 'simple-window-manager'
// or const WindowManager = require('simple-window-manager').WindowManager// this is the window manager with one of the default options changed
const wm = new WindowManager({ backgroundWindow: 'green' });// enable window snapping to screen edges and other windows when moving
wm.snap()// create a window
const window = wm.createWindow({ width: 500, height: 500, title: 'Test Window' })// set content of window
window.content.style.margin = '10px'
window.content.innerHTML = 'This is a nifty window.'
```## License
MIT License
(c) 2020 [YOPEY YOPEY LLC](https://yopeyopey.com/) by [David Figatner]([email protected])