From 4c54c89d52f5967f9d31ad8cfaed9031a2ba3c97 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sun, 12 Sep 2021 17:10:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=9A=90=E8=97=8Fdock=E5=9B=BE?= =?UTF-8?q?=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/config/index.js | 3 ++ packages/gui/src/background.js | 48 ++++++++++++++----------- packages/gui/src/view/pages/setting.vue | 8 +++++ 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/packages/core/src/config/index.js b/packages/core/src/config/index.js index 945e78ff..a9aa59d9 100644 --- a/packages/core/src/config/index.js +++ b/packages/core/src/config/index.js @@ -18,6 +18,9 @@ module.exports = { remoteConfig: { enabled: true, url: 'https://gitee.com/docmirror/dev-sidecar/raw/master/packages/core/src/config/remote_config.json5' + }, + dock: { + hideWhenWinClose: false } }, server: { diff --git a/packages/gui/src/background.js b/packages/gui/src/background.js index b1d31b4c..ed901db1 100644 --- a/packages/gui/src/background.js +++ b/packages/gui/src/background.js @@ -18,7 +18,8 @@ let win // eslint-disable-next-line no-unused-vars let tray // 防止被内存清理 let forceClose = false - +DevSidecar.api.config.reload() +let hideDockWhenWinClose = DevSidecar.api.config.get().app.dock.hideWhenWinClose || false // Scheme must be registered before the app is ready protocol.registerSchemesAsPrivileged([ { scheme: 'app', privileges: { secure: true, standard: true } } @@ -98,7 +99,7 @@ function hideWin () { return } win.hide() - if (isMac) { + if (isMac && hideDockWhenWinClose) { app.dock.hide() } } @@ -111,23 +112,15 @@ function showWin () { app.dock.show() } -function createWindow () { +function changeAppConfig (config) { + if (config.hideDockWhenWinClose != null) { + hideDockWhenWinClose = config.hideDockWhenWinClose + } +} + +function createWindow (startHideWindow) { // Create the browser window. - let startHideWindow = false - if (process.argv) { - const args = minimist(process.argv) - if (args.hideWindow) { - startHideWindow = true - } - - log.info('start args', args) - } - if (app.getLoginItemSettings().wasOpenedAsHidden) { - startHideWindow = true - } - log.info('start hide window', startHideWindow, app.getLoginItemSettings()) - win = new BrowserWindow({ width: 900, height: 750, @@ -200,6 +193,21 @@ function setDock () { // -------------执行开始--------------- app.disableHardwareAcceleration() // 禁用gpu +// 开启后是否默认隐藏window +let startHideWindow = false +if (process.argv) { + const args = minimist(process.argv) + if (args.hideWindow) { + startHideWindow = true + } + + log.info('start args', args) +} +if (app.getLoginItemSettings().wasOpenedAsHidden) { + startHideWindow = true +} +log.info('start hide window', startHideWindow, app.getLoginItemSettings()) + // 禁止双开 const isFirstInstance = app.requestSingleInstanceLock() if (!isFirstInstance) { @@ -236,7 +244,7 @@ if (!isFirstInstance) { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (win == null) { - createWindow() + createWindow(false) } else { showWin() } @@ -257,8 +265,8 @@ if (!isFirstInstance) { // } } try { - createWindow() - const context = { win, app, beforeQuit, quit, ipcMain, dialog, log, api: DevSidecar.api } + createWindow(startHideWindow) + const context = { win, app, beforeQuit, quit, ipcMain, dialog, log, api: DevSidecar.api, changeAppConfig } backend.install(context) // 模块安装 } catch (err) { log.info('err', err) diff --git a/packages/gui/src/view/pages/setting.vue b/packages/gui/src/view/pages/setting.vue index 659cd7fd..ff473b40 100644 --- a/packages/gui/src/view/pages/setting.vue +++ b/packages/gui/src/view/pages/setting.vue @@ -15,6 +15,14 @@ windows下建议开启开机自启。更多说明参考 + + + 关闭窗口时隐藏Dock图标(仅限Mac) + +
+ 修改后需要重启应用 +
+
启用远程配置