From 772233d003ba9950adb35a27bcb85d2e8c30e2b7 Mon Sep 17 00:00:00 2001 From: asfasagag Date: Tue, 21 Jan 2025 15:36:51 -0800 Subject: [PATCH] UI: Option to automatically Hide UI when game launches Quality of life feature Similar in function to the "Start Games in Fullscreen" toggle For users who want to run games in windowed/non-fullscreen mode with menu UI hidden, this eliminates the need to always click "Hide UI" --- .../Configuration/ConfigurationFileFormat.cs | 7 +++++- .../Configuration/ConfigurationState.cs | 17 ++++++++++++++ src/Ryujinx/AppHost.cs | 2 +- src/Ryujinx/Assets/Locales/en_US.json | 1 + .../UI/ViewModels/MainWindowViewModel.cs | 18 +++++++++++++++ .../UI/Views/Main/MainMenuBarView.axaml | 23 +++++++++++++++++++ 6 files changed, 66 insertions(+), 2 deletions(-) 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 @@ + + + + + + + + +