🎨 桌面端托盘加入选项 重启时重置窗口 Fix https://github.com/siyuan-note/siyuan/issues/6043

This commit is contained in:
Liang Ding 2022-10-01 23:38:26 +08:00
parent 4493649d0b
commit 6978bf24c1
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -33,12 +33,14 @@ const appDir = path.dirname(app.getAppPath())
const isDevEnv = process.env.NODE_ENV === 'development'
const appVer = app.getVersion()
const confDir = path.join(app.getPath('home'), '.config', 'siyuan')
const windowStatePath = path.join(confDir, 'windowState.json')
let tray // 托盘必须使用全局变量,以防止被垃圾回收 https://www.electronjs.org/docs/faq#my-apps-windowtray-disappeared-after-a-few-minutes
let mainWindow // 从托盘处激活报错 https://github.com/siyuan-note/siyuan/issues/769
let firstOpenWindow, bootWindow
let closeButtonBehavior = 0
let siyuanOpenURL
let firstOpen = false
let resetWindowStateOnRestart = false
require('@electron/remote/main').initialize()
if (!app.requestSingleInstanceLock()) {
@ -112,8 +114,6 @@ const writeLog = (out) => {
}
const boot = () => {
const windowStatePath = path.join(confDir, 'windowState.json')
// 恢复主窗体状态
let oldWindowState = {}
try {
@ -368,6 +368,9 @@ const boot = () => {
})
ipcMain.on('siyuan-quit', () => {
try {
if (resetWindowStateOnRestart) {
fs.writeFileSync(windowStatePath, '{}')
} else {
const bounds = mainWindow.getBounds()
fs.writeFileSync(windowStatePath, JSON.stringify({
isMaximized: mainWindow.isMaximized(),
@ -378,7 +381,9 @@ const boot = () => {
width: bounds.width,
height: bounds.height,
}))
}
} catch (e) {
writeLog(e)
}
app.exit()
globalShortcut.unregisterAll()
@ -420,7 +425,7 @@ const boot = () => {
if ('win32' === process.platform || 'linux' === process.platform) {
// 系统托盘
tray = new Tray(path.join(appDir, 'stage', 'icon-large.png'))
tray.setToolTip('SiYuan')
tray.setToolTip('SiYuan v' + appVer)
const trayMenuTemplate = [
{
label: 'Show Window',
@ -455,6 +460,13 @@ const boot = () => {
shell.openExternal('https://ld246.com/article/1649901726096')
},
},
{
label: 'Reset Window on restart',
type: 'checkbox',
click: v => {
resetWindowStateOnRestart = v.checked;
},
},
{
label: 'Quit',
click: () => {