diff --git a/Ryujinx.sln b/Ryujinx.sln
index 87c1021c1..373572178 100644
--- a/Ryujinx.sln
+++ b/Ryujinx.sln
@@ -61,8 +61,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec.FFmp
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx", "src\Ryujinx\Ryujinx.csproj", "{7C1B2721-13DA-4B62-B046-C626605ECCE6}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.UI.Common", "src\Ryujinx.UI.Common\Ryujinx.UI.Common.csproj", "{BA161CA0-CD65-4E6E-B644-51C8D1E542DC}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Generators", "src\Ryujinx.Horizon.Generators\Ryujinx.Horizon.Generators.csproj", "{6AE2A5E8-4C5A-48B9-997B-E1455C0355C6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Vulkan", "src\Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj", "{D4D09B08-D580-4D69-B886-C35D2853F6C8}"
@@ -219,10 +217,6 @@ Global
{7C1B2721-13DA-4B62-B046-C626605ECCE6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C1B2721-13DA-4B62-B046-C626605ECCE6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C1B2721-13DA-4B62-B046-C626605ECCE6}.Release|Any CPU.Build.0 = Release|Any CPU
- {BA161CA0-CD65-4E6E-B644-51C8D1E542DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BA161CA0-CD65-4E6E-B644-51C8D1E542DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BA161CA0-CD65-4E6E-B644-51C8D1E542DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BA161CA0-CD65-4E6E-B644-51C8D1E542DC}.Release|Any CPU.Build.0 = Release|Any CPU
{6AE2A5E8-4C5A-48B9-997B-E1455C0355C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6AE2A5E8-4C5A-48B9-997B-E1455C0355C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6AE2A5E8-4C5A-48B9-997B-E1455C0355C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/src/Ryujinx.Common/Helpers/ConsoleHelper.cs b/src/Ryujinx.Common/Helpers/ConsoleHelper.cs
index 99b209c6e..105c9881e 100644
--- a/src/Ryujinx.Common/Helpers/ConsoleHelper.cs
+++ b/src/Ryujinx.Common/Helpers/ConsoleHelper.cs
@@ -3,7 +3,7 @@ using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
-namespace Ryujinx.UI.Common.Helper
+namespace Ryujinx.Common.Helper
{
public static partial class ConsoleHelper
{
diff --git a/src/Ryujinx.Common/Helpers/FileAssociationHelper.cs b/src/Ryujinx.Common/Helpers/FileAssociationHelper.cs
index b1463989d..476aee228 100644
--- a/src/Ryujinx.Common/Helpers/FileAssociationHelper.cs
+++ b/src/Ryujinx.Common/Helpers/FileAssociationHelper.cs
@@ -8,7 +8,7 @@ using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
-namespace Ryujinx.UI.Common.Helper
+namespace Ryujinx.Common.Helper
{
public static partial class FileAssociationHelper
{
diff --git a/src/Ryujinx.Common/Helpers/LinuxHelper.cs b/src/Ryujinx.Common/Helpers/LinuxHelper.cs
index b57793791..2adfd20f8 100644
--- a/src/Ryujinx.Common/Helpers/LinuxHelper.cs
+++ b/src/Ryujinx.Common/Helpers/LinuxHelper.cs
@@ -3,7 +3,7 @@ using System.Diagnostics;
using System.IO;
using System.Runtime.Versioning;
-namespace Ryujinx.UI.Common.Helper
+namespace Ryujinx.Common.Helper
{
[SupportedOSPlatform("linux")]
public static class LinuxHelper
diff --git a/src/Ryujinx.Common/Helpers/ObjectiveC.cs b/src/Ryujinx.Common/Helpers/ObjectiveC.cs
index f8f972098..d8e02f54d 100644
--- a/src/Ryujinx.Common/Helpers/ObjectiveC.cs
+++ b/src/Ryujinx.Common/Helpers/ObjectiveC.cs
@@ -2,7 +2,7 @@ using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
-namespace Ryujinx.UI.Common.Helper
+namespace Ryujinx.Common.Helper
{
[SupportedOSPlatform("macos")]
public static partial class ObjectiveC
diff --git a/src/Ryujinx.Common/Helpers/OpenHelper.cs b/src/Ryujinx.Common/Helpers/OpenHelper.cs
index bf398a355..6a54b69f3 100644
--- a/src/Ryujinx.Common/Helpers/OpenHelper.cs
+++ b/src/Ryujinx.Common/Helpers/OpenHelper.cs
@@ -5,7 +5,7 @@ using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
-namespace Ryujinx.UI.Common.Helper
+namespace Ryujinx.Common.Helper
{
public static partial class OpenHelper
{
diff --git a/src/Ryujinx.UI.Common/Configuration/FileTypes.cs b/src/Ryujinx.UI.Common/Configuration/FileTypes.cs
deleted file mode 100644
index 1974207b6..000000000
--- a/src/Ryujinx.UI.Common/Configuration/FileTypes.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Ryujinx.UI.Common
-{
- public enum FileTypes
- {
- NSP,
- PFS0,
- XCI,
- NCA,
- NRO,
- NSO
- }
-}
diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs
index f3fcbf5aa..cff6a44a5 100644
--- a/src/Ryujinx/AppHost.cs
+++ b/src/Ryujinx/AppHost.cs
@@ -22,6 +22,7 @@ using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
@@ -42,9 +43,6 @@ using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.HLE.HOS.SystemState;
using Ryujinx.Input;
using Ryujinx.Input.HLE;
-using Ryujinx.UI.Common;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using Silk.NET.Vulkan;
using SkiaSharp;
using SPB.Graphics.Vulkan;
diff --git a/src/Ryujinx/Common/ApplicationHelper.cs b/src/Ryujinx/Common/ApplicationHelper.cs
index 1c6b53dee..7db933ed6 100644
--- a/src/Ryujinx/Common/ApplicationHelper.cs
+++ b/src/Ryujinx/Common/ApplicationHelper.cs
@@ -15,12 +15,12 @@ using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
+using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Common.Helper;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.HLE.Loaders.Processes.Extensions;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using System;
using System.Buffers;
using System.IO;
diff --git a/src/Ryujinx/Common/LocaleManager.cs b/src/Ryujinx/Common/LocaleManager.cs
index 70b04ec95..9422cf7fb 100644
--- a/src/Ryujinx/Common/LocaleManager.cs
+++ b/src/Ryujinx/Common/LocaleManager.cs
@@ -1,8 +1,8 @@
using Gommon;
using Ryujinx.Ava.UI.ViewModels;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Utilities;
-using Ryujinx.UI.Common.Configuration;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
diff --git a/src/Ryujinx/DiscordIntegrationModule.cs b/src/Ryujinx/DiscordIntegrationModule.cs
index f13b34ec8..ee00f2c0d 100644
--- a/src/Ryujinx/DiscordIntegrationModule.cs
+++ b/src/Ryujinx/DiscordIntegrationModule.cs
@@ -2,10 +2,10 @@ using DiscordRPC;
using Humanizer;
using Humanizer.Localisation;
using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.HLE;
using Ryujinx.HLE.Loaders.Processes;
-using Ryujinx.UI.Common.Configuration;
using System.Text;
namespace Ryujinx.Ava
diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs b/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs
index ba84e53a5..19d2fb94e 100644
--- a/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs
+++ b/src/Ryujinx/Headless/HeadlessRyujinx.Init.cs
@@ -2,6 +2,7 @@
using LibHac.Tools.FsSystem;
using Ryujinx.Audio.Backends.SDL2;
using Ryujinx.Ava;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Controller;
@@ -16,8 +17,6 @@ using Ryujinx.Graphics.OpenGL;
using Ryujinx.Graphics.Vulkan;
using Ryujinx.HLE;
using Ryujinx.Input;
-using Ryujinx.UI.Common;
-using Ryujinx.UI.Common.Configuration;
using Silk.NET.Vulkan;
using System;
using System.IO;
diff --git a/src/Ryujinx/Headless/HeadlessRyujinx.cs b/src/Ryujinx/Headless/HeadlessRyujinx.cs
index eabe72cbe..3d99fb902 100644
--- a/src/Ryujinx/Headless/HeadlessRyujinx.cs
+++ b/src/Ryujinx/Headless/HeadlessRyujinx.cs
@@ -1,6 +1,7 @@
using CommandLine;
using Gommon;
using Ryujinx.Ava;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
@@ -25,7 +26,6 @@ using Ryujinx.Input;
using Ryujinx.Input.HLE;
using Ryujinx.Input.SDL2;
using Ryujinx.SDL2.Common;
-using Ryujinx.UI.Common.Configuration;
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Ryujinx/Headless/Options.cs b/src/Ryujinx/Headless/Options.cs
index b0a349a2b..c0def95c1 100644
--- a/src/Ryujinx/Headless/Options.cs
+++ b/src/Ryujinx/Headless/Options.cs
@@ -1,11 +1,11 @@
using CommandLine;
using Gommon;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.HLE;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.HLE.HOS.SystemState;
-using Ryujinx.UI.Common.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs
index 76ed0b076..6f0f3e12e 100644
--- a/src/Ryujinx/Program.cs
+++ b/src/Ryujinx/Program.cs
@@ -8,7 +8,9 @@ using Projektanker.Icons.Avalonia.MaterialDesign;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Ava.Utilities;
using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Ava.Utilities.SystemInfo;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
@@ -18,9 +20,6 @@ using Ryujinx.Common.SystemInterop;
using Ryujinx.Graphics.Vulkan.MoltenVK;
using Ryujinx.Headless;
using Ryujinx.SDL2.Common;
-using Ryujinx.UI.Common;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using System;
using System.IO;
using System.Linq;
@@ -117,9 +116,6 @@ namespace Ryujinx.Ava
// Setup base data directory.
AppDataManager.Initialize(CommandLineState.BaseDirPathArg);
- // Set the delegate for localizing the word "never" in the UI
- ApplicationData.LocalizedNever = () => LocaleManager.Instance[LocaleKeys.Never];
-
// Initialize the configuration.
ConfigurationState.Initialize();
diff --git a/src/Ryujinx/Ryujinx.csproj b/src/Ryujinx/Ryujinx.csproj
index 3ddd807e6..9d23b0909 100644
--- a/src/Ryujinx/Ryujinx.csproj
+++ b/src/Ryujinx/Ryujinx.csproj
@@ -48,6 +48,7 @@
+
@@ -57,6 +58,7 @@
+
@@ -77,7 +79,6 @@
-
diff --git a/src/Ryujinx/RyujinxApp.axaml.cs b/src/Ryujinx/RyujinxApp.axaml.cs
index bbef20aa0..d950af3a9 100644
--- a/src/Ryujinx/RyujinxApp.axaml.cs
+++ b/src/Ryujinx/RyujinxApp.axaml.cs
@@ -11,10 +11,10 @@ using Ryujinx.Ava.Common;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Ava.Utilities;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Logging;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using System;
using System.Diagnostics;
diff --git a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs
index 893ea95ac..65f4c7795 100644
--- a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs
+++ b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs
@@ -5,12 +5,12 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.HLE;
using Ryujinx.HLE.HOS.Applets;
using Ryujinx.HLE.HOS.Applets.SoftwareKeyboard;
using Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types;
using Ryujinx.HLE.UI;
-using Ryujinx.UI.Common.Configuration;
using System;
using System.Threading;
diff --git a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
index 4f998b040..354e1c7e6 100644
--- a/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
+++ b/src/Ryujinx/UI/Controls/ApplicationContextMenu.axaml.cs
@@ -13,8 +13,8 @@ using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
using Ryujinx.Ava.Utilities.AppLibrary;
using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Helper;
using Ryujinx.HLE.HOS;
-using Ryujinx.UI.Common.Helper;
using SkiaSharp;
using System;
using System.Collections.Generic;
diff --git a/src/Ryujinx/UI/Helpers/MultiplayerInfoConverter.cs b/src/Ryujinx/UI/Helpers/MultiplayerInfoConverter.cs
index 4135fd4c7..09a2ad367 100644
--- a/src/Ryujinx/UI/Helpers/MultiplayerInfoConverter.cs
+++ b/src/Ryujinx/UI/Helpers/MultiplayerInfoConverter.cs
@@ -2,7 +2,6 @@ using Avalonia.Data.Converters;
using Avalonia.Markup.Xaml;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.UI.Common.Helper;
using System;
using System.Globalization;
diff --git a/src/Ryujinx/UI/Helpers/UserErrorDialog.cs b/src/Ryujinx/UI/Helpers/UserErrorDialog.cs
index 3864be0fa..c30fb4348 100644
--- a/src/Ryujinx/UI/Helpers/UserErrorDialog.cs
+++ b/src/Ryujinx/UI/Helpers/UserErrorDialog.cs
@@ -1,6 +1,5 @@
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Common.UI;
-using Ryujinx.UI.Common;
using System.Threading.Tasks;
namespace Ryujinx.Ava.UI.Helpers
diff --git a/src/Ryujinx/UI/Models/SaveModel.cs b/src/Ryujinx/UI/Models/SaveModel.cs
index 8364e1966..3dc009b2a 100644
--- a/src/Ryujinx/UI/Models/SaveModel.cs
+++ b/src/Ryujinx/UI/Models/SaveModel.cs
@@ -3,9 +3,9 @@ using LibHac.Fs;
using LibHac.Ncm;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Ava.Utilities;
using Ryujinx.Ava.Utilities.AppLibrary;
using Ryujinx.HLE.FileSystem;
-using Ryujinx.UI.Common.Helper;
using System;
using System.IO;
using System.Linq;
diff --git a/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs b/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs
index ea5a8dbdd..eea9be283 100644
--- a/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs
+++ b/src/Ryujinx/UI/Renderer/EmbeddedWindow.cs
@@ -2,9 +2,9 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Platform;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common.Configuration;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
+using Ryujinx.Common.Helper;
using SPB.Graphics;
using SPB.Platform;
using SPB.Platform.GLX;
diff --git a/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs b/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs
index 3842301de..4f59e2400 100644
--- a/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs
+++ b/src/Ryujinx/UI/Renderer/EmbeddedWindowOpenGL.cs
@@ -1,9 +1,9 @@
using OpenTK.Graphics.OpenGL;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.OpenGL;
-using Ryujinx.UI.Common.Configuration;
using SPB.Graphics;
using SPB.Graphics.Exceptions;
using SPB.Graphics.OpenGL;
diff --git a/src/Ryujinx/UI/Renderer/RendererHost.axaml.cs b/src/Ryujinx/UI/Renderer/RendererHost.axaml.cs
index 71c0e1432..fa9aec0c5 100644
--- a/src/Ryujinx/UI/Renderer/RendererHost.axaml.cs
+++ b/src/Ryujinx/UI/Renderer/RendererHost.axaml.cs
@@ -1,10 +1,10 @@
using Avalonia;
using Avalonia.Controls;
using Gommon;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
-using Ryujinx.UI.Common.Configuration;
using System;
using System.Runtime.InteropServices;
diff --git a/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
index 0f8a5a7d7..6bc1e1f03 100644
--- a/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs
@@ -3,7 +3,7 @@ using Avalonia.Styling;
using Avalonia.Threading;
using Ryujinx.Ava.Common;
using Ryujinx.Ava.Common.Locale;
-using Ryujinx.UI.Common.Configuration;
+using Ryujinx.Ava.Utilities.Configuration;
using System;
namespace Ryujinx.Ava.UI.ViewModels
diff --git a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs
index 79daab701..74b8681d5 100644
--- a/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs
@@ -10,6 +10,7 @@ using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Models;
using Ryujinx.Ava.UI.Models.Input;
using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
@@ -19,7 +20,6 @@ using Ryujinx.Common.Configuration.Hid.Keyboard;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
using Ryujinx.Input;
-using Ryujinx.UI.Common.Configuration;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
index 3bc100ba3..332009149 100644
--- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
@@ -22,8 +22,10 @@ using Ryujinx.Ava.UI.Models.Generic;
using Ryujinx.Ava.UI.Renderer;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
+using Ryujinx.Common.Helper;
using Ryujinx.Common.Logging;
using Ryujinx.Common.UI;
using Ryujinx.Common.Utilities;
@@ -35,9 +37,6 @@ using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.HLE.HOS.Services.Nfc.AmiiboDecryption;
using Ryujinx.HLE.UI;
using Ryujinx.Input.HLE;
-using Ryujinx.UI.Common;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using Silk.NET.Vulkan;
using SkiaSharp;
using System;
diff --git a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs
index ecd2d40dd..1f239d3ce 100644
--- a/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs
@@ -10,6 +10,8 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Models.Input;
using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Utilities.Configuration.System;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Common.GraphicsDriver;
@@ -18,8 +20,6 @@ using Ryujinx.Graphics.Vulkan;
using Ryujinx.HLE;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.Services.Time.TimeZone;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Configuration.System;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs
index 1f8617ad7..be444faa4 100644
--- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml.cs
@@ -8,12 +8,11 @@ using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Ava.Utilities;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
+using Ryujinx.Common.Helper;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.HOS.Services.Nfc.AmiiboDecryption;
-using Ryujinx.UI.Common;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs
index 297e86c67..b234f7859 100644
--- a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml.cs
@@ -5,10 +5,10 @@ using Avalonia.Interactivity;
using Avalonia.Threading;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Windows;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
-using Ryujinx.UI.Common.Configuration;
using System;
namespace Ryujinx.Ava.UI.Views.Main
diff --git a/src/Ryujinx/UI/Views/Settings/SettingsHacksView.axaml.cs b/src/Ryujinx/UI/Views/Settings/SettingsHacksView.axaml.cs
index f9e0958ca..915acedeb 100644
--- a/src/Ryujinx/UI/Views/Settings/SettingsHacksView.axaml.cs
+++ b/src/Ryujinx/UI/Views/Settings/SettingsHacksView.axaml.cs
@@ -1,7 +1,6 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.UI.Common.Configuration;
namespace Ryujinx.Ava.UI.Views.Settings
{
diff --git a/src/Ryujinx/UI/Windows/AboutWindow.axaml.cs b/src/Ryujinx/UI/Windows/AboutWindow.axaml.cs
index a901295cf..b9736b81d 100644
--- a/src/Ryujinx/UI/Windows/AboutWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/AboutWindow.axaml.cs
@@ -8,7 +8,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Common;
-using Ryujinx.UI.Common.Helper;
+using Ryujinx.Common.Helper;
using System.Threading.Tasks;
using Button = Avalonia.Controls.Button;
diff --git a/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs b/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs
index f5795d42c..c770a6f45 100644
--- a/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/CheatWindow.axaml.cs
@@ -3,9 +3,9 @@ using LibHac.Tools.FsSystem;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Models;
using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS;
-using Ryujinx.UI.Common.Configuration;
using System.Globalization;
using System.IO;
using System.Linq;
diff --git a/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs b/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs
index 02f420752..335676aef 100644
--- a/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/DownloadableContentManagerWindow.axaml.cs
@@ -6,7 +6,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.UI.Common.Helper;
+using Ryujinx.Common.Helper;
using System.Threading.Tasks;
namespace Ryujinx.Ava.UI.Windows
diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
index f0aaf4cac..0b1c356d4 100644
--- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
@@ -15,8 +15,11 @@ using Ryujinx.Ava.Input;
using Ryujinx.Ava.UI.Applet;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
+using Ryujinx.Ava.Utilities;
using Ryujinx.Ava.Utilities.AppLibrary;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common;
+using Ryujinx.Common.Helper;
using Ryujinx.Common.Logging;
using Ryujinx.Common.UI;
using Ryujinx.Graphics.Gpu;
@@ -25,9 +28,6 @@ using Ryujinx.HLE.HOS;
using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.Input.HLE;
using Ryujinx.Input.SDL2;
-using Ryujinx.UI.Common;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs b/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs
index 774446cf1..449aab554 100644
--- a/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/ModManagerWindow.axaml.cs
@@ -6,7 +6,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Models;
using Ryujinx.Ava.UI.ViewModels;
-using Ryujinx.UI.Common.Helper;
+using Ryujinx.Common.Helper;
using System.Threading.Tasks;
using Button = Avalonia.Controls.Button;
diff --git a/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs b/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs
index 421990bcd..b7c421c96 100644
--- a/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs
+++ b/src/Ryujinx/UI/Windows/TitleUpdateWindow.axaml.cs
@@ -6,7 +6,7 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.Utilities.AppLibrary;
-using Ryujinx.UI.Common.Helper;
+using Ryujinx.Common.Helper;
using System.Threading.Tasks;
namespace Ryujinx.Ava.UI.Windows
diff --git a/src/Ryujinx/Updater.cs b/src/Ryujinx/Updater.cs
index 377acbbdf..3e3989c66 100644
--- a/src/Ryujinx/Updater.cs
+++ b/src/Ryujinx/Updater.cs
@@ -7,10 +7,11 @@ using ICSharpCode.SharpZipLib.Zip;
using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.Common.Models.Github;
using Ryujinx.Ava.UI.Helpers;
+using Ryujinx.Ava.Utilities;
using Ryujinx.Common;
+using Ryujinx.Common.Helper;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
-using Ryujinx.UI.Common.Helper;
using System;
using System.Collections.Generic;
using System.Diagnostics;
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs b/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs
index de91c98a5..c87486232 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs
+++ b/src/Ryujinx/Utilities/AppLibrary/ApplicationData.cs
@@ -10,7 +10,6 @@ using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.Loaders.Processes.Extensions;
-using Ryujinx.UI.Common.Helper;
using System;
using System.IO;
using System.Text.Json.Serialization;
@@ -19,8 +18,6 @@ namespace Ryujinx.Ava.Utilities.AppLibrary
{
public class ApplicationData
{
- public static Func LocalizedNever { get; set; } = () => "Never";
-
public bool Favorite { get; set; }
public byte[] Icon { get; set; }
public string Name { get; set; } = "Unknown";
@@ -40,7 +37,7 @@ namespace Ryujinx.Ava.Utilities.AppLibrary
public string TimePlayedString => ValueFormatUtils.FormatTimeSpan(TimePlayed);
- public string LastPlayedString => ValueFormatUtils.FormatDateTime(LastPlayed)?.Replace(" ", "\n") ?? LocalizedNever();
+ public string LastPlayedString => ValueFormatUtils.FormatDateTime(LastPlayed)?.Replace(" ", "\n");
public string FileSizeString => ValueFormatUtils.FormatFileSize(FileSize);
diff --git a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs b/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
index 94f2e7fc7..ef2e835ae 100644
--- a/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
+++ b/src/Ryujinx/Utilities/AppLibrary/ApplicationLibrary.cs
@@ -11,6 +11,8 @@ using LibHac.Tools.Fs;
using LibHac.Tools.FsSystem;
using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Models;
+using Ryujinx.Ava.Utilities.Configuration;
+using Ryujinx.Ava.Utilities.Configuration.System;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
@@ -21,8 +23,6 @@ using Ryujinx.HLE.HOS.SystemState;
using Ryujinx.HLE.Loaders.Npdm;
using Ryujinx.HLE.Loaders.Processes.Extensions;
using Ryujinx.HLE.Utilities;
-using Ryujinx.UI.Common.Configuration;
-using Ryujinx.UI.Common.Configuration.System;
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Ryujinx.Common/Helpers/CommandLineState.cs b/src/Ryujinx/Utilities/CommandLineState.cs
similarity index 99%
rename from src/Ryujinx.Common/Helpers/CommandLineState.cs
rename to src/Ryujinx/Utilities/CommandLineState.cs
index 3a96a55c8..6fb8e92d6 100644
--- a/src/Ryujinx.Common/Helpers/CommandLineState.cs
+++ b/src/Ryujinx/Utilities/CommandLineState.cs
@@ -1,7 +1,7 @@
using Ryujinx.Common.Logging;
using System.Collections.Generic;
-namespace Ryujinx.UI.Common.Helper
+namespace Ryujinx.Ava.Utilities
{
public static class CommandLineState
{
diff --git a/src/Ryujinx.UI.Common/Configuration/AudioBackend.cs b/src/Ryujinx/Utilities/Configuration/AudioBackend.cs
similarity index 84%
rename from src/Ryujinx.UI.Common/Configuration/AudioBackend.cs
rename to src/Ryujinx/Utilities/Configuration/AudioBackend.cs
index a952e7ac0..8394bb282 100644
--- a/src/Ryujinx.UI.Common/Configuration/AudioBackend.cs
+++ b/src/Ryujinx/Utilities/Configuration/AudioBackend.cs
@@ -1,7 +1,7 @@
using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
[JsonConverter(typeof(TypedStringEnumConverter))]
public enum AudioBackend
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs
similarity index 99%
rename from src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs
rename to src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs
index 8b123be01..c964ed76d 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs
+++ b/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormat.cs
@@ -1,3 +1,5 @@
+using Ryujinx.Ava.Utilities.Configuration.System;
+using Ryujinx.Ava.Utilities.Configuration.UI;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
@@ -5,12 +7,10 @@ using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE;
-using Ryujinx.UI.Common.Configuration.System;
-using Ryujinx.UI.Common.Configuration.UI;
using System.Collections.Generic;
using System.Text.Json.Nodes;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
public class ConfigurationFileFormat
{
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormatSettings.cs b/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs
similarity index 83%
rename from src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormatSettings.cs
rename to src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs
index 9861ebf1f..175d4dee8 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormatSettings.cs
+++ b/src/Ryujinx/Utilities/Configuration/ConfigurationFileFormatSettings.cs
@@ -1,6 +1,6 @@
using Ryujinx.Common.Utilities;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
internal static class ConfigurationFileFormatSettings
{
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationJsonSerializerContext.cs b/src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs
similarity index 74%
rename from src/Ryujinx.UI.Common/Configuration/ConfigurationJsonSerializerContext.cs
rename to src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs
index 3c3e3f20d..a81e00f4a 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationJsonSerializerContext.cs
+++ b/src/Ryujinx/Utilities/Configuration/ConfigurationJsonSerializerContext.cs
@@ -1,10 +1,8 @@
using System.Text.Json.Serialization;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(ConfigurationFileFormat))]
- internal partial class ConfigurationJsonSerializerContext : JsonSerializerContext
- {
- }
+ internal partial class ConfigurationJsonSerializerContext : JsonSerializerContext;
}
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Migration.cs b/src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs
similarity index 99%
rename from src/Ryujinx.UI.Common/Configuration/ConfigurationState.Migration.cs
rename to src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs
index 8652b4331..8cfb9d53a 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Migration.cs
+++ b/src/Ryujinx/Utilities/Configuration/ConfigurationState.Migration.cs
@@ -1,3 +1,5 @@
+using Ryujinx.Ava.Utilities.Configuration.System;
+using Ryujinx.Ava.Utilities.Configuration.UI;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Controller;
@@ -5,12 +7,10 @@ using Ryujinx.Common.Configuration.Hid.Keyboard;
using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Common.Logging;
using Ryujinx.HLE;
-using Ryujinx.UI.Common.Configuration.System;
-using Ryujinx.UI.Common.Configuration.UI;
using System;
using System.Collections.Generic;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
public partial class ConfigurationState
{
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Model.cs b/src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs
similarity index 99%
rename from src/Ryujinx.UI.Common/Configuration/ConfigurationState.Model.cs
rename to src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs
index 2ae56d50a..c27b3f0e3 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.Model.cs
+++ b/src/Ryujinx/Utilities/Configuration/ConfigurationState.Model.cs
@@ -1,16 +1,16 @@
using ARMeilleure;
using Gommon;
+using Ryujinx.Ava.Utilities.Configuration.System;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Multiplayer;
+using Ryujinx.Common.Helper;
using Ryujinx.Common.Logging;
using Ryujinx.HLE;
-using Ryujinx.UI.Common.Configuration.System;
-using Ryujinx.UI.Common.Helper;
using System.Collections.Generic;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
public partial class ConfigurationState
{
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs b/src/Ryujinx/Utilities/Configuration/ConfigurationState.cs
similarity index 99%
rename from src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs
rename to src/Ryujinx/Utilities/Configuration/ConfigurationState.cs
index 8ae76ecc5..01534bec8 100644
--- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs
+++ b/src/Ryujinx/Utilities/Configuration/ConfigurationState.cs
@@ -1,14 +1,14 @@
+using Ryujinx.Ava.Utilities.Configuration.System;
+using Ryujinx.Ava.Utilities.Configuration.UI;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Hid.Keyboard;
using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Graphics.Vulkan;
using Ryujinx.HLE;
-using Ryujinx.UI.Common.Configuration.System;
-using Ryujinx.UI.Common.Configuration.UI;
using System;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
public partial class ConfigurationState
{
diff --git a/src/Ryujinx.UI.Common/Extensions/FileTypeExtensions.cs b/src/Ryujinx/Utilities/Configuration/FileTypes.cs
similarity index 73%
rename from src/Ryujinx.UI.Common/Extensions/FileTypeExtensions.cs
rename to src/Ryujinx/Utilities/Configuration/FileTypes.cs
index 7e71ba7a4..c4550b5a6 100644
--- a/src/Ryujinx.UI.Common/Extensions/FileTypeExtensions.cs
+++ b/src/Ryujinx/Utilities/Configuration/FileTypes.cs
@@ -1,8 +1,19 @@
using System;
-using static Ryujinx.UI.Common.Configuration.ConfigurationState.UISection;
-namespace Ryujinx.UI.Common
+using static Ryujinx.Ava.Utilities.Configuration.ConfigurationState.UISection;
+
+namespace Ryujinx.Ava.Utilities.Configuration
{
+ public enum FileTypes
+ {
+ NSP,
+ PFS0,
+ XCI,
+ NCA,
+ NRO,
+ NSO
+ }
+
public static class FileTypesExtensions
{
///
@@ -10,7 +21,7 @@ namespace Ryujinx.UI.Common
///
/// The name of the parameter to get the value of.
/// The config instance to get the value from.
- /// The current value of the setting. Value is if the file type is the be shown on the games list, otherwise.
+ /// The current value of the setting. Value is if the file type is to be shown on the games list, otherwise.
public static bool GetConfigValue(this FileTypes type, ShownFileTypeSettings config) => type switch
{
FileTypes.NSP => config.NSP.Value,
diff --git a/src/Ryujinx.UI.Common/Configuration/LoggerModule.cs b/src/Ryujinx/Utilities/Configuration/LoggerModule.cs
similarity index 98%
rename from src/Ryujinx.UI.Common/Configuration/LoggerModule.cs
rename to src/Ryujinx/Utilities/Configuration/LoggerModule.cs
index a7913f142..663ad607f 100644
--- a/src/Ryujinx.UI.Common/Configuration/LoggerModule.cs
+++ b/src/Ryujinx/Utilities/Configuration/LoggerModule.cs
@@ -4,7 +4,7 @@ using Ryujinx.Common.Logging.Targets;
using System;
using System.IO;
-namespace Ryujinx.UI.Common.Configuration
+namespace Ryujinx.Ava.Utilities.Configuration
{
public static class LoggerModule
{
diff --git a/src/Ryujinx.UI.Common/Configuration/System/Language.cs b/src/Ryujinx/Utilities/Configuration/System/Language.cs
similarity index 86%
rename from src/Ryujinx.UI.Common/Configuration/System/Language.cs
rename to src/Ryujinx/Utilities/Configuration/System/Language.cs
index 8ca4e542b..81a9bd192 100644
--- a/src/Ryujinx.UI.Common/Configuration/System/Language.cs
+++ b/src/Ryujinx/Utilities/Configuration/System/Language.cs
@@ -1,8 +1,7 @@
using Ryujinx.Common.Utilities;
-using Ryujinx.HLE.HOS.SystemState;
using System.Text.Json.Serialization;
-namespace Ryujinx.UI.Common.Configuration.System
+namespace Ryujinx.Ava.Utilities.Configuration.System
{
[JsonConverter(typeof(TypedStringEnumConverter))]
public enum Language
diff --git a/src/Ryujinx.UI.Common/Configuration/System/Region.cs b/src/Ryujinx/Utilities/Configuration/System/Region.cs
similarity index 84%
rename from src/Ryujinx.UI.Common/Configuration/System/Region.cs
rename to src/Ryujinx/Utilities/Configuration/System/Region.cs
index 6087c70e5..ff3352e6a 100644
--- a/src/Ryujinx.UI.Common/Configuration/System/Region.cs
+++ b/src/Ryujinx/Utilities/Configuration/System/Region.cs
@@ -1,7 +1,7 @@
using Ryujinx.Common.Utilities;
using System.Text.Json.Serialization;
-namespace Ryujinx.UI.Common.Configuration.System
+namespace Ryujinx.Ava.Utilities.Configuration.System
{
[JsonConverter(typeof(TypedStringEnumConverter))]
public enum Region
diff --git a/src/Ryujinx.UI.Common/Configuration/UI/ColumnSort.cs b/src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs
similarity index 73%
rename from src/Ryujinx.UI.Common/Configuration/UI/ColumnSort.cs
rename to src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs
index 44e98c407..e74ca0ec5 100644
--- a/src/Ryujinx.UI.Common/Configuration/UI/ColumnSort.cs
+++ b/src/Ryujinx/Utilities/Configuration/UI/ColumnSort.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.UI.Common.Configuration.UI
+namespace Ryujinx.Ava.Utilities.Configuration.UI
{
public struct ColumnSort
{
diff --git a/src/Ryujinx.UI.Common/Configuration/UI/GuiColumns.cs b/src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs
similarity index 91%
rename from src/Ryujinx.UI.Common/Configuration/UI/GuiColumns.cs
rename to src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs
index c486492e0..0ab9885fe 100644
--- a/src/Ryujinx.UI.Common/Configuration/UI/GuiColumns.cs
+++ b/src/Ryujinx/Utilities/Configuration/UI/GuiColumns.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.UI.Common.Configuration.UI
+namespace Ryujinx.Ava.Utilities.Configuration.UI
{
public struct GuiColumns
{
diff --git a/src/Ryujinx.UI.Common/Configuration/UI/ShownFileTypes.cs b/src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs
similarity index 85%
rename from src/Ryujinx.UI.Common/Configuration/UI/ShownFileTypes.cs
rename to src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs
index 6c72a6930..9541b4885 100644
--- a/src/Ryujinx.UI.Common/Configuration/UI/ShownFileTypes.cs
+++ b/src/Ryujinx/Utilities/Configuration/UI/ShownFileTypes.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.UI.Common.Configuration.UI
+namespace Ryujinx.Ava.Utilities.Configuration.UI
{
public struct ShownFileTypes
{
diff --git a/src/Ryujinx.UI.Common/Configuration/UI/WindowStartup.cs b/src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs
similarity index 85%
rename from src/Ryujinx.UI.Common/Configuration/UI/WindowStartup.cs
rename to src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs
index 0df459134..6c5e36879 100644
--- a/src/Ryujinx.UI.Common/Configuration/UI/WindowStartup.cs
+++ b/src/Ryujinx/Utilities/Configuration/UI/WindowStartup.cs
@@ -1,4 +1,4 @@
-namespace Ryujinx.UI.Common.Configuration.UI
+namespace Ryujinx.Ava.Utilities.Configuration.UI
{
public struct WindowStartup
{
diff --git a/src/Ryujinx/Utilities/ShortcutHelper.cs b/src/Ryujinx/Utilities/ShortcutHelper.cs
index 4923d2598..fed6a5c46 100644
--- a/src/Ryujinx/Utilities/ShortcutHelper.cs
+++ b/src/Ryujinx/Utilities/ShortcutHelper.cs
@@ -1,6 +1,5 @@
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
-using Ryujinx.UI.Common.Helper;
using ShellLink;
using SkiaSharp;
using System;
diff --git a/src/Ryujinx/Utilities/SystemInfo/SystemInfo.cs b/src/Ryujinx/Utilities/SystemInfo/SystemInfo.cs
index b7e33d3b4..0d45c52f2 100644
--- a/src/Ryujinx/Utilities/SystemInfo/SystemInfo.cs
+++ b/src/Ryujinx/Utilities/SystemInfo/SystemInfo.cs
@@ -1,5 +1,4 @@
using Ryujinx.Common.Logging;
-using Ryujinx.UI.Common.Helper;
using System;
using System.Runtime.InteropServices;
using System.Runtime.Intrinsics.X86;
diff --git a/src/Ryujinx/Utilities/TitleUpdatesHelper.cs b/src/Ryujinx/Utilities/TitleUpdatesHelper.cs
index 8cffb9b25..9fc9bbf6b 100644
--- a/src/Ryujinx/Utilities/TitleUpdatesHelper.cs
+++ b/src/Ryujinx/Utilities/TitleUpdatesHelper.cs
@@ -7,13 +7,13 @@ using LibHac.Ns;
using LibHac.Tools.FsSystem;
using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Models;
+using Ryujinx.Ava.Utilities.Configuration;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.Loaders.Processes.Extensions;
using Ryujinx.HLE.Utilities;
-using Ryujinx.UI.Common.Configuration;
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/src/Ryujinx.Common/Helpers/ValueFormatUtils.cs b/src/Ryujinx/Utilities/ValueFormatUtils.cs
similarity index 97%
rename from src/Ryujinx.Common/Helpers/ValueFormatUtils.cs
rename to src/Ryujinx/Utilities/ValueFormatUtils.cs
index c203834f5..944cfbf8a 100644
--- a/src/Ryujinx.Common/Helpers/ValueFormatUtils.cs
+++ b/src/Ryujinx/Utilities/ValueFormatUtils.cs
@@ -1,8 +1,9 @@
+using Ryujinx.Ava.Common.Locale;
using System;
using System.Globalization;
using System.Linq;
-namespace Ryujinx.UI.Common.Helper
+namespace Ryujinx.Ava.Utilities
{
public static class ValueFormatUtils
{
@@ -75,7 +76,7 @@ namespace Ryujinx.UI.Common.Helper
{
culture ??= CultureInfo.CurrentCulture;
- return utcDateTime?.ToLocalTime().ToString(culture);
+ return utcDateTime?.ToLocalTime().ToString(culture) ?? LocaleManager.Instance[LocaleKeys.Never];
}
///