UNPKG

6.54 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../src/main-process/commands/display.js"],"names":["logger","currentDisplay","currentUrl","displayProcess","unclutterProcess","isBrowser","display","includes","supports","refresh","log","warn","update","config","autoStart","info","stop","url","start","startDisplay","Error","thisDisplayProcess","on","code","signal","currentDisplayProcess","sameChildProcess","error","process","nextTick","unclutterIdle","openboxStarted","success","restart","kill","removeAllListeners","onlyDisplay"],"mappings":"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","file":"display.js","sourcesContent":["/* eslint-disable no-use-before-define */\nimport Logger from 'nightingale';\nimport { runAsyncAsUser, runSyncAsUser } from '../utils/exec';\nimport availableDisplays, { webBrowsers } from '../utils/availableDisplays';\n\nconst logger = new Logger('app:commands:display');\n\nlet currentDisplay;\nlet currentUrl;\nlet displayProcess;\nlet unclutterProcess;\n\nconst isBrowser = display => webBrowsers.includes(display);\nexport const supports = (display = currentDisplay) => availableDisplays.includes(display);\n\nexport const refresh = () => {\n if (displayProcess) {\n logger.log('refresh');\n return runSyncAsUser(`./${currentDisplay}.sh`, ['refresh']);\n } else {\n logger.warn('display stopped');\n }\n};\n\nexport const update = (config: Object, autoStart = true) => {\n logger.info('update');\n\n if (config.display !== currentDisplay) {\n if (autoStart) stop();\n currentDisplay = config.display;\n currentUrl = config.url;\n if (autoStart) return start();\n } else if (config.url !== currentUrl) {\n if (autoStart) stop(true);\n currentUrl = config.url;\n if (autoStart) return start();\n }\n};\n\nconst startDisplay = () => {\n logger.info('starting child');\n if (displayProcess) {\n throw new Error('child process already started');\n }\n\n logger.info('start', { display: currentDisplay, url: currentUrl });\n displayProcess = runAsyncAsUser(`./${currentDisplay}.sh`, ['start', currentUrl]);\n const thisDisplayProcess = displayProcess;\n displayProcess.on('exit', (code, signal) => {\n const currentDisplayProcess = displayProcess;\n const sameChildProcess = () => thisDisplayProcess === currentDisplayProcess;\n displayProcess = null;\n logger.error('child process exited', { code, signal });\n if (sameChildProcess()) {\n process.nextTick(() => {\n if (sameChildProcess()) start();\n });\n }\n });\n\n if (!unclutterProcess) {\n const unclutterIdle = isBrowser(currentDisplay) ? 5 : 0;\n unclutterProcess = runAsyncAsUser('unclutter', ['-display', ':0', '-idle', unclutterIdle]);\n unclutterProcess.on('exit', (code, signal) => {\n logger.info('unclutter exited', { code, signal });\n unclutterProcess = null;\n });\n }\n};\n\nexport const openboxStarted = () => {\n logger.success('openbox started');\n startDisplay();\n};\n\nexport const start = () => {\n if (displayProcess) {\n logger.warn('start: already started');\n return;\n }\n\n if (!supports(currentDisplay)) return;\n\n logger.info('starting...', { display: currentDisplay });\n\n // } else if (startOpenBox() !== 'started') {\n // logger.info('openbox not yet started');\n // } else {\n startDisplay();\n // }\n};\n\nexport const restart = () => {\n logger.info('restarting...');\n stop(true);\n return start();\n};\n\nconst kill = process => {\n process.removeAllListeners();\n process.kill();\n return null;\n};\n\nexport const stop = (onlyDisplay: ?boolean = false) => {\n logger.info('stop', { display: currentDisplay });\n\n if (displayProcess) displayProcess = kill(displayProcess);\n if (!onlyDisplay && unclutterProcess) unclutterProcess = kill(unclutterProcess);\n\n runSyncAsUser('./display.sh', ['stop']);\n\n if (currentDisplay === 'omxplayer') {\n runSyncAsUser('./display.sh', ['restart']);\n runSyncAsUser('./screen.sh', ['waitForX']);\n }\n};\n"]}
\No newline at end of file