1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.screenshot = exports.update = exports.off = exports.on = exports.getCurrentScreens = exports.getCurrentScreenState = undefined;
|
7 |
|
8 | var _nightingale = require('nightingale');
|
9 |
|
10 | var _nightingale2 = _interopRequireDefault(_nightingale);
|
11 |
|
12 | var _exec = require('../utils/exec');
|
13 |
|
14 | var _client = require('../client');
|
15 |
|
16 | var _display = require('./display');
|
17 |
|
18 | var display = _interopRequireWildcard(_display);
|
19 |
|
20 | var _screensaver = require('./screensaver');
|
21 |
|
22 | var screensaver = _interopRequireWildcard(_screensaver);
|
23 |
|
24 | var _params = require('../params');
|
25 |
|
26 | function _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 |
|
28 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
29 |
|
30 | const logger = new _nightingale2.default('app:commands:screen');
|
31 |
|
32 | const getScreens = () => (0, _exec.runSyncAsUser)('./screen.sh', ['screens']).split('\n').filter(Boolean);
|
33 |
|
34 | let currentScreens = getScreens();
|
35 |
|
36 | const getScreenState = () => currentScreens.length === 0 ? 'unavailable' : (0, _exec.runSyncAsUser)('./screen.sh', ['state']);
|
37 |
|
38 | let currentScreenState = getScreenState();
|
39 |
|
40 |
|
41 | let disableTouchscreenIfHDMIConnected;
|
42 | let reverseTouchscreen;
|
43 |
|
44 | logger.info('init', { currentScreens, currentScreenState });
|
45 |
|
46 | const isTouchscreen = screen => screen.startsWith('DSI');
|
47 | const isHDMIScreen = screen => screen.startsWith('HDMI');
|
48 |
|
49 | const 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 |
|
61 | const reverseScreen = screen => (0, _exec.runSyncAsUser)('./screen.sh', ['reverse-screen', screen, _params.device.touchscreen]);
|
62 |
|
63 | const turnScreen = state => {
|
64 | (0, _exec.runSyncAsUser)('./screen.sh', [state]);
|
65 | updateCurrentScreenState(state);
|
66 | };
|
67 |
|
68 | const getCurrentScreenState = exports.getCurrentScreenState = () => currentScreenState;
|
69 | const getCurrentScreens = exports.getCurrentScreens = () => currentScreens;
|
70 |
|
71 | const on = exports.on = (autoStartDisplay = true) => {
|
72 | logger.info('turning screen on');
|
73 |
|
74 |
|
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 |
|
94 | const off = exports.off = () => {
|
95 | logger.info('turning screen off');
|
96 | display.stop();
|
97 | turnScreen('off');
|
98 | };
|
99 |
|
100 | const 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();
|
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 |
|
117 | disableTouchscreenIfHDMIConnected = config.disableTouchscreenIfHDMIConnected;
|
118 |
|
119 | reverseTouchscreen = config.reverseTouchscreen;
|
120 | on(false);
|
121 | } else if (disableTouchscreenIfHDMIConnected !== config.disableTouchscreenIfHDMIConnected || reverseTouchscreen !== config.reverseTouchscreen) {
|
122 |
|
123 | disableTouchscreenIfHDMIConnected = config.disableTouchscreenIfHDMIConnected;
|
124 |
|
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 |
|
135 | const 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 |
|
\ | No newline at end of file |