UNPKG

pooliot-client

Version:
135 lines (105 loc) 3.48 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.update = exports.refresh = exports.supports = undefined; exports.openboxStarted = openboxStarted; exports.start = start; exports.restart = restart; exports.stop = stop; var _nightingale = require('nightingale'); var _nightingale2 = _interopRequireDefault(_nightingale); var _config = require('../config'); var _exec = require('./exec'); var _availableDisplays = require('../utils/availableDisplays'); var _availableDisplays2 = _interopRequireDefault(_availableDisplays); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint-disable no-use-before-define */ const logger = new _nightingale2.default('app:display'); let currentDisplay; let autoRestart; let displayProcess; let unclutterProcess; const displaysCouldUseCursor = ['chromium', 'firefox']; const supports = exports.supports = config => _availableDisplays2.default.includes(config.display); const refresh = exports.refresh = () => { if (displayProcess) { logger.log('refresh'); const config = (0, _config.get)(); return (0, _exec.runSyncAsUser)(`./${config.display}.sh`, ['refresh']); } else { logger.warn('display stopped'); } }; const update = exports.update = () => { logger.info('update'); return restart(); }; function startDisplay() { (0, _exec.runSyncAsUser)('./display.sh', ['stop']); logger.info('starting child'); if (displayProcess) { throw new Error('child process already started'); } autoRestart = true; const config = (0, _config.get)(); currentDisplay = config.display; logger.info('start', { display: currentDisplay, url: config.url }); displayProcess = (0, _exec.runAsyncAsUser)(`./${currentDisplay}.sh`, ['start', config.url]); const thisDisplayProcess = displayProcess; displayProcess.on('exit', (code, signal) => { const sameChildProcess = thisDisplayProcess === displayProcess; displayProcess = null; logger.error('child process exited', { code, signal }); if (autoRestart && sameChildProcess) { process.nextTick(() => start()); } }); const unclutterIdle = displaysCouldUseCursor.includes(currentDisplay) ? 5 : 0; if (!unclutterProcess) { unclutterProcess = (0, _exec.runAsyncAsUser)('unclutter', ['-display', ':0', '-idle', unclutterIdle]); unclutterProcess.on('exit', (code, signal) => { logger.info('unclutter exited', { code, signal }); unclutterProcess = null; }); } } function openboxStarted() { logger.success('openbox started'); startDisplay(); } function start() { if (displayProcess) { logger.warn('start: already started'); return; } const config = (0, _config.get)(); if (!supports(config)) return; logger.info('starting...', { config }); // } else if (startOpenBox() !== 'started') { // logger.info('openbox not yet started'); // } else { startDisplay(); // } } function restart() { logger.info('restarting...'); stop(); return start(); } function stop() { autoRestart = false; if (displayProcess) { displayProcess.removeAllListeners(); displayProcess.kill(); } displayProcess = null; if (unclutterProcess) { unclutterProcess.removeAllListeners(); unclutterProcess.kill(); } unclutterProcess = null; logger.info('stop', { display: currentDisplay }); (0, _exec.runSyncAsUser)('./display.sh', ['stop']); } //# sourceMappingURL=display.js.map