record-desktop
Version:
Record gifs and take screenshots on linux, built with electron.
113 lines (81 loc) • 3 kB
JavaScript
;
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);
});
};