diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs
index 027e1052b..5f19f137f 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs
+++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs
@@ -17,7 +17,7 @@ namespace Ryujinx.UI.Common.Configuration
///
/// The current version of the file format
///
- public const int CurrentVersion = 57;
+ public const int CurrentVersion = 58;
///
/// Version of the configuration file format
@@ -351,6 +351,11 @@ namespace Ryujinx.UI.Common.Configuration
///
public bool StartFullscreen { get; set; }
+ ///
+ /// Start games with UI hidden
+ ///
+ public bool StartNoUI { get; set; }
+
///
/// Show console window
///
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Migration.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Migration.cs
index a41ea2cd7..9579e15eb 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Migration.cs
+++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Migration.cs
@@ -638,6 +638,15 @@ namespace Ryujinx.UI.Common.Configuration
configurationFileUpdated = true;
}
+ if (configurationFileFormat.Version < 58)
+ {
+ Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 17.");
+
+ configurationFileFormat.StartNoUI = false;
+
+ configurationFileUpdated = true;
+ }
+
Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog;
Graphics.ResScale.Value = configurationFileFormat.ResScale;
Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom;
@@ -719,6 +728,7 @@ namespace Ryujinx.UI.Common.Configuration
UI.GridSize.Value = configurationFileFormat.GridSize;
UI.ApplicationSort.Value = configurationFileFormat.ApplicationSort;
UI.StartFullscreen.Value = configurationFileFormat.StartFullscreen;
+ UI.StartNoUI.Value = configurationFileFormat.StartNoUI;
UI.ShowConsole.Value = configurationFileFormat.ShowConsole;
UI.WindowStartup.WindowSizeWidth.Value = configurationFileFormat.WindowStartup.WindowSizeWidth;
UI.WindowStartup.WindowSizeHeight.Value = configurationFileFormat.WindowStartup.WindowSizeHeight;
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Model.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Model.cs
index f28ce0348..9da0e8968 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Model.cs
+++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Model.cs
@@ -149,6 +149,11 @@ namespace Ryujinx.UI.Common.Configuration
///
public ReactiveObject StartFullscreen { get; private set; }
+ ///
+ /// Start games with UI hidden
+ ///
+ public ReactiveObject StartNoUI { get; private set; }
+
///
/// Hide / Show Console Window
///
@@ -189,6 +194,7 @@ namespace Ryujinx.UI.Common.Configuration
WindowStartup = new WindowStartupSettings();
BaseStyle = new ReactiveObject();
StartFullscreen = new ReactiveObject();
+ StartNoUI = new ReactiveObject();
GameListViewMode = new ReactiveObject();
ShowNames = new ReactiveObject();
GridSize = new ReactiveObject();
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs
index 90bdc3409..5eb652868 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs
+++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs
@@ -124,6 +124,7 @@ namespace Ryujinx.UI.Common.Configuration
ApplicationSort = UI.ApplicationSort,
IsAscendingOrder = UI.IsAscendingOrder,
StartFullscreen = UI.StartFullscreen,
+ StartNoUI = UI.StartNoUI,
ShowConsole = UI.ShowConsole,
EnableKeyboard = Hid.EnableKeyboard,
EnableMouse = Hid.EnableMouse,
@@ -230,6 +231,7 @@ namespace Ryujinx.UI.Common.Configuration
UI.ApplicationSort.Value = 0;
UI.IsAscendingOrder.Value = true;
UI.StartFullscreen.Value = false;
+ UI.StartNoUI.Value = false;
UI.ShowConsole.Value = true;
UI.WindowStartup.WindowSizeWidth.Value = 1280;
UI.WindowStartup.WindowSizeHeight.Value = 760;
diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs
index f976ecdf1..fad362ab5 100644
--- a/src/Ryujinx/AppHost.cs
+++ b/src/Ryujinx/AppHost.cs
@@ -1049,6 +1049,14 @@ namespace Ryujinx.Ava
}
});
+ Dispatcher.UIThread.InvokeAsync(() =>
+ {
+ if (_viewModel.StartGamesWithoutUI)
+ {
+ _viewModel.ShowMenuAndStatusBar = false;
+ }
+ });
+
_renderer = Device.Gpu.Renderer is ThreadedRenderer tr ? tr.BaseRenderer : Device.Gpu.Renderer;
_renderer.ScreenCaptured += Renderer_ScreenCaptured;
diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json
index cdf43f474..7c6559955 100644
--- a/src/Ryujinx/Assets/locales.json
+++ b/src/Ryujinx/Assets/locales.json
@@ -549,6 +549,30 @@
"zh_TW": "使用全螢幕模式啟動遊戲"
}
},
+ {
+ "ID": "MenuBarOptionsStartGamesWithoutUI",
+ "Translations": {
+ "ar_SA": "",
+ "de_DE": "",
+ "el_GR": "",
+ "en_US": "Start Games with UI Hidden",
+ "es_ES": "",
+ "fr_FR": "",
+ "he_IL": "",
+ "it_IT": "",
+ "ja_JP": "",
+ "ko_KR": "",
+ "no_NO": "",
+ "pl_PL": "",
+ "pt_BR": "",
+ "ru_RU": "",
+ "th_TH": "",
+ "tr_TR": "",
+ "uk_UA": "",
+ "zh_CN": "",
+ "zh_TW": ""
+ }
+ },
{
"ID": "MenuBarOptionsStopEmulation",
"Translations": {
diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
index d0ea64c37..c01174e15 100644
--- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
@@ -853,6 +853,19 @@ namespace Ryujinx.Ava.UI.ViewModels
}
}
+ public bool StartGamesWithoutUI
+ {
+ get => ConfigurationState.Instance.UI.StartNoUI;
+ set
+ {
+ ConfigurationState.Instance.UI.StartNoUI.Value = value;
+
+ ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
+
+ OnPropertyChanged();
+ }
+ }
+
public bool ShowConsole
{
get => ConfigurationState.Instance.UI.ShowConsole;
@@ -1590,6 +1603,11 @@ namespace Ryujinx.Ava.UI.ViewModels
StartGamesInFullscreen = !StartGamesInFullscreen;
}
+ public void ToggleStartGamesWithoutUI()
+ {
+ StartGamesWithoutUI = !StartGamesWithoutUI;
+ }
+
public void ToggleShowConsole()
{
ShowConsole = !ShowConsole;
diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml
index 2c07bd8ef..b665c5762 100644
--- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml
+++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml
@@ -119,6 +119,29 @@
+