| @@ -36,8 +36,23 @@ function findRate(mode, rate) { | |||
| return null; | |||
| } | |||
| function applyRule(primary, rule, display) { | |||
| function randr(args) { | |||
| var cmd = "xrandr"; | |||
| var child = spawn(cmd, args); | |||
| child.stderr.on("data", d => logger.warn("xrandr:", d.toString())); | |||
| } | |||
| function turnOff(display) { | |||
| var args = [ | |||
| "--output", display.id, | |||
| "--off" | |||
| ]; | |||
| randr(args); | |||
| } | |||
| function applyRule(primary, rule, display) { | |||
| var args = [ "--output", display.id ]; | |||
| if (rule.rate != null && rule.mode == null) | |||
| @@ -90,8 +105,7 @@ function applyRule(primary, rule, display) { | |||
| } | |||
| } | |||
| var child = spawn(cmd, args); | |||
| child.stderr.on("data", d => logger.warn("xrandr:", d.toString())); | |||
| randr(args); | |||
| } | |||
| function onchange() { | |||
| @@ -102,6 +116,10 @@ function onchange() { | |||
| } | |||
| xrandr.list(data => { | |||
| // Trun off all disconnected displays | |||
| data.displays.filter(d => !d.connected).forEach(turnOff); | |||
| var displays = data.displays.filter(d => d.connected); | |||
| var primary = displays.filter(d => d.primary)[0]; | |||