pooliot-client
Version:
112 lines (79 loc) • 3.59 kB
JavaScript
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
;