UNPKG

record-desktop

Version:

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

81 lines (62 loc) 2.96 kB
'use strict'; 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; } };