-
Notifications
You must be signed in to change notification settings - Fork 15k
/
screen.md
158 lines (98 loc) · 4.19 KB
/
screen.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# screen
> Retrieve information about screen size, displays, cursor position, etc.
Process: [Main](../glossary.md#main-process)
This module cannot be used until the `ready` event of the `app`
module is emitted.
`screen` is an [EventEmitter][event-emitter].
**Note:** In the renderer / DevTools, `window.screen` is a reserved DOM
property, so writing `let { screen } = require('electron')` will not work.
An example of creating a window that fills the whole screen:
```javascript fiddle='docs/fiddles/screen/fit-screen'
const { app, BrowserWindow, screen } = require('electron')
let win
app.whenReady().then(() => {
const { width, height } = screen.getPrimaryDisplay().workAreaSize
win = new BrowserWindow({ width, height })
win.loadURL('https://github.com')
})
```
Another example of creating a window in the external display:
```javascript
const { app, BrowserWindow, screen } = require('electron')
let win
app.whenReady().then(() => {
const displays = screen.getAllDisplays()
const externalDisplay = displays.find((display) => {
return display.bounds.x !== 0 || display.bounds.y !== 0
})
if (externalDisplay) {
win = new BrowserWindow({
x: externalDisplay.bounds.x + 50,
y: externalDisplay.bounds.y + 50
})
win.loadURL('https://github.com')
}
})
```
## Events
The `screen` module emits the following events:
### Event: 'display-added'
Returns:
* `event` Event
* `newDisplay` [Display](structures/display.md)
Emitted when `newDisplay` has been added.
### Event: 'display-removed'
Returns:
* `event` Event
* `oldDisplay` [Display](structures/display.md)
Emitted when `oldDisplay` has been removed.
### Event: 'display-metrics-changed'
Returns:
* `event` Event
* `display` [Display](structures/display.md)
* `changedMetrics` string[]
Emitted when one or more metrics change in a `display`. The `changedMetrics` is
an array of strings that describe the changes. Possible changes are `bounds`,
`workArea`, `scaleFactor` and `rotation`.
## Methods
The `screen` module has the following methods:
### `screen.getCursorScreenPoint()`
Returns [`Point`](structures/point.md)
The current absolute position of the mouse pointer.
**Note:** The return value is a DIP point, not a screen physical point.
### `screen.getPrimaryDisplay()`
Returns [`Display`](structures/display.md) - The primary display.
### `screen.getAllDisplays()`
Returns [`Display[]`](structures/display.md) - An array of displays that are currently available.
### `screen.getDisplayNearestPoint(point)`
* `point` [Point](structures/point.md)
Returns [`Display`](structures/display.md) - The display nearest the specified point.
### `screen.getDisplayMatching(rect)`
* `rect` [Rectangle](structures/rectangle.md)
Returns [`Display`](structures/display.md) - The display that most closely
intersects the provided bounds.
### `screen.screenToDipPoint(point)` _Windows_
* `point` [Point](structures/point.md)
Returns [`Point`](structures/point.md)
Converts a screen physical point to a screen DIP point.
The DPI scale is performed relative to the display containing the physical point.
### `screen.dipToScreenPoint(point)` _Windows_
* `point` [Point](structures/point.md)
Returns [`Point`](structures/point.md)
Converts a screen DIP point to a screen physical point.
The DPI scale is performed relative to the display containing the DIP point.
### `screen.screenToDipRect(window, rect)` _Windows_
* `window` [BrowserWindow](browser-window.md) | null
* `rect` [Rectangle](structures/rectangle.md)
Returns [`Rectangle`](structures/rectangle.md)
Converts a screen physical rect to a screen DIP rect.
The DPI scale is performed relative to the display nearest to `window`.
If `window` is null, scaling will be performed to the display nearest to `rect`.
### `screen.dipToScreenRect(window, rect)` _Windows_
* `window` [BrowserWindow](browser-window.md) | null
* `rect` [Rectangle](structures/rectangle.md)
Returns [`Rectangle`](structures/rectangle.md)
Converts a screen DIP rect to a screen physical rect.
The DPI scale is performed relative to the display nearest to `window`.
If `window` is null, scaling will be performed to the display nearest to `rect`.
[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter