diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs index 1de762f03..2b7606758 100644 --- a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs +++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs @@ -16,7 +16,7 @@ namespace Ryujinx.UI.Common.Configuration /// /// The current version of the file format /// - public const int CurrentVersion = 56; + public const int CurrentVersion = 57; /// /// Version of the configuration file format @@ -355,6 +355,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.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs index de8b68ace..c8846451b 100644 --- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs +++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs @@ -165,6 +165,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 /// @@ -207,6 +212,7 @@ namespace Ryujinx.UI.Common.Configuration CustomThemePath = new ReactiveObject(); BaseStyle = new ReactiveObject(); StartFullscreen = new ReactiveObject(); + StartNoUI = new ReactiveObject(); GameListViewMode = new ReactiveObject(); ShowNames = new ReactiveObject(); GridSize = new ReactiveObject(); @@ -818,6 +824,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, @@ -1615,6 +1622,15 @@ namespace Ryujinx.UI.Common.Configuration configurationFileUpdated = true; } + if (configurationFileFormat.Version < 57) + { + Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 55."); + + configurationFileFormat.StartNoUI = false; + + configurationFileUpdated = true; + } + Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog; Graphics.ResScale.Value = configurationFileFormat.ResScale; Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom; @@ -1697,6 +1713,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/AppHost.cs b/src/Ryujinx/AppHost.cs index 1bb32c8be..c357e1682 100644 --- a/src/Ryujinx/AppHost.cs +++ b/src/Ryujinx/AppHost.cs @@ -1031,7 +1031,7 @@ namespace Ryujinx.Ava _viewModel.WindowState = WindowState.FullScreen; } - if (_viewModel.WindowState == WindowState.FullScreen) + if (_viewModel.WindowState == WindowState.FullScreen || _viewModel.StartGamesWithoutUI) { _viewModel.ShowMenuAndStatusBar = false; } diff --git a/src/Ryujinx/Assets/Locales/en_US.json b/src/Ryujinx/Assets/Locales/en_US.json index 388c22506..0edfe3139 100644 --- a/src/Ryujinx/Assets/Locales/en_US.json +++ b/src/Ryujinx/Assets/Locales/en_US.json @@ -20,6 +20,7 @@ "MenuBarOptions": "_Options", "MenuBarOptionsToggleFullscreen": "Toggle Fullscreen", "MenuBarOptionsStartGamesInFullscreen": "Start Games in Fullscreen Mode", + "MenuBarOptionsStartGamesWithoutUI": "Start Games with UI Hidden", "MenuBarOptionsStopEmulation": "Stop Emulation", "MenuBarOptionsSettings": "_Settings", "MenuBarOptionsManageUserProfiles": "_Manage User Profiles", diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs index 1dfd304b6..a07a3e80f 100644 --- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs @@ -922,6 +922,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; @@ -1649,6 +1662,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 dba633873..4ec13b273 100644 --- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml +++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml @@ -94,6 +94,29 @@ + + + + + + + + +