UNPKG

7.76 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../src/main-process/commands/screen.js"],"names":["display","screensaver","logger","getScreens","split","filter","Boolean","currentScreens","getScreenState","length","currentScreenState","disableTouchscreenIfHDMIConnected","reverseTouchscreen","info","isTouchscreen","screen","startsWith","isHDMIScreen","updateCurrentScreenState","newState","screenState","state","screens","reverseScreen","touchscreen","turnScreen","getCurrentScreenState","getCurrentScreens","on","autoStartDisplay","start","set","touchscreens","some","forEach","off","stop","update","config","firstTime","supports","warn","screenshot","debug","id"],"mappings":"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","file":"screen.js","sourcesContent":["import Logger from 'nightingale';\nimport { runPipeAsUser, runSyncAsUser, runSync } from '../utils/exec';\nimport { sendUpdate } from '../client';\nimport * as display from './display';\nimport * as screensaver from './screensaver';\nimport { device } from '../params';\n\nconst logger = new Logger('app:commands:screen');\n\ntype ScreenStateType = 'on' | 'off' | 'unavailable';\n\nconst getScreens = (): Array<string> =>\n runSyncAsUser('./screen.sh', ['screens'])\n .split('\\n')\n .filter(Boolean);\n\nlet currentScreens: Array<string> = getScreens();\n\nconst getScreenState = (): ScreenStateType =>\n currentScreens.length === 0 ? 'unavailable' : runSyncAsUser('./screen.sh', ['state']);\n\nlet currentScreenState: ScreenStateType = getScreenState();\n\n// CONFIG\nlet disableTouchscreenIfHDMIConnected;\nlet reverseTouchscreen;\n\nlogger.info('init', { currentScreens, currentScreenState });\n\nconst isTouchscreen = screen => screen.startsWith('DSI');\nconst isHDMIScreen = screen => screen.startsWith('HDMI');\n\nconst updateCurrentScreenState = (newState: ScreenStateType = getScreenState()) => {\n currentScreens = getScreens();\n\n if (currentScreenState !== newState) {\n currentScreenState = newState;\n sendUpdate({\n screenState: currentScreenState,\n screen: { state: currentScreenState, screens: currentScreens },\n });\n }\n};\n\nconst reverseScreen = (screen: string) =>\n runSyncAsUser('./screen.sh', ['reverse-screen', screen, device.touchscreen]);\n\nconst turnScreen = (state: 'on' | 'off'): void => {\n runSyncAsUser('./screen.sh', [state]);\n updateCurrentScreenState(state);\n};\n\nexport const getCurrentScreenState = (): ScreenStateType => currentScreenState;\nexport const getCurrentScreens = (): Array<string> => currentScreens;\n\nexport const on = (autoStartDisplay = true): void => {\n logger.info('turning screen on');\n\n // start display before turning on to avoid blank screen\n if (autoStartDisplay) display.start();\n\n runSync('./screen.sh', ['root-on']);\n turnScreen('on');\n screensaver.set();\n\n if (disableTouchscreenIfHDMIConnected || reverseTouchscreen) {\n const touchscreens = currentScreens.filter(isTouchscreen);\n\n if (\n disableTouchscreenIfHDMIConnected &&\n touchscreens.length &&\n currentScreens.length > 1 &&\n currentScreens.some(isHDMIScreen)\n ) {\n runSyncAsUser('./screen.sh', ['screens-off', ...touchscreens]);\n } else if (reverseTouchscreen) {\n touchscreens.forEach(reverseScreen);\n } else {\n runSyncAsUser('./screen.sh', ['screens-on', ...touchscreens]);\n }\n }\n};\n\nexport const off = (): void => {\n logger.info('turning screen off');\n display.stop();\n turnScreen('off');\n};\n\nexport const update = (config: Object, firstTime: ?boolean = false) => {\n if (!display.supports(config.display)) {\n logger.warn('display not supported', { display: config.display });\n if (config.display !== 'none') off(); // only off if display is not \"disabled\"\n return;\n }\n\n if (firstTime) {\n runSyncAsUser('./screen.sh', ['waitForX']);\n }\n\n updateCurrentScreenState();\n\n if (currentScreenState === 'on') {\n display.update(config, true);\n if (firstTime) {\n // eslint-disable-next-line prefer-destructuring\n disableTouchscreenIfHDMIConnected = config.disableTouchscreenIfHDMIConnected;\n // eslint-disable-next-line prefer-destructuring\n reverseTouchscreen = config.reverseTouchscreen;\n on(false);\n } else if (\n disableTouchscreenIfHDMIConnected !== config.disableTouchscreenIfHDMIConnected ||\n reverseTouchscreen !== config.reverseTouchscreen\n ) {\n // eslint-disable-next-line prefer-destructuring\n disableTouchscreenIfHDMIConnected = config.disableTouchscreenIfHDMIConnected;\n // eslint-disable-next-line prefer-destructuring\n reverseTouchscreen = config.reverseTouchscreen;\n on(false);\n }\n screensaver.update(config);\n } else {\n display.update(config, false);\n screensaver.update(config, false);\n }\n};\n\nexport const screenshot = () => {\n if (currentScreenState !== 'on') {\n logger.debug('screenshot: screen is not on');\n return;\n }\n\n logger.info('getting screenshot');\n return runPipeAsUser('./screen.sh', ['screenshot', device.id]);\n};\n"]}
\No newline at end of file