55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import { join } from "node:path";
|
|
import { app, BrowserWindow } from "electron";
|
|
|
|
const __dirname = import.meta.dirname;
|
|
|
|
let _mainWindow: BrowserWindow | null = null;
|
|
|
|
function createWindow(): BrowserWindow {
|
|
const preload = join(__dirname, "../preload/index.mjs");
|
|
|
|
const window = new BrowserWindow({
|
|
width: 1400,
|
|
height: 900,
|
|
minWidth: 1100,
|
|
minHeight: 720,
|
|
backgroundColor: "#0a0a0a",
|
|
titleBarStyle: process.platform === "darwin" ? "hiddenInset" : "default",
|
|
trafficLightPosition:
|
|
process.platform === "darwin" ? { x: 16, y: 16 } : undefined,
|
|
webPreferences: {
|
|
preload,
|
|
contextIsolation: true,
|
|
nodeIntegration: false,
|
|
},
|
|
});
|
|
|
|
const rendererUrl = process.env.ELECTRON_RENDERER_URL;
|
|
|
|
if (rendererUrl) {
|
|
void window.loadURL(rendererUrl);
|
|
} else {
|
|
void window.loadFile(join(__dirname, "../renderer/index.html"));
|
|
}
|
|
|
|
console.log("[studio] window created");
|
|
console.log("SF Studio ready");
|
|
|
|
return window;
|
|
}
|
|
|
|
app.whenReady().then(() => {
|
|
_mainWindow = createWindow();
|
|
|
|
app.on("activate", () => {
|
|
if (BrowserWindow.getAllWindows().length === 0) {
|
|
_mainWindow = createWindow();
|
|
}
|
|
});
|
|
});
|
|
|
|
app.on("window-all-closed", () => {
|
|
if (process.platform !== "darwin") {
|
|
app.quit();
|
|
}
|
|
});
|