Skip to content

Commit f51db95

Browse files
tai2bencevans
authored andcommitted
fix(darwin): wrong display capturing on multi-monitor.
1 parent a507124 commit f51db95

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

lib/darwin/index.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,20 @@ function makeSubtree (currIndent, subtree, entries) {
119119
}
120120
}
121121

122+
function movePrimaryToHead (displays) {
123+
const primary = displays.filter(e => e.primary)
124+
const notPrimary = displays.filter(e => !e.primary)
125+
return [...primary, ...notPrimary]
126+
}
127+
128+
function addId (displays) {
129+
let id = 0
130+
return displays
131+
.map(display => {
132+
return Object.assign({}, display, { id: id++ })
133+
})
134+
}
135+
122136
function parseDisplaysOutput (output) {
123137
const tree = {}
124138
makeSubtree(-1, tree, extractEntries(output))
@@ -137,12 +151,13 @@ function parseDisplaysOutput (output) {
137151
return []
138152
}
139153

140-
let id = 0
141-
return Object.entries(firstGpu['Displays'])
154+
const displays = Object.entries(firstGpu['Displays'])
142155
.map(([name, props]) => {
143-
id++
144-
return { id, name }
156+
const primary = props['Main Display'] === 'Yes'
157+
return { name, primary }
145158
})
159+
160+
return addId(movePrimaryToHead(displays))
146161
}
147162

148163
function listDisplays () {

0 commit comments

Comments
 (0)