mirror of
https://github.com/vrcx-team/VRCX.git
synced 2026-04-06 00:32:02 +02:00
* init * SQLite changes * Move html folder, edit build scripts * AppApi interface * Build flags * AppApi inheritance * Finishing touches * Merge upstream changes * Test CI * Fix class inits * Rename AppApi * Merge upstream changes * Fix SQLiteLegacy on Linux, Add Linux interop, build tools * Linux specific localisation strings * Make it run * Bring back most of Linux functionality * Clean up * Fix TTS voices * Fix UI var * Changes * Electron minimise to tray * Remove separate toggle for WlxOverlay * Fixes * Touchups * Move csproj * Window zoom, Desktop Notifications, VR check on Linux * Fix desktop notifications, VR check spam * Fix building on Linux * Clean up * Fix WebApi headers * Rewrite VRCX updater * Clean up * Linux updater * Add Linux to build action * init * SQLite changes * Move html folder, edit build scripts * AppApi interface * Build flags * AppApi inheritance * Finishing touches * Merge upstream changes * Test CI * Fix class inits * Rename AppApi * Merge upstream changes * Fix SQLiteLegacy on Linux, Add Linux interop, build tools * Linux specific localisation strings * Make it run * Bring back most of Linux functionality * Clean up * Fix TTS voices * Changes * Electron minimise to tray * Remove separate toggle for WlxOverlay * Fixes * Touchups * Move csproj * Window zoom, Desktop Notifications, VR check on Linux * Fix desktop notifications, VR check spam * Fix building on Linux * Clean up * Fix WebApi headers * Rewrite VRCX updater * Clean up * Linux updater * Add Linux to build action * Test updater * Rebase and handle merge conflicts * Fix Linux updater * Fix Linux app restart * Fix friend order * Handle AppImageInstaller, show an install message on Linux * Updates to the AppImage installer * Fix Linux updater, fix set version, check for .NET, copy wine prefix * Handle random errors * Rotate tall prints * try fix Linux restart bug * Final --------- Co-authored-by: rs189 <35667100+rs189@users.noreply.github.com>
123 lines
3.6 KiB
C#
123 lines
3.6 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
|
|
namespace VRCX
|
|
{
|
|
public partial class AppApiElectron
|
|
{
|
|
public override void OnProcessStateChanged(MonitoredProcess monitoredProcess)
|
|
{
|
|
// unused
|
|
}
|
|
|
|
/// <summary>
|
|
/// Checks if the VRChat game and SteamVR are currently running and updates the browser's JavaScript function $app.updateIsGameRunning with the results.
|
|
/// </summary>
|
|
public override void CheckGameRunning()
|
|
{
|
|
var isGameRunning = false;
|
|
var isSteamVRRunning = false;
|
|
|
|
if (ProcessMonitor.Instance.IsProcessRunning("VRChat"))
|
|
{
|
|
isGameRunning = true;
|
|
}
|
|
if (ProcessMonitor.Instance.IsProcessRunning("vrserver"))
|
|
{
|
|
isSteamVRRunning = true;
|
|
}
|
|
}
|
|
|
|
public override bool IsGameRunning()
|
|
{
|
|
var isGameRunning = false;
|
|
var processes = Process.GetProcesses();
|
|
foreach (var process in processes)
|
|
{
|
|
if (process.ProcessName == "VRChat.exe")
|
|
{
|
|
isGameRunning = true;
|
|
break;
|
|
}
|
|
}
|
|
return isGameRunning;
|
|
}
|
|
|
|
public override bool IsSteamVRRunning()
|
|
{
|
|
var isSteamVRRunning = false;
|
|
var processes = Process.GetProcesses();
|
|
foreach (var process in processes)
|
|
{
|
|
if (process.ProcessName == "vrmonitor" || process.ProcessName == "monado-service")
|
|
{
|
|
isSteamVRRunning = true;
|
|
break;
|
|
}
|
|
}
|
|
return isSteamVRRunning;
|
|
}
|
|
|
|
public override int QuitGame()
|
|
{
|
|
var processes = Process.GetProcessesByName("vrchat");
|
|
if (processes.Length == 1)
|
|
processes[0].Kill();
|
|
|
|
return processes.Length;
|
|
}
|
|
|
|
public override bool StartGame(string arguments)
|
|
{
|
|
try
|
|
{
|
|
var steamPath = _steamPath;
|
|
if (string.IsNullOrEmpty(steamPath))
|
|
{
|
|
logger.Error("Steam path could not be determined.");
|
|
return false;
|
|
}
|
|
|
|
var steamExecutable = Path.Combine(steamPath, "steam.sh");
|
|
if (!File.Exists(steamExecutable))
|
|
{
|
|
logger.Error("Steam executable not found.");
|
|
return false;
|
|
}
|
|
|
|
Process.Start(new ProcessStartInfo
|
|
{
|
|
FileName = steamExecutable,
|
|
Arguments = $"-applaunch 438100 {arguments}",
|
|
UseShellExecute = false,
|
|
})?.Close();
|
|
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error($"Failed to start VRChat: {ex.Message}");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public override bool StartGameFromPath(string path, string arguments)
|
|
{
|
|
if (!path.EndsWith(".exe"))
|
|
path = Path.Combine(path, "launch.exe");
|
|
|
|
if (!path.EndsWith("launch.exe") || !File.Exists(path))
|
|
return false;
|
|
|
|
Process.Start(new ProcessStartInfo
|
|
{
|
|
WorkingDirectory = Path.GetDirectoryName(path),
|
|
FileName = path,
|
|
UseShellExecute = false,
|
|
Arguments = arguments
|
|
})?.Close();
|
|
return true;
|
|
}
|
|
}
|
|
} |