Files
CamTalk/desktop/main/window.ts
2026-06-14 18:10:58 +08:00

46 lines
1.4 KiB
TypeScript

// ============================================================
// BrowserWindow 创建与配置
// 职责:窗口属性、加载策略(开发/生产)、快捷键
// ============================================================
import { app, BrowserWindow, screen } from 'electron'
import { join } from 'path'
// 判断是否为开发模式
const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged
// 前端路径配置
const FRONTEND_DEV_URL = 'http://localhost:5173'
const FRONTEND_DIST_PATH = '../frontend/dist/index.html'
export function createMainWindow(): BrowserWindow {
const { width, height } = screen.getPrimaryDisplay().workAreaSize
const win = new BrowserWindow({
width: Math.min(1400, width),
height: Math.min(900, height),
minWidth: 800,
minHeight: 600,
title: 'CamTalk',
titleBarStyle: process.platform === 'darwin' ? 'hiddenInset' : 'default',
backgroundColor: '#1a1a2e',
webPreferences: {
preload: join(__dirname, '../preload/index.js'),
contextIsolation: true,
nodeIntegration: false,
// 允许加载 http 资源(连接远程后端时需要)
webSecurity: false,
},
})
// 加载前端内容
if (isDev) {
win.loadURL(FRONTEND_DEV_URL)
win.webContents.openDevTools({ mode: 'detach' })
} else {
win.loadFile(join(__dirname, FRONTEND_DIST_PATH))
}
return win
}