mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 07:00:12 +01:00
This commit is contained in:
parent
1e312b521a
commit
4c049b7600
3 changed files with 39 additions and 42 deletions
|
|
@ -52,7 +52,9 @@ try {
|
|||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
require('electron').dialog.showErrorBox('创建配置目录失败 Failed to create config directory',
|
||||
require('electron').
|
||||
dialog.
|
||||
showErrorBox('创建配置目录失败 Failed to create config directory',
|
||||
'思源需要在用户家目录下创建配置文件夹(~/.config/siyuan),请确保该路径具有写入权限。\n\nSiYuan needs to create a configuration folder (~/.config/siyuan) in the user\'s home directory. Please make sure that the path has write permissions.')
|
||||
app.exit()
|
||||
}
|
||||
|
|
@ -76,7 +78,6 @@ const showErrorWindow = (title, content) => {
|
|||
frame: false,
|
||||
icon: path.join(appDir, 'stage', 'icon-large.png'),
|
||||
webPreferences: {
|
||||
nativeWindowOpen: true,
|
||||
nodeIntegration: true,
|
||||
webviewTag: true,
|
||||
webSecurity: false,
|
||||
|
|
@ -190,7 +191,6 @@ const boot = () => {
|
|||
trafficLightPosition: {x: 8, y: 8},
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
nativeWindowOpen: true,
|
||||
webviewTag: true,
|
||||
webSecurity: false,
|
||||
contextIsolation: false,
|
||||
|
|
@ -372,9 +372,6 @@ const initKernel = (workspace, port, lang) => {
|
|||
frame: false,
|
||||
icon: path.join(appDir, 'stage', 'icon-large.png'),
|
||||
transparent: 'linux' !== process.platform,
|
||||
webPreferences: {
|
||||
nativeWindowOpen: true,
|
||||
},
|
||||
})
|
||||
|
||||
const kernelName = 'win32' === process.platform
|
||||
|
|
@ -390,7 +387,7 @@ const initKernel = (workspace, port, lang) => {
|
|||
}
|
||||
|
||||
if (!isDevEnv || workspaces.length > 0) {
|
||||
if (port && "" !== port) {
|
||||
if (port && '' !== port) {
|
||||
kernelPort = port
|
||||
} else {
|
||||
const getAvailablePort = () => {
|
||||
|
|
@ -421,13 +418,13 @@ const initKernel = (workspace, port, lang) => {
|
|||
if (isDevEnv && workspaces.length === 0) {
|
||||
cmds.push('--mode', 'dev')
|
||||
}
|
||||
if (workspace && "" !== workspace) {
|
||||
if (workspace && '' !== workspace) {
|
||||
cmds.push('--workspace', workspace)
|
||||
}
|
||||
if (port && "" !== port) {
|
||||
if (port && '' !== port) {
|
||||
cmds.push('--port', port)
|
||||
}
|
||||
if (lang && "" !== lang) {
|
||||
if (lang && '' !== lang) {
|
||||
cmds.push('--lang', lang)
|
||||
}
|
||||
let cmd = `ui version [${appVer}], booting kernel [${kernelPath} ${cmds.join(
|
||||
|
|
@ -732,6 +729,29 @@ app.whenReady().then(() => {
|
|||
writeLog('exited ui')
|
||||
}
|
||||
})
|
||||
ipcMain.on('siyuan-openwindow', (event, data) => {
|
||||
const win = new BrowserWindow({
|
||||
show: true,
|
||||
backgroundColor: '#FFF',
|
||||
trafficLightPosition: {x: 8, y: 13},
|
||||
width: 1032,
|
||||
height: 650,
|
||||
minWidth: 493,
|
||||
minHeight: 376,
|
||||
fullscreenable: true,
|
||||
frame: 'darwin' === process.platform,
|
||||
icon: path.join(appDir, 'stage', 'icon-large.png'),
|
||||
titleBarStyle: 'hidden',
|
||||
webPreferences: {
|
||||
contextIsolation: false,
|
||||
nodeIntegration: true,
|
||||
webviewTag: true,
|
||||
webSecurity: false,
|
||||
},
|
||||
})
|
||||
win.loadURL(data)
|
||||
require('@electron/remote/main').enable(win.webContents)
|
||||
})
|
||||
ipcMain.on('siyuan-open-workspace', (event, data) => {
|
||||
const foundWorkspace = workspaces.find((item, index) => {
|
||||
if (item.workspaceDir === data.workspace) {
|
||||
|
|
@ -740,7 +760,7 @@ app.whenReady().then(() => {
|
|||
}
|
||||
})
|
||||
if (!foundWorkspace) {
|
||||
initKernel(data.workspace, "", data.lang).then((isSucc) => {
|
||||
initKernel(data.workspace, '', data.lang).then((isSucc) => {
|
||||
if (isSucc) {
|
||||
boot()
|
||||
}
|
||||
|
|
@ -803,7 +823,6 @@ app.whenReady().then(() => {
|
|||
})
|
||||
})
|
||||
})
|
||||
|
||||
ipcMain.on('siyuan-lock-screen', () => {
|
||||
BrowserWindow.getAllWindows().forEach(item => {
|
||||
item.webContents.send('siyuan-lock-screen')
|
||||
|
|
@ -818,7 +837,6 @@ app.whenReady().then(() => {
|
|||
icon: path.join(appDir, 'stage', 'icon-large.png'),
|
||||
transparent: 'linux' !== process.platform,
|
||||
webPreferences: {
|
||||
nativeWindowOpen: true,
|
||||
nodeIntegration: true,
|
||||
webviewTag: true,
|
||||
webSecurity: false,
|
||||
|
|
@ -847,7 +865,7 @@ app.whenReady().then(() => {
|
|||
firstOpenWindow.show()
|
||||
// 初始化启动
|
||||
ipcMain.on('siyuan-first-init', (event, data) => {
|
||||
initKernel(data.workspace, "", data.lang).then((isSucc) => {
|
||||
initKernel(data.workspace, '', data.lang).then((isSucc) => {
|
||||
if (isSucc) {
|
||||
boot()
|
||||
}
|
||||
|
|
@ -871,7 +889,7 @@ app.whenReady().then(() => {
|
|||
if (port) {
|
||||
writeLog('got arg [--port=' + port + ']')
|
||||
}
|
||||
initKernel(workspace, port, "").then((isSucc) => {
|
||||
initKernel(workspace, port, '').then((isSucc) => {
|
||||
if (isSucc) {
|
||||
boot()
|
||||
}
|
||||
|
|
@ -889,10 +907,6 @@ app.on('open-url', (event, url) => { // for macOS
|
|||
}
|
||||
})
|
||||
|
||||
app.on('browser-window-created', (_, window) => {
|
||||
require("@electron/remote/main").enable(window.webContents)
|
||||
})
|
||||
|
||||
app.on('second-instance', (event, argv) => {
|
||||
writeLog('second-instance [' + argv + ']')
|
||||
let workspace = argv.find((arg) => arg.startsWith('--workspace='))
|
||||
|
|
@ -919,7 +933,7 @@ app.on('second-instance', (event, argv) => {
|
|||
return
|
||||
}
|
||||
if (workspace) {
|
||||
initKernel(workspace, port, "").then((isSucc) => {
|
||||
initKernel(workspace, port, '').then((isSucc) => {
|
||||
if (isSucc) {
|
||||
boot()
|
||||
}
|
||||
|
|
@ -969,7 +983,6 @@ app.on('before-quit', (event) => {
|
|||
})
|
||||
|
||||
const {powerMonitor} = require('electron')
|
||||
const {write} = require('fs')
|
||||
|
||||
powerMonitor.on('suspend', () => {
|
||||
writeLog('system suspend')
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ export abstract class Constants {
|
|||
public static readonly SIYUAN_HOTKEY: string = "siyuan-hotkey";
|
||||
public static readonly SIYUAN_INIT: string = "siyuan-init";
|
||||
public static readonly SIYUAN_OPENURL: string = "siyuan-openurl";
|
||||
public static readonly SIYUAN_OPENWINDOW: string = "siyuan-openwindow";
|
||||
public static readonly SIYUAN_CLOSETAB: string = "siyuan-closetab";
|
||||
public static readonly SIYUAN_SAVE_CLOSE: string = "siyuan-save-close";
|
||||
public static readonly SIYUAN_EXPORT_PDF: string = "siyuan-export-pdf";
|
||||
|
|
|
|||
|
|
@ -1,30 +1,13 @@
|
|||
import {layoutToJSON} from "../layout/util";
|
||||
/// #if !BROWSER
|
||||
import {BrowserWindow} from "@electron/remote";
|
||||
import * as path from "path";
|
||||
import { ipcRenderer } from "electron";
|
||||
/// #endif
|
||||
import {Constants} from "../constants";
|
||||
import {Tab} from "../layout/Tab";
|
||||
|
||||
export const openNewWindow = (tab: Tab) => {
|
||||
const win = new BrowserWindow({
|
||||
show: true,
|
||||
trafficLightPosition: {x: 8, y: 13},
|
||||
width: 1032,
|
||||
height: 650,
|
||||
transparent: window.siyuan.config.system.os !== "linux",
|
||||
frame: "darwin" === window.siyuan.config.system.os,
|
||||
icon: path.join(window.siyuan.config.system.appDir, "stage", "icon-large.png"),
|
||||
titleBarStyle: "hidden",
|
||||
webPreferences: {
|
||||
contextIsolation: false,
|
||||
nodeIntegration: true,
|
||||
webviewTag: true,
|
||||
webSecurity: false,
|
||||
},
|
||||
});
|
||||
const json = {};
|
||||
layoutToJSON(tab, json);
|
||||
win.loadURL(`${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}`);
|
||||
ipcRenderer.send(Constants.SIYUAN_OPENWINDOW, `${window.location.protocol}//${window.location.host}/stage/build/app/window.html?v=${Constants.SIYUAN_VERSION}&json=${JSON.stringify(json)}`);
|
||||
tab.parent.removeTab(tab.id);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue