UNPKG

pooliot-client

Version:
112 lines (79 loc) 3.59 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.screenshot = exports.update = exports.off = exports.on = exports.getCurrentScreens = exports.getCurrentScreenState = undefined; var _nightingale = require('nightingale'); var _nightingale2 = _interopRequireDefault(_nightingale); var _exec = require('./exec'); var _client = require('../client'); var _display = require('./display'); var display = _interopRequireWildcard(_display); var _screensaver = require('./screensaver'); var screensaver = _interopRequireWildcard(_screensaver); 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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const logger = new _nightingale2.default('app:screen'); const getScreenState = () => (0, _exec.runSync)('./screen.sh', ['state']); const getScreens = () => (0, _exec.runSyncAsUser)('./screen.sh', ['screens']).split('\n').filter(Boolean); let currentScreenState = getScreenState(); let currentScreens = getScreens(); logger.info('init', { currentScreens, currentScreenState }); const filterTouchscreenIfHasHdmi = screens => { if (screens.length < 2) return screens; if (screens.some(screen => screen.startsWith('HDMI'))) { return screens.filter(screen => !screen.startsWith('HDMI')); } return screens; }; // const turnOnScreen = (screen: string) => // runSyncAsUser('xrandr', ['--display', ':0', '--output', screen, '--auto']); const turnOffScreen = screen => (0, _exec.runSyncAsUser)('xrandr', ['--display', ':0', '--output', screen, '--off']); const turnScreen = state => { (0, _exec.runSyncAsUser)('./screen.sh', [state]); if (state === 'on') { currentScreens = getScreens(); const screensWithoutTouchscreenIfHdmi = filterTouchscreenIfHasHdmi(currentScreens); if (screensWithoutTouchscreenIfHdmi.length !== currentScreens.length) { currentScreens.filter(screen => screensWithoutTouchscreenIfHdmi.includes(screen)).forEach(turnOffScreen); } // screensWithoutTouchscreenIfHdmi.forEach(turnOnScreen); } if (currentScreenState !== state) { currentScreenState = state; (0, _client.sendUpdate)({ screenState: currentScreenState, screen: { state: currentScreenState, screens: currentScreens } }); } }; const getCurrentScreenState = exports.getCurrentScreenState = () => currentScreenState; const getCurrentScreens = exports.getCurrentScreens = () => currentScreens; const on = exports.on = (autoStartDisplay = true) => { logger.info('turning screen on'); turnScreen('on'); if (autoStartDisplay) display.start(); }; const off = exports.off = () => { logger.info('turning screen off'); display.stop(); turnScreen('off'); }; const update = exports.update = (config, firstTime = false) => { if (!display.supports(config)) return off(); if ((firstTime || currentScreenState !== 'off') && currentScreens.length) { (0, _exec.runSyncAsUser)('./screen.sh', ['waitForX']); on(false); screensaver.update(config); display.update(config); } }; const screenshot = exports.screenshot = () => { if (currentScreenState !== 'on') { logger.warn('screenshot: screen is not on'); return; } logger.info('getting screenshot'); return (0, _exec.runPipeAsUser)('./screen.sh', ['screenshot']); }; //# sourceMappingURL=screen.js.map