UNPKG

record-desktop

Version:

Record gifs and take screenshots on linux, built with electron.

113 lines (81 loc) 3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.screenArea = exports.screenActive = exports.stopRecord = exports.startRecordActive = exports.startRecordArea = undefined; var _main = require('./main'); var _config = require('./config'); var _utils = require('./utils'); var _constants = require('../shared/constants'); var _byzanzRecord = require('./unix-utils/wrappers/byzanz-record'); var _byzanzRecord2 = _interopRequireDefault(_byzanzRecord); var _slop = require('./unix-utils/wrappers/slop'); var _slop2 = _interopRequireDefault(_slop); var _xwininfo = require('./unix-utils/wrappers/xwininfo'); var _xwininfo2 = _interopRequireDefault(_xwininfo); var _xwd = require('./unix-utils/wrappers/xwd'); var _xwd2 = _interopRequireDefault(_xwd); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getOutputFile = function getOutputFile(ext) { return (0, _config.getFolder)() + '/' + new Date().toISOString() + '.' + ext; }; var endFn = null; var checkIfRunning = function checkIfRunning() { if (endFn !== null) { return Promise.reject('Session is in progress'); } endFn = null; return Promise.resolve(); }; var takeGif = function takeGif(_ref) { var width = _ref.width, height = _ref.height, x = _ref.x, y = _ref.y; var outputFile = getOutputFile('gif'); var _recordGif = (0, _byzanzRecord2.default)(outputFile, width, height, x, y), promise = _recordGif.promise, finish = _recordGif.finish; (0, _main.notify)('Start'); endFn = finish; (0, _main.setIcon)(true); return promise.then(function () { (0, _main.notify)('Generated'); (0, _utils.openFile)(outputFile); _config.eventEmitter.emit(_constants.NEW_FILE); }); }; var startRecordArea = exports.startRecordArea = function startRecordArea() { return checkIfRunning().then(_slop2.default).then(takeGif); }; var startRecordActive = exports.startRecordActive = function startRecordActive() { return checkIfRunning().then(_xwininfo2.default).then(takeGif); }; var stopRecord = exports.stopRecord = function stopRecord() { if (endFn) { endFn(); endFn = null; (0, _main.notify)('Finish'); (0, _main.setIcon)(false); } else { (0, _main.notify)('Already finished'); } return Promise.resolve(true); }; var screenActive = exports.screenActive = function screenActive() { return (0, _xwininfo2.default)().then(takeScreen); }; var screenArea = exports.screenArea = function screenArea() { return (0, _slop2.default)().then(takeScreen); }; var takeScreen = function takeScreen(_ref2) { var x = _ref2.x, y = _ref2.y, width = _ref2.width, height = _ref2.height; var outputFile = getOutputFile('png'); return (0, _xwd2.default)(width, height, x, y, outputFile, (0, _config.getScreenshotEffect)()).then(function () { (0, _utils.copyToClipboard)(outputFile); _config.eventEmitter.emit(_constants.NEW_FILE); }); };