diff --git a/gui/public/i18n/en/translation.ftl b/gui/public/i18n/en/translation.ftl
index 012b3854f..1bf5064d3 100644
--- a/gui/public/i18n/en/translation.ftl
+++ b/gui/public/i18n/en/translation.ftl
@@ -280,6 +280,7 @@ settings-sidebar-utils = Utilities
settings-sidebar-serial = Serial console
settings-sidebar-appearance = Appearance
settings-sidebar-notifications = Notifications
+settings-sidebar-advanced = Advanced
## SteamVR settings
settings-general-steamvr = SteamVR
@@ -603,6 +604,32 @@ settings-osc-vmc-mirror_tracking = Mirror tracking
settings-osc-vmc-mirror_tracking-description = Mirror the tracking horizontally.
settings-osc-vmc-mirror_tracking-label = Mirror tracking
+## Advanced settings
+settings-utils-advanced = Advanced
+
+settings-utils-advanced-reset-gui = Reset GUI settings
+settings-utils-advanced-reset-gui-description = Restore the default settings for the interface.
+settings-utils-advanced-reset-gui-label = Reset GUI
+settings-utils-advanced-reset-server = Reset tracking settings
+settings-utils-advanced-reset-server-description = Restore the default settings for the tracking.
+settings-utils-advanced-reset-server-label = Reset tracking
+settings-utils-advanced-reset-all = Reset all settings
+settings-utils-advanced-reset-all-description = Restore the default settings for both the interface and tracking.
+settings-utils-advanced-reset-all-label = Reset all
+settings-utils-advanced-reset_warning =
+ Warning: This will reset { $type ->
+ [gui] your GUI
+ [server] your tracking
+ *[all] all your
+ } settings to the defaults.
+ Are you sure you want to do this?
+settings-utils-advanced-reset_warning-reset = Reset settings
+settings-utils-advanced-reset_warning-cancel = Cancel
+
+settings-utils-advanced-open_data = Data folder
+settings-utils-advanced-open_data-description = Open SlimeVR's data folder in file explorer, containing config and log files.
+settings-utils-advanced-open_data-label = Open folder
+
## Setup/onboarding menu
onboarding-skip = Skip setup
onboarding-continue = Continue
@@ -810,11 +837,11 @@ onboarding-choose_mounting = What mounting calibration method to use?
# Multiline text
onboarding-choose_mounting-description = Mounting orientation corrects for the placement of trackers on your body.
onboarding-choose_mounting-auto_mounting = Automatic mounting
-# Italized text
+# Italicized text
onboarding-choose_mounting-auto_mounting-label-v2 = Recommended
onboarding-choose_mounting-auto_mounting-description = This will automatically detect the mounting orientations for all of your trackers from 2 poses
onboarding-choose_mounting-manual_mounting = Manual mounting
-# Italized text
+# Italicized text
onboarding-choose_mounting-manual_mounting-label-v2 = Might not be precise enough
onboarding-choose_mounting-manual_mounting-description = This will let you choose the mounting orientation manually for each tracker
# Multiline text
@@ -858,14 +885,14 @@ onboarding-choose_proportions-description-v1 = Body proportions are used to know
When proportions of your body don't match the ones saved, your tracking precision will be worse and you will notice things like skating or sliding, or your body not matching your avatar well.
You only need to measure your body once! Unless they are wrong or your body has changed, then you don't need to do them again.
onboarding-choose_proportions-auto_proportions = Automatic proportions
-# Italized text
+# Italicized text
onboarding-choose_proportions-auto_proportions-subtitle = Recommended
onboarding-choose_proportions-auto_proportions-descriptionv3 =
This will guess your proportions by recording a sample of your movements and passing it through an algorithm.
This requires having your headset (HMD) connected to SlimeVR and on your head!
onboarding-choose_proportions-manual_proportions = Manual proportions
-# Italized text
+# Italicized text
onboarding-choose_proportions-manual_proportions-subtitle = For small touches
onboarding-choose_proportions-manual_proportions-description = This will let you adjust your proportions manually by modifying them directly
onboarding-choose_proportions-export = Export proportions
diff --git a/gui/src-tauri/tauri.conf.json b/gui/src-tauri/tauri.conf.json
index f73e7d4e6..a111b03ec 100644
--- a/gui/src-tauri/tauri.conf.json
+++ b/gui/src-tauri/tauri.conf.json
@@ -73,7 +73,7 @@
"all": true
},
"shell": {
- "open": true
+ "open": "^((https?://\\w+)|(file://)).+"
},
"window": {
"close": true,
diff --git a/gui/src/App.tsx b/gui/src/App.tsx
index cb9ce9bde..9865a08b9 100644
--- a/gui/src/App.tsx
+++ b/gui/src/App.tsx
@@ -55,6 +55,7 @@ import { AppLayout } from './AppLayout';
import { Preload } from './components/Preload';
import { UnknownDeviceModal } from './components/UnknownDeviceModal';
import { useDiscordPresence } from './hooks/discord-presence';
+import { AdvancedSettings } from './components/settings/pages/AdvancedSettings';
export const GH_REPO = 'SlimeVR/SlimeVR-Server';
export const VersionContext = createContext('');
@@ -110,6 +111,7 @@ function Layout() {
} />
} />
} />
+ } />
+
+
+ );
+}
diff --git a/gui/src/components/settings/HandsWarningModal.tsx b/gui/src/components/settings/HandsWarningModal.tsx
index 545019b99..4d4e6d63c 100644
--- a/gui/src/components/settings/HandsWarningModal.tsx
+++ b/gui/src/components/settings/HandsWarningModal.tsx
@@ -19,14 +19,12 @@ export function HandsWarningModal({
*/
onClose: () => void;
/**
- * Function when you press `i understand`
+ * Function when you press `Yes`
*/
accept: () => void;
} & ReactModal.Props) {
const { l10n } = useLocalization();
- // isOpen is checked by checking if the parent modal is opened + our bodyPart is the
- // neck and we havent showed this warning yet
return (
void;
+ /**
+ * Function when you press `Reset settings`
+ */
+ accept: () => void;
+ /**
+ * Type of reset
+ */
+ variant: 'gui' | 'server' | 'all';
+} & ReactModal.Props) {
+ const { l10n } = useLocalization();
+
+ return (
+
+
+
+ }}
+ vars={{ type: variant }}
+ >
+
+ Warning: This will reset your {variant} settings to the
+ defaults.
+
+ Are you sure you want to do this?
+
+
+
+