diff --git a/public/node_modules/clipboard-event/index.js b/public/node_modules/clipboard-event/index.js index ef85638..6dd6770 100644 --- a/public/node_modules/clipboard-event/index.js +++ b/public/node_modules/clipboard-event/index.js @@ -1,6 +1,8 @@ +const { chmodSync, existsSync, mkdirSync, copyFileSync } = require('fs') const { EventEmitter } = require('events'); const path = require('path'); -const { execFile, exec } = require('child_process'); +const { execFile } = require('child_process'); +const homeDir = require('os').homedir(); class ClipboardEventListener extends EventEmitter { constructor() { @@ -13,8 +15,16 @@ class ClipboardEventListener extends EventEmitter { this.child = execFile(path.join(__dirname, 'platform/clipboard-event-handler-mac')); } else if (platform === 'linux') { - // manually install clipboard-event-handler-linux to /usr/local/bin - this.child = exec('clipboard-event-handler-linux') + // linux: cant execFile without chmod, and cant chmod in app.asar + // so we need to copy the file to /usr/bin + const target = path.resolve(homeDir, '.local', 'bin') + const p = path.join(__dirname, 'platform/clipboard-event-handler-linux') + if(!existsSync(target)) { + mkdirSync(target) + } + copyFileSync(p, path.join(target, 'clipboard-event-handler-linux')) + chmodSync(path.join(target, 'clipboard-event-handler-linux'), 0o755) + this.child = execFile(path.join(target, 'clipboard-event-handler-linux')); } else if (platform === 'darwin') { this.child = execFile(path.join(__dirname, 'platform/clipboard-event-handler-mac')); @@ -27,11 +37,11 @@ class ClipboardEventListener extends EventEmitter { this.emit('change'); } }); - this.child.stdout.on('close', (code) => { - this.emit('close', code); + this.child.stdout.on('close', () => { + this.emit('close'); }); - this.child.stdout.on('exit', (code) => { - this.emit('exit', code); + this.child.stdout.on('exit', () => { + this.emit('exit'); }); } stopListening() { diff --git a/public/node_modules/clipboard-event/platform/clipboard-event-handler-linux b/public/node_modules/clipboard-event/platform/clipboard-event-handler-linux new file mode 100644 index 0000000..0f6d129 Binary files /dev/null and b/public/node_modules/clipboard-event/platform/clipboard-event-handler-linux differ diff --git a/src/data/notify.json b/src/data/notify.json index 41ca309..0d87610 100644 --- a/src/data/notify.json +++ b/src/data/notify.json @@ -1,5 +1,5 @@ { "title": "重要版本更新提示", - "content": "1. 如果你是第一次使用此插件, 请务必设置跟随主程序启动选项, 否则可能导致剪贴板记录丢失
2. v1.4.0及以上版本 Linux用户需手动安装clipboard-event-handler-linux至usr/bin目录 详见插件官网指南
3. 插件使用过程中遇到任何问题, 请到论坛发布页回帖或加入QQ群反馈", - "version": 2 + "content": "1. 如果你是第一次使用此插件, 请务必设置跟随主程序启动选项, 否则可能导致剪贴板记录丢失
2. 插件使用过程中遇到任何问题, 请到论坛发布页回帖或加入QQ群反馈", + "version": 1 } diff --git a/src/global/initPlugin.js b/src/global/initPlugin.js index 3980307..405fb7b 100644 --- a/src/global/initPlugin.js +++ b/src/global/initPlugin.js @@ -212,18 +212,19 @@ export default function initPlugin() { db.addItem(item) }) - const info = '请手动安装 clipboard-event-handler-linux 到 /usr/bin' - const site = - 'https://ziuchen.gitee.io/project/ClipboardManager/guide/#如何手动安装clipboard-event-handler-linux' + const callBack = () => { + const info = '请手动安装 clipboard-event-handler-linux 到 /usr/bin' + const site = + 'https://ziuchen.gitee.io/project/ClipboardManager/guide/#如何手动安装clipboard-event-handler-linux' + utools.showNotification('剪贴板监听退出' + (utools.isLinux() ? info : '')) + utools.isLinux() ? utools.shellOpenExternal(site) : '' + utools.outPlugin() + } listener - .on('close', () => { - utools.showNotification('剪贴板监听异常关闭' + (utools.isLinux() ? info : '')) - utools.isLinux() ? utools.shellOpenExternal(site) : '' - utools.outPlugin() - }) - .on('exit', () => { - utools.showNotification('剪贴板监听异常退出' + (utools.isLinux() ? info : '')) - utools.isLinux() ? utools.shellOpenExternal(site) : '' + .on('close', callBack()) + .on('exit', callBack()) + .on('error', (error) => { + utools.showNotification('剪贴板监听出错' + error) utools.outPlugin() })