record-desktop
Version:
Record gifs and take screenshots on linux, built with electron.
81 lines (62 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.unregister = exports.registerAll = exports.hasShortcuts = exports.register = exports.actions = undefined;
var _actions, _fnMappings;
var _electron = require('electron');
var _logger = require('./logger');
var _config = require('./config');
var _record = require('./record');
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var RECORD_AREA = 'RECORD_AREA';
var RECORD_ACTIVE = 'RECORD_ACTIVE';
var STOP = 'STOP';
var SCREEN_AREA = 'SCREEN_AREA';
var SCREEN_ACTIVE = 'SCREEN_ACTIVE';
var obj = function obj(label, combo) {
return { label: label, combo: combo };
};
var actions = exports.actions = (_actions = {}, _defineProperty(_actions, RECORD_AREA, obj('Start recording an area', 'super+a')), _defineProperty(_actions, RECORD_ACTIVE, obj('Start recording an active window', 'super+z')), _defineProperty(_actions, STOP, obj('Stop recording', 'super+d')), _defineProperty(_actions, SCREEN_AREA, obj('Take a screenshot of an area', 'super+s')), _defineProperty(_actions, SCREEN_ACTIVE, obj('Take a screenshot of an active window', 'super+x')), _actions);
var fnMappings = (_fnMappings = {}, _defineProperty(_fnMappings, RECORD_AREA, _record.startRecordArea), _defineProperty(_fnMappings, RECORD_ACTIVE, _record.startRecordActive), _defineProperty(_fnMappings, STOP, _record.stopRecord), _defineProperty(_fnMappings, SCREEN_AREA, _record.screenArea), _defineProperty(_fnMappings, SCREEN_ACTIVE, _record.screenActive), _fnMappings);
var register = exports.register = function register(action, combo) {
if (combo.indexOf('+') === -1) {
return false;
}
try {
var result = _electron.globalShortcut.register(combo, function () {
(0, _logger.log)('press ' + combo); // it won't work if i delete this line (GC?)
if (!(0, _config.getFolder)()) {
(0, _logger.notify)('Output folder is not set');
} else {
return fnMappings[action]().catch(function (err) {
return (0, _logger.notify)('Error', err);
});
}
});
(0, _logger.log)(combo + ' register success: ' + result);
return result;
} catch (e) {
return false;
}
};
var hasShortcuts = exports.hasShortcuts = function hasShortcuts() {
return Object.keys(fnMappings).filter(function (action) {
return !!(0, _config.getCombo)(action);
}).length > 0;
};
var registerAll = exports.registerAll = function registerAll() {
Object.keys(fnMappings).forEach(function (action) {
var combo = (0, _config.getCombo)(action);
if (combo) {
register(action, combo);
}
});
};
var unregister = exports.unregister = function unregister(combo) {
try {
return _electron.globalShortcut.unregister(combo);
} catch (e) {
return false;
}
};