From 05fe001f88f014b20939d37d55902990a7e0cec1 Mon Sep 17 00:00:00 2001 From: Catpotatos Date: Mon, 13 Apr 2026 21:56:00 +0100 Subject: [PATCH] fix: typing space in Env Variables would lead to crash. feat: Added Mango Hud variables to saved presets for fps and frame limiting. removed variable that was not working for device spoofing. Re-ordered WINEDLLOVERRIDES to top. --- .../ui/component/dialog/EnvironmentTab.kt | 6 +-- .../ui/component/settings/SettingsEnvVars.kt | 20 +++++----- .../com/winlator/core/envvars/EnvVarInfo.kt | 38 ++++++++++--------- .../com/winlator/core/envvars/EnvVars.java | 1 + 4 files changed, 35 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/app/gamenative/ui/component/dialog/EnvironmentTab.kt b/app/src/main/java/app/gamenative/ui/component/dialog/EnvironmentTab.kt index a7818bd69f..08ebfb0493 100644 --- a/app/src/main/java/app/gamenative/ui/component/dialog/EnvironmentTab.kt +++ b/app/src/main/java/app/gamenative/ui/component/dialog/EnvironmentTab.kt @@ -95,7 +95,7 @@ fun EnvironmentTabContent(state: ContainerConfigState) { Row { NoExtractOutlinedTextField( value = envVarName, - onValueChange = { envVarName = it }, + onValueChange = { envVarName = it.trim() }, label = { Text(text = stringResource(R.string.name)) }, singleLine = true, trailingIcon = { @@ -160,7 +160,7 @@ fun EnvironmentTabContent(state: ContainerConfigState) { val hasSuggestions = selectedEnvVarInfo?.selectionType == EnvVarSelectionType.SUGGESTIONS NoExtractOutlinedTextField( value = envVarValue, - onValueChange = { envVarValue = it }, + onValueChange = { envVarValue = it.trim() }, label = { Text(text = stringResource(R.string.value)) }, singleLine = true, trailingIcon = if (hasSuggestions) { @@ -202,7 +202,7 @@ fun EnvironmentTabContent(state: ContainerConfigState) { enabled = envVarName.isNotEmpty(), onClick = { val envVars = EnvVars(config.envVars) - envVars.put(envVarName, envVarValue) + envVars.put(envVarName.trim(), envVarValue.trim()) state.config.value = config.copy(envVars = envVars.toString()) state.showEnvVarCreateDialog.value = false }, diff --git a/app/src/main/java/app/gamenative/ui/component/settings/SettingsEnvVars.kt b/app/src/main/java/app/gamenative/ui/component/settings/SettingsEnvVars.kt index fcb2f5e2b8..5933ff69a6 100644 --- a/app/src/main/java/app/gamenative/ui/component/settings/SettingsEnvVars.kt +++ b/app/src/main/java/app/gamenative/ui/component/settings/SettingsEnvVars.kt @@ -75,7 +75,7 @@ fun SettingsEnvVars( value = value, suggestions = envVarInfo?.possibleValues ?: emptyList(), onValueChange = { - envVars.put(identifier, it) + envVars.put(identifier, it.trim()) onEnvVarsChange(envVars) }, action = envVarAction?.let { @@ -106,16 +106,16 @@ fun SettingsEnvVars( enabled = enabled, title = { Text(identifier) }, value = value, - onValueChange = { - envVars.put(identifier, it) - onEnvVarsChange(envVars) - }, - action = envVarAction?.let { - { envVarAction(identifier) } - }, - ) - } + onValueChange = { + envVars.put(identifier, it.trim()) + onEnvVarsChange(envVars) + }, + action = envVarAction?.let { + { envVarAction(identifier) } + }, + ) } } } } +} diff --git a/app/src/main/java/com/winlator/core/envvars/EnvVarInfo.kt b/app/src/main/java/com/winlator/core/envvars/EnvVarInfo.kt index b6d128d589..7977529611 100644 --- a/app/src/main/java/com/winlator/core/envvars/EnvVarInfo.kt +++ b/app/src/main/java/com/winlator/core/envvars/EnvVarInfo.kt @@ -209,6 +209,18 @@ data class EnvVarInfo( "memory", "gpuload", "version", "api", "cs", "compiler", "samplers", ), ), + // Wine DLL overrides — user types freely or picks a common preset + // More common DLL overrides can be added in future. Only audio related for now + "WINEDLLOVERRIDES" to EnvVarInfo( + identifier = "WINEDLLOVERRIDES", + selectionType = EnvVarSelectionType.SUGGESTIONS, + possibleValues = listOf( + "openal32=native,builtin", + "soft_oal=native", + "openal32=native,builtin;soft_oal=native", + "xaudio2_7=native,builtin", + ), + ), "MESA_EXTENSION_MAX_YEAR" to EnvVarInfo( identifier = "MESA_EXTENSION_MAX_YEAR", ), @@ -270,26 +282,18 @@ data class EnvVarInfo( "MESA_VK_PRESENT_MODE" to EnvVarInfo( identifier = "MESA_VK_PRESENT_MODE", ), - "DXVK_FILTER_DEVICE_NAME" to EnvVarInfo( - identifier = "DXVK_FILTER_DEVICE_NAME", - selectionType = EnvVarSelectionType.MULTI_SELECT, - possibleValues = listOf( - "NVIDIA GeForce GTX 1080", - "NVIDIA GeForce RTX 3060", - "AMD Radeon RX 580", - "Radeon HD 7900 Series", - ), + "MANGOHUD" to EnvVarInfo( + identifier = "MANGOHUD", + selectionType = EnvVarSelectionType.TOGGLE, + possibleValues = listOf("0", "1"), ), - // Wine DLL overrides — user types freely or picks a common preset - // More common DLL overrides can be added in future. Only audio related for now - "WINEDLLOVERRIDES" to EnvVarInfo( - identifier = "WINEDLLOVERRIDES", + "MANGOHUD_CONFIG" to EnvVarInfo( + identifier = "MANGOHUD_CONFIG", selectionType = EnvVarSelectionType.SUGGESTIONS, possibleValues = listOf( - "openal32=native,builtin", - "soft_oal=native", - "openal32=native,builtin;soft_oal=native", - "xaudio2_7=native,builtin", + "fps", + "fps_limit=60", + "fps_only", ), ), ) diff --git a/app/src/main/java/com/winlator/core/envvars/EnvVars.java b/app/src/main/java/com/winlator/core/envvars/EnvVars.java index 4977dc8934..38ef98a73f 100644 --- a/app/src/main/java/com/winlator/core/envvars/EnvVars.java +++ b/app/src/main/java/com/winlator/core/envvars/EnvVars.java @@ -23,6 +23,7 @@ public void putAll(String values) { String[] parts = values.split(" "); for (String part : parts) { int index = part.indexOf("="); + if (part.isEmpty() || index < 1) continue; String name = part.substring(0, index); String value = part.substring(index+1); data.put(name, value);