73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import url, { fileURLToPath } from "node:url";
|
|
import { BrowserView, BrowserWindow } from "electron";
|
|
import { isPackaged } from "./env";
|
|
import path, { join } from "node:path";
|
|
import { Log } from "../mapi/log/main";
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
process.env.APP_ROOT = path.join(__dirname, "../..");
|
|
|
|
export const MAIN_DIST = path.join(process.env.APP_ROOT, "dist-electron");
|
|
export const RENDERER_DIST = path.join(process.env.APP_ROOT, "dist");
|
|
export const VITE_DEV_SERVER_URL = process.env.VITE_DEV_SERVER_URL;
|
|
|
|
process.env.VITE_PUBLIC = VITE_DEV_SERVER_URL
|
|
? path.join(process.env.APP_ROOT, "public")
|
|
: RENDERER_DIST;
|
|
|
|
export const preloadDefault = path.join(MAIN_DIST, "preload/index.cjs");
|
|
|
|
export const rendererLoadPath = (
|
|
window: BrowserWindow | BrowserView,
|
|
fileName: string,
|
|
) => {
|
|
if (!isPackaged && process.env.VITE_DEV_SERVER_URL) {
|
|
const x = new url.URL(rendererDistPath(fileName));
|
|
if (window instanceof BrowserView) {
|
|
window.webContents.loadURL(x.toString());
|
|
} else {
|
|
window.loadURL(x.toString());
|
|
}
|
|
} else {
|
|
if (window instanceof BrowserView) {
|
|
window.webContents.loadFile(rendererDistPath(fileName));
|
|
} else {
|
|
window.loadFile(rendererDistPath(fileName));
|
|
}
|
|
}
|
|
};
|
|
|
|
export const rendererDistPath = (fileName: string) => {
|
|
if (!isPackaged && process.env.VITE_DEV_SERVER_URL) {
|
|
return `${process.env.VITE_DEV_SERVER_URL.replace(/\/+$/, "")}/${fileName}`;
|
|
}
|
|
return join(RENDERER_DIST, fileName);
|
|
};
|
|
|
|
export const rendererIsUrl = (url: string) => {
|
|
return url.startsWith("http://") || url.startsWith("https://");
|
|
};
|
|
|
|
export const getGpuInfo = async () => {
|
|
const list = [] as {
|
|
id: string;
|
|
name: string;
|
|
size: number;
|
|
}[];
|
|
try {
|
|
// @ts-ignore
|
|
const si = await import("systeminformation");
|
|
const graphics = await si.graphics();
|
|
graphics.controllers.forEach((controller, index) => {
|
|
const size = Math.ceil(controller.vram / 1024);
|
|
let id = index + "";
|
|
const name = controller.model;
|
|
list.push({ id, name, size });
|
|
});
|
|
} catch (e) {
|
|
Log.error("getGpuInfo", e);
|
|
}
|
|
return list;
|
|
};
|