UNPKG

psya

Version:
61 lines (52 loc) 1.86 kB
import { app, BrowserWindow } from "electron" import * as path from "path" import { spawn } from "node:child_process" async function createWindow() { // Create the browser window. const mainWindow = new BrowserWindow({ height: 600, webPreferences: { preload: path.join(__dirname, "preload.js"), }, width: 800, }); // launch the kernel const kernel = spawn("python3", ['-m', 'psya'], { stdio: ['inherit', 'pipe', 'inherit' ]}) let resolved = false const url: string = await new Promise(resolve => kernel.stdout.on('data', data => { if (!resolved) { resolve(data.toString('utf8').trim()) resolved = true } console.log(data.toString('utf8')) }) ) // kernel.stdout.pipe(process.stdout) // and load the index.html of the app. // mainWindow.loadFile(path.join(__dirname, "../index.html")); mainWindow.loadURL(url) // Open the DevTools. mainWindow.webContents.openDevTools(); } // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.whenReady().then(() => { createWindow(); app.on("activate", function () { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow(); }); }); // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. app.on("window-all-closed", () => { if (process.platform !== "darwin") { app.quit(); } }); // In this file you can include the rest of your app"s specific main process // code. You can also put them in separate files and require them here.