This commit is contained in:
Natsumi
2025-08-27 12:15:24 +12:00
parent 21dcc51e83
commit 23053c1339
3 changed files with 59 additions and 34 deletions

View File

@@ -14,19 +14,8 @@ const { spawn, spawnSync } = require('child_process');
const fs = require('fs');
const https = require('https');
const VRCX_URI_PREFIX = "vrcx"
//app.disableHardwareAcceleration();
if (process.defaultApp) {
if (process.argv.length >= 2) {
app.setAsDefaultProtocolClient(VRCX_URI_PREFIX, process.execPath, [path.resolve(process.argv[1])])
} else {
app.setAsDefaultProtocolClient(VRCX_URI_PREFIX)
}
}
if (process.platform === 'linux') {
// Include bundled .NET runtime
const bundledDotNetPath = path.join(
@@ -59,6 +48,7 @@ if (!isDotNetInstalled()) {
});
}
const VRCX_URI_PREFIX = 'vrcx';
let isOverlayActive = false;
let appIsQuitting = false;
@@ -69,6 +59,15 @@ const noInstall = args.includes('--no-install');
const x11 = args.includes('--x11');
const noDesktop = args.includes('--no-desktop');
const startup = args.includes('--startup');
if (process.defaultApp) {
if (process.argv.length >= 2) {
app.setAsDefaultProtocolClient(VRCX_URI_PREFIX, process.execPath, [
path.resolve(process.argv[1])
]);
} else {
app.setAsDefaultProtocolClient(VRCX_URI_PREFIX);
}
}
const homePath = getHomePath();
tryRelaunchWithArgs(args);
@@ -108,7 +107,6 @@ interopApi.getDotNetObject('Discord').Init();
interopApi.getDotNetObject('WebApi').Init();
interopApi.getDotNetObject('LogWatcher').Init();
interopApi.getDotNetObject('IPCServer').Init();
interopApi.getDotNetObject('SystemMonitorElectron').Init();
interopApi.getDotNetObject('AppApiVrElectron').Init();
@@ -124,26 +122,31 @@ const hasAskedToMoveAppImage =
VRCXStorage.Get('VRCX_HasAskedToMoveAppImage') === 'true';
let isCloseToTray = VRCXStorage.Get('VRCX_CloseToTray') === 'true';
const gotTheLock = app.requestSingleInstanceLock()
const strip_vrcx_prefix_regex = new RegExp("^" + VRCX_URI_PREFIX + ":\/\/")
const gotTheLock = app.requestSingleInstanceLock();
const strip_vrcx_prefix_regex = new RegExp('^' + VRCX_URI_PREFIX + '://');
if (!gotTheLock) {
app.quit()
app.quit();
} else {
app.on('second-instance', (event, commandLine, workingDirectory) => {
if (mainWindow && commandLine.length >= 2) {
mainWindow.webContents.send('launch-command', commandLine.pop().trim().replace(strip_vrcx_prefix_regex, ""))
mainWindow.webContents.send(
'launch-command',
commandLine.pop().trim().replace(strip_vrcx_prefix_regex, '')
);
}
})
});
app.on('open-url', (event, url) => {
if (mainWindow && url) {
mainWindow.webContents.send('launch-command', url.replace(strip_vrcx_prefix_regex, ""))
mainWindow.webContents.send(
'launch-command',
url.replace(strip_vrcx_prefix_regex, '')
);
}
})
});
}
ipcMain.handle('applyWindowSettings', (event, position, size, state) => {
if (position) {
mainWindow.setPosition(parseInt(position.x), parseInt(position.y));
@@ -302,7 +305,7 @@ function createWindow() {
icon: path.join(rootDir, 'VRCX.png'),
autoHideMenuBar: true,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
preload: path.join(__dirname, 'preload.js')
}
});
applyWindowState();