diff --git a/packages/gui/package.json b/packages/gui/package.json index 196e084..6d6a5ae 100644 --- a/packages/gui/package.json +++ b/packages/gui/package.json @@ -23,6 +23,8 @@ "dependencies": { "@docmirror/dev-sidecar": "^1.8.8", "@docmirror/mitmproxy": "^1.8.8", + "@mihomo-party/sysproxy": "^2.0.4", + "@natmri/platform-napi": "0.0.7", "adm-zip": "^0.5.5", "ant-design-vue": "^1.6.5", "compressing": "^1.5.1", @@ -43,9 +45,7 @@ "sass-loader": "^10.0.4", "vue": "^2.6.11", "vue-json-editor-fix-cn": "^1.4.3", - "vue-router": "^3.4.8", - "@natmri/platform-napi": "0.0.7", - "@mihomo-party/sysproxy": "^2.0.4" + "vue-router": "^3.4.8" }, "devDependencies": { "@vue/cli-plugin-babel": "^4.5.0", @@ -54,9 +54,9 @@ "@vue/eslint-config-standard": "^5.1.2", "babel-eslint": "^10.1.0", "electron": "^17.4.11", + "electron-builder": "^23.0.3", "electron-devtools-installer": "^3.1.0", "electron-icon-builder": "^2.0.1", - "electron-builder": "^23.0.3", "eslint": "^6.7.2", "eslint-plugin-import": "^2.20.2", "eslint-plugin-node": "^11.1.0", diff --git a/packages/gui/src/background.js b/packages/gui/src/background.js index 9093ff2..2e7da09 100644 --- a/packages/gui/src/background.js +++ b/packages/gui/src/background.js @@ -189,8 +189,9 @@ function createWindow (startHideWindow) { Menu.setApplicationMenu(null) win.setMenu(null) + // !!IMPORTANT - if(isWindows) { + if (isWindows) { powerMonitor.setupMainWindow(win) } @@ -450,12 +451,13 @@ if (!isFirstInstance) { } powerMonitor.on('shutdown', async (e) => { - if(e) + if (e) { e.preventDefault() + } log.info('系统关机,恢复代理设置') - if(isWindows) { + if (isWindows) { const Sysproxy = require('@mihomo-party/sysproxy') - Sysproxy.triggerManualProxy(false, "", 0, "") + Sysproxy.triggerManualProxy(false, '', 0, '') } await quit() }) diff --git a/packages/gui/src/background/powerMonitor.js b/packages/gui/src/background/powerMonitor.js index 53bcf97..dd8b9ac 100644 --- a/packages/gui/src/background/powerMonitor.js +++ b/packages/gui/src/background/powerMonitor.js @@ -1,36 +1,35 @@ -import { powerMonitor as _powerMonitor, BrowserWindow } from 'electron' -import { setMainWindowHandle, insertWndProcHook, removeWndProcHook, releaseShutdownBlock, acquireShutdownBlock } from '@natmri/platform-napi'; +import { powerMonitor as _powerMonitor } from 'electron' +import { setMainWindowHandle, insertWndProcHook, removeWndProcHook, releaseShutdownBlock, acquireShutdownBlock } from '@natmri/platform-napi' class PowerMonitor { - constructor() { + constructor () { this.setup = false this._listeners = [] this._shutdownCallback = null } /** - * * @param {BrowserWindow} window */ - setupMainWindow(window) { - if(!this.setup) { + setupMainWindow (window) { + if (!this.setup) { setMainWindowHandle(window.getNativeWindowHandle().readBigInt64LE()) this.setup = true } } - addListener(event, listener) { + addListener (event, listener) { return this.on(event, listener) } - removeListener(event, listener) { + removeListener (event, listener) { return this.off(event, listener) } - removeAllListeners(event) { - if(event === 'shutdown' && process.platform === 'win32') { + removeAllListeners (event) { + if (event === 'shutdown' && process.platform === 'win32') { this._listeners = [] - if(this._shutdownCallback) { + if (this._shutdownCallback) { removeWndProcHook() releaseShutdownBlock() this._shutdownCallback = null @@ -40,15 +39,15 @@ class PowerMonitor { } } - on(event, listener) { - if(event === 'shutdown' && process.platform === 'win32') { - if(!this._shutdownCallback) { + on (event, listener) { + if (event === 'shutdown' && process.platform === 'win32') { + if (!this._shutdownCallback) { this._shutdownCallback = async () => { await Promise.all(this._listeners.map((fn) => fn())) releaseShutdownBlock() } insertWndProcHook(this._shutdownCallback) - acquireShutdownBlock("正在停止 DevSidecar 代理") + acquireShutdownBlock('正在停止 DevSidecar 代理') } this._listeners.push(listener) } else { @@ -56,50 +55,50 @@ class PowerMonitor { } } - off(event, listener) { - if(event === 'shutdown' && process.platform === 'win32') { + off (event, listener) { + if (event === 'shutdown' && process.platform === 'win32') { this._listeners = this._listeners.filter((fn) => fn !== listener) } else { return _powerMonitor.off(event, listener) } } - once(event, listener) { - if(event === 'shutdown' && process.platform === 'win32') { + once (event, listener) { + if (event === 'shutdown' && process.platform === 'win32') { return this.on(event, listener) } else { return _powerMonitor.once(event, listener) } } - emit(event, ...args) { + emit (event, ...args) { return _powerMonitor.emit(event, ...args) } - eventNames() { + eventNames () { return _powerMonitor.eventNames() } - getMaxListeners() { + getMaxListeners () { return _powerMonitor.getMaxListeners() } - listeners(event) { + listeners (event) { return _powerMonitor.listeners(event) } - rawListeners(event) { + rawListeners (event) { return _powerMonitor.rawListeners(event) } - listenerCount(event, listener) { + listenerCount (event, listener) { return _powerMonitor.listenerCount(event, listener) } /** * @returns {boolean} */ - get onBatteryPower() { + get onBatteryPower () { return _powerMonitor.onBatteryPower } @@ -107,28 +106,28 @@ class PowerMonitor { * @param {number} idleThreshold * @returns {'active'|'idle'|'locked'|'unknown'} */ - getSystemIdleState(idleThreshold) { + getSystemIdleState (idleThreshold) { return _powerMonitor.getSystemIdleState(idleThreshold) } /** * @returns {number} */ - getSystemIdleTime() { + getSystemIdleTime () { return _powerMonitor.getSystemIdleTime() } /** * @returns {'unknown'|'nominal'|'fair'|'serious'|'critical'} */ - getCurrentThermalState() { + getCurrentThermalState () { return _powerMonitor.getCurrentThermalState() } /** * @returns {boolean} */ - isOnBatteryPower() { + isOnBatteryPower () { return _powerMonitor.isOnBatteryPower() } }