Spaces:
Paused
Paused
| import { app, BrowserWindow } from 'electron'; | |
| import path from 'path'; | |
| import { fileURLToPath } from 'url'; | |
| import yargs from 'yargs'; | |
| import { serverEvents, EVENT_NAMES } from '../server-events.js'; | |
| const cliArguments = yargs(process.argv) | |
| .usage('Usage: <your-start-script> [options]') | |
| .option('width', { | |
| type: 'number', | |
| default: 800, | |
| describe: 'The width of the window', | |
| }) | |
| .option('height', { | |
| type: 'number', | |
| default: 600, | |
| describe: 'The height of the window', | |
| }) | |
| .parseSync(); | |
| /** @type {string} The URL to load in the window. */ | |
| let appUrl; | |
| function createSillyTavernWindow() { | |
| if (!appUrl) { | |
| console.error('The server has not started yet.'); | |
| return; | |
| } | |
| new BrowserWindow({ | |
| height: cliArguments.height, | |
| width: cliArguments.width, | |
| }).loadURL(appUrl); | |
| } | |
| function startServer() { | |
| return new Promise((_resolve, _reject) => { | |
| serverEvents.addListener(EVENT_NAMES.SERVER_STARTED, ({ url }) => { | |
| appUrl = url.toString(); | |
| createSillyTavernWindow(); | |
| }); | |
| const sillyTavernRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..'); | |
| process.chdir(sillyTavernRoot); | |
| import('../../server.js'); | |
| }); | |
| } | |
| app.whenReady().then(() => { | |
| app.on('activate', () => { | |
| if (BrowserWindow.getAllWindows().length === 0) { | |
| createSillyTavernWindow(); | |
| } | |
| }); | |
| startServer(); | |
| }); | |
| app.on('window-all-closed', () => { | |
| if (process.platform !== 'darwin') { | |
| app.quit(); | |
| } | |
| }); | |