@@ -4,6 +4,7 @@ package dev.slimevr.desktop
44
55import dev.slimevr.AppContext
66import dev.slimevr.CURRENT_PLATFORM
7+ import dev.slimevr.FeatureFlags
78import dev.slimevr.Phase1Context
89import dev.slimevr.Platform
910import dev.slimevr.VRServer
@@ -12,6 +13,8 @@ import dev.slimevr.config.AppConfig
1213import dev.slimevr.context.debug.ContextDebug
1314import dev.slimevr.desktop.config.DesktopConfigStorage
1415import dev.slimevr.desktop.hid.createDesktopHIDManager
16+ import dev.slimevr.desktop.install.executeShellCommand
17+ import dev.slimevr.desktop.install.runInstaller
1518import dev.slimevr.desktop.ipc.createIpcServers
1619import dev.slimevr.desktop.ipc.createSolarXRWebsocketServer
1720import dev.slimevr.desktop.networkprofile.setupDesktopNetworkProfileChecker
@@ -38,6 +41,28 @@ fun main(args: Array<String>) = runBlocking<Unit> {
3841 ContextDebug .enabled = System .getProperty(" slimevr.debug.context" ) == " true" ||
3942 System .getenv(" SLIMEVR_DEBUG_CONTEXT" ) == " true"
4043
44+ val featureFlags = FeatureFlags ()
45+ for (arg in args) {
46+ when (arg) {
47+ " --steam" , " -s" -> featureFlags.steam = true
48+ " --install" , " -i" -> { runInstaller(featureFlags); return @runBlocking }
49+ " --no-udev" , " -u" -> featureFlags.skipCheckUdev = true
50+ }
51+ }
52+ if (CURRENT_PLATFORM != Platform .LINUX ) featureFlags.skipCheckUdev = true
53+
54+ val isInstallDisabled = System .getenv(" SLIME_SERVER_DISABLE_INSTALLER" )?.toIntOrNull()
55+ if (featureFlags.steam && isInstallDisabled != 1 ) runInstaller(featureFlags)
56+
57+ if (! featureFlags.skipCheckUdev) {
58+ val command = if (featureFlags.steam) {
59+ arrayOf(" steam-runtime-launch-client" , " --alongside-steam" , " --" , " udevadm" , " cat" )
60+ } else {
61+ arrayOf(" udevadm" , " cat" )
62+ }
63+ featureFlags.udevRulesInstalled = executeShellCommand(* command)?.contains(" slime" )
64+ }
65+
4166 val configFolder = resolveConfigDirectory() ? : error(" Unable to resolve config folder" )
4267 val storage = DesktopConfigStorage (configFolder.toFile())
4368 val config = AppConfig .create(this , storage = storage)
@@ -66,6 +91,7 @@ fun main(args: Array<String>) = runBlocking<Unit> {
6691 server = server,
6792 config = config,
6893 serialServer = serialServer,
94+ featureFlags = featureFlags,
6995 skeleton = skeleton,
7096 firmwareManager = firmwareManager,
7197 vrcConfigManager = vrcConfigManager,
0 commit comments