UNPKG

4.91 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.screenshot = exports.update = exports.off = exports.on = exports.getCurrentScreens = exports.getCurrentScreenState = undefined;
7
8var _nightingale = require('nightingale');
9
10var _nightingale2 = _interopRequireDefault(_nightingale);
11
12var _exec = require('../utils/exec');
13
14var _client = require('../client');
15
16var _display = require('./display');
17
18var display = _interopRequireWildcard(_display);
19
20var _screensaver = require('./screensaver');
21
22var screensaver = _interopRequireWildcard(_screensaver);
23
24var _params = require('../params');
25
26function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
27
28function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
30const logger = new _nightingale2.default('app:commands:screen');
31
32const getScreens = () => (0, _exec.runSyncAsUser)('./screen.sh', ['screens']).split('\n').filter(Boolean);
33
34let currentScreens = getScreens();
35
36const getScreenState = () => currentScreens.length === 0 ? 'unavailable' : (0, _exec.runSyncAsUser)('./screen.sh', ['state']);
37
38let currentScreenState = getScreenState();
39
40// CONFIG
41let disableTouchscreenIfHDMIConnected;
42let reverseTouchscreen;
43
44logger.info('init', { currentScreens, currentScreenState });
45
46const isTouchscreen = screen => screen.startsWith('DSI');
47const isHDMIScreen = screen => screen.startsWith('HDMI');
48
49const updateCurrentScreenState = (newState = getScreenState()) => {
50 currentScreens = getScreens();
51
52 if (currentScreenState !== newState) {
53 currentScreenState = newState;
54 (0, _client.sendUpdate)({
55 screenState: currentScreenState,
56 screen: { state: currentScreenState, screens: currentScreens }
57 });
58 }
59};
60
61const reverseScreen = screen => (0, _exec.runSyncAsUser)('./screen.sh', ['reverse-screen', screen, _params.device.touchscreen]);
62
63const turnScreen = state => {
64 (0, _exec.runSyncAsUser)('./screen.sh', [state]);
65 updateCurrentScreenState(state);
66};
67
68const getCurrentScreenState = exports.getCurrentScreenState = () => currentScreenState;
69const getCurrentScreens = exports.getCurrentScreens = () => currentScreens;
70
71const on = exports.on = (autoStartDisplay = true) => {
72 logger.info('turning screen on');
73
74 // start display before turning on to avoid blank screen
75 if (autoStartDisplay) display.start();
76
77 (0, _exec.runSync)('./screen.sh', ['root-on']);
78 turnScreen('on');
79 screensaver.set();
80
81 if (disableTouchscreenIfHDMIConnected || reverseTouchscreen) {
82 const touchscreens = currentScreens.filter(isTouchscreen);
83
84 if (disableTouchscreenIfHDMIConnected && touchscreens.length && currentScreens.length > 1 && currentScreens.some(isHDMIScreen)) {
85 (0, _exec.runSyncAsUser)('./screen.sh', ['screens-off', ...touchscreens]);
86 } else if (reverseTouchscreen) {
87 touchscreens.forEach(reverseScreen);
88 } else {
89 (0, _exec.runSyncAsUser)('./screen.sh', ['screens-on', ...touchscreens]);
90 }
91 }
92};
93
94const off = exports.off = () => {
95 logger.info('turning screen off');
96 display.stop();
97 turnScreen('off');
98};
99
100const update = exports.update = (config, firstTime = false) => {
101 if (!display.supports(config.display)) {
102 logger.warn('display not supported', { display: config.display });
103 if (config.display !== 'none') off(); // only off if display is not "disabled"
104 return;
105 }
106
107 if (firstTime) {
108 (0, _exec.runSyncAsUser)('./screen.sh', ['waitForX']);
109 }
110
111 updateCurrentScreenState();
112
113 if (currentScreenState === 'on') {
114 display.update(config, true);
115 if (firstTime) {
116 // eslint-disable-next-line prefer-destructuring
117 disableTouchscreenIfHDMIConnected = config.disableTouchscreenIfHDMIConnected;
118 // eslint-disable-next-line prefer-destructuring
119 reverseTouchscreen = config.reverseTouchscreen;
120 on(false);
121 } else if (disableTouchscreenIfHDMIConnected !== config.disableTouchscreenIfHDMIConnected || reverseTouchscreen !== config.reverseTouchscreen) {
122 // eslint-disable-next-line prefer-destructuring
123 disableTouchscreenIfHDMIConnected = config.disableTouchscreenIfHDMIConnected;
124 // eslint-disable-next-line prefer-destructuring
125 reverseTouchscreen = config.reverseTouchscreen;
126 on(false);
127 }
128 screensaver.update(config);
129 } else {
130 display.update(config, false);
131 screensaver.update(config, false);
132 }
133};
134
135const screenshot = exports.screenshot = () => {
136 if (currentScreenState !== 'on') {
137 logger.debug('screenshot: screen is not on');
138 return;
139 }
140
141 logger.info('getting screenshot');
142 return (0, _exec.runPipeAsUser)('./screen.sh', ['screenshot', _params.device.id]);
143};
144//# sourceMappingURL=screen.js.map
\No newline at end of file