diff --git a/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs b/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs
index 5570800ae..d11b01f1b 100644
--- a/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs
+++ b/Ryujinx.Ava/UI/ViewModels/SettingsViewModel.cs
@@ -1,4 +1,3 @@
-using Avalonia;
 using Avalonia.Collections;
 using Avalonia.Controls;
 using Avalonia.Threading;
@@ -8,8 +7,6 @@ using Ryujinx.Audio.Backends.OpenAL;
 using Ryujinx.Audio.Backends.SDL2;
 using Ryujinx.Audio.Backends.SoundIo;
 using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.Input;
-using Ryujinx.Ava.UI.Controls;
 using Ryujinx.Ava.UI.Helpers;
 using Ryujinx.Ava.UI.Windows;
 using Ryujinx.Common.Configuration;
@@ -19,7 +16,6 @@ using Ryujinx.Common.Logging;
 using Ryujinx.Graphics.Vulkan;
 using Ryujinx.HLE.FileSystem;
 using Ryujinx.HLE.HOS.Services.Time.TimeZone;
-using Ryujinx.Input;
 using Ryujinx.Ui.Common.Configuration;
 using Ryujinx.Ui.Common.Configuration.System;
 using System;
@@ -30,11 +26,10 @@ using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
 
 namespace Ryujinx.Ava.UI.ViewModels
 {
-    internal class SettingsViewModel : BaseModel
+    public class SettingsViewModel : BaseModel
     {
         private readonly VirtualFileSystem _virtualFileSystem;
         private readonly ContentManager _contentManager;
-        private readonly StyleableWindow _owner;
         private TimeZoneContentManager _timeZoneContentManager;
 
         private readonly List<string> _validTzRegions;
@@ -44,10 +39,14 @@ namespace Ryujinx.Ava.UI.ViewModels
         private int _graphicsBackendMultithreadingIndex;
         private float _volume;
         private bool _isVulkanAvailable = true;
-        private bool _directoryChanged = false;
-        private List<string> _gpuIds = new List<string>();
+        private bool _directoryChanged;
+        private List<string> _gpuIds = new();
         private KeyboardHotkeys _keyboardHotkeys;
         private int _graphicsBackendIndex;
+        private string _customThemePath;
+
+        public event Action CloseWindow;
+        public event Action SaveSettingsEvent;
 
         public int ResolutionScale
         {
@@ -67,19 +66,16 @@ namespace Ryujinx.Ava.UI.ViewModels
             {
                 _graphicsBackendMultithreadingIndex = value;
 
-                if (_owner != null)
+                if (_graphicsBackendMultithreadingIndex != (int)ConfigurationState.Instance.Graphics.BackendThreading.Value)
                 {
-                    if (_graphicsBackendMultithreadingIndex != (int)ConfigurationState.Instance.Graphics.BackendThreading.Value)
+                    Dispatcher.UIThread.Post(async () =>
                     {
-                        Dispatcher.UIThread.Post(async () =>
-                        {
-                            await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningMessage],
-                                                                       "",
-                                                                       "",
-                                                                       LocaleManager.Instance[LocaleKeys.InputDialogOk],
-                                                                       LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningTitle]);
-                        });
-                    }
+                        await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningMessage],
+                            "",
+                            "",
+                            LocaleManager.Instance[LocaleKeys.InputDialogOk],
+                            LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningTitle]);
+                    });
                 }
 
                 OnPropertyChanged();
@@ -120,12 +116,12 @@ namespace Ryujinx.Ava.UI.ViewModels
                 OnPropertyChanged();
             }
         }
-        
+
         public bool IsMacOS
         {
             get => OperatingSystem.IsMacOS();
         }
-        
+
         public bool EnableDiscordIntegration { get; set; }
         public bool CheckUpdatesOnStart { get; set; }
         public bool ShowConfirmExit { get; set; }
@@ -160,7 +156,20 @@ namespace Ryujinx.Ava.UI.ViewModels
 
         public string TimeZone { get; set; }
         public string ShaderDumpPath { get; set; }
-        public string CustomThemePath { get; set; }
+
+        public string CustomThemePath
+        {
+            get
+            {
+                return _customThemePath;
+            }
+            set
+            {
+                _customThemePath = value;
+
+                OnPropertyChanged();
+            }
+        }
 
         public int Language { get; set; }
         public int Region { get; set; }
@@ -191,7 +200,7 @@ namespace Ryujinx.Ava.UI.ViewModels
             {
                 _volume = value;
 
-                ConfigurationState.Instance.System.AudioVolume.Value = (float)(_volume / 100);
+                ConfigurationState.Instance.System.AudioVolume.Value = _volume / 100;
 
                 OnPropertyChanged();
             }
@@ -199,7 +208,7 @@ namespace Ryujinx.Ava.UI.ViewModels
 
         public DateTimeOffset DateOffset { get; set; }
         public TimeSpan TimeOffset { get; set; }
-        public AvaloniaList<TimeZone> TimeZones { get; set; }
+        private AvaloniaList<TimeZone> TimeZones { get; set; }
         public AvaloniaList<string> GameDirectories { get; set; }
         public ObservableCollection<ComboBoxItem> AvailableGpus { get; set; }
 
@@ -214,17 +223,13 @@ namespace Ryujinx.Ava.UI.ViewModels
             }
         }
 
-        public IGamepadDriver AvaloniaKeyboardDriver { get; }
-
-        public SettingsViewModel(VirtualFileSystem virtualFileSystem, ContentManager contentManager, StyleableWindow owner) : this()
+        public SettingsViewModel(VirtualFileSystem virtualFileSystem, ContentManager contentManager) : this()
         {
             _virtualFileSystem = virtualFileSystem;
             _contentManager = contentManager;
-            _owner = owner;
             if (Program.PreviewerDetached)
             {
                 LoadTimeZones();
-                AvaloniaKeyboardDriver = new AvaloniaKeyboardDriver(owner);
             }
         }
 
@@ -251,10 +256,10 @@ namespace Ryujinx.Ava.UI.ViewModels
             IsSDL2Enabled = SDL2HardwareDeviceDriver.IsSupported;
         }
 
-        private unsafe void LoadAvailableGpus()
+        private void LoadAvailableGpus()
         {
             _gpuIds = new List<string>();
-            List<string> names = new List<string>();
+            List<string> names = new();
             var devices = VulkanRenderer.GetPhysicalDevices();
 
             if (devices.Length == 0)
@@ -272,7 +277,7 @@ namespace Ryujinx.Ava.UI.ViewModels
             }
 
             AvailableGpus.Clear();
-            AvailableGpus.AddRange(names.Select(x => new ComboBoxItem() { Content = x }));
+            AvailableGpus.AddRange(names.Select(x => new ComboBoxItem { Content = x }));
         }
 
         public void LoadTimeZones()
@@ -302,25 +307,6 @@ namespace Ryujinx.Ava.UI.ViewModels
             }
         }
 
-        public async void BrowseTheme()
-        {
-            var dialog = new OpenFileDialog()
-            {
-                Title = LocaleManager.Instance[LocaleKeys.SettingsSelectThemeFileDialogTitle],
-                AllowMultiple = false
-            };
-
-            dialog.Filters.Add(new FileDialogFilter() { Extensions = { "xaml" }, Name = LocaleManager.Instance[LocaleKeys.SettingsXamlThemeFile] });
-
-            var file = await dialog.ShowAsync(_owner);
-
-            if (file != null && file.Length > 0)
-            {
-                CustomThemePath = file[0];
-                OnPropertyChanged(nameof(CustomThemePath));
-            }
-        }
-
         public void LoadCurrentConfiguration()
         {
             ConfigurationState config = ConfigurationState.Instance;
@@ -477,16 +463,8 @@ namespace Ryujinx.Ava.UI.ViewModels
             config.ToFileFormat().SaveConfig(Program.ConfigurationPath);
 
             MainWindow.UpdateGraphicsConfig();
-            
-            if (_owner is SettingsWindow owner)
-            {
-                owner.ControllerSettings?.SaveCurrentProfile();
-            }
-            
-            if (_owner.Owner is MainWindow window && _directoryChanged)
-            {
-                window.ViewModel.LoadApplications();
-            }
+
+            SaveSettingsEvent?.Invoke();
 
             _directoryChanged = false;
         }
@@ -504,13 +482,13 @@ namespace Ryujinx.Ava.UI.ViewModels
         public void OkButton()
         {
             SaveSettings();
-            _owner.Close();
+            CloseWindow?.Invoke();
         }
 
         public void CancelButton()
         {
             RevertIfNotSaved();
-            _owner.Close();
+            CloseWindow?.Invoke();
         }
     }
 }
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml
new file mode 100644
index 000000000..352833534
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml
@@ -0,0 +1,81 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsAudioView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer
+        Name="AudioPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel
+                Margin="10"
+                HorizontalAlignment="Stretch"
+                Orientation="Vertical"
+                Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabAudio}" />
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center"
+                               Text="{locale:Locale SettingsTabSystemAudioBackend}"
+                               ToolTip.Tip="{locale:Locale AudioBackendTooltip}"
+                               Width="250" />
+                    <ComboBox SelectedIndex="{Binding AudioBackend}"
+                              Width="350"
+                              HorizontalContentAlignment="Left">
+                        <ComboBoxItem>
+                            <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendDummy}" />
+                        </ComboBoxItem>
+                        <ComboBoxItem IsEnabled="{Binding IsOpenAlEnabled}">
+                            <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendOpenAL}" />
+                        </ComboBoxItem>
+                        <ComboBoxItem IsEnabled="{Binding IsSoundIoEnabled}">
+                            <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendSoundIO}" />
+                        </ComboBoxItem>
+                        <ComboBoxItem IsEnabled="{Binding IsSDL2Enabled}">
+                            <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendSDL2}" />
+                        </ComboBoxItem>
+                    </ComboBox>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center"
+                               Text="{locale:Locale SettingsTabSystemAudioVolume}"
+                               ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
+                               Width="250" />
+                    <ui:NumberBox Value="{Binding Volume}"
+                            ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
+                            Width="350"
+                            SmallChange="1"
+                            LargeChange="10"
+                            SimpleNumberFormat="F0"
+                            SpinButtonPlacementMode="Inline"
+                            Minimum="0"
+                            Maximum="100" />
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <Slider Value="{Binding Volume}"
+                            Margin="250,0,0,0"
+                            ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
+                            Minimum="0"
+                            Maximum="100"
+                            SmallChange="5"
+                            TickFrequency="5"
+                            IsSnapToTickEnabled="True"
+                            LargeChange="10"
+                            Width="350" />
+                </StackPanel>
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml.cs
new file mode 100644
index 000000000..026c7fdf8
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsAudioView.axaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsAudioView : UserControl
+    {
+        public SettingsAudioView()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml
new file mode 100644
index 000000000..a0cf34529
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml
@@ -0,0 +1,72 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsCPUView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer
+        Name="CpuPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel
+                Margin="10"
+                HorizontalAlignment="Stretch"
+                Orientation="Vertical"
+                Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabCpuCache}" />
+                <StackPanel
+                    Margin="10,0,0,0"
+                    HorizontalAlignment="Stretch"
+                    Orientation="Vertical">
+                    <CheckBox IsChecked="{Binding EnablePptc}">
+                        <TextBlock Text="{locale:Locale SettingsTabSystemEnablePptc}"
+                                   ToolTip.Tip="{locale:Locale PptcToggleTooltip}" />
+                    </CheckBox>
+                </StackPanel>
+                <Separator Height="1" />
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabCpuMemory}" />
+                <StackPanel
+                    Margin="10,0,0,0"
+                    HorizontalAlignment="Stretch"
+                    Orientation="Vertical">
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   Text="{locale:Locale SettingsTabSystemMemoryManagerMode}"
+                                   ToolTip.Tip="{locale:Locale MemoryManagerTooltip}"
+                                   Width="250" />
+                        <ComboBox SelectedIndex="{Binding MemoryMode}"
+                                  ToolTip.Tip="{locale:Locale MemoryManagerTooltip}"
+                                  HorizontalContentAlignment="Left"
+                                  Width="350">
+                            <ComboBoxItem
+                                ToolTip.Tip="{locale:Locale MemoryManagerSoftwareTooltip}">
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemMemoryManagerModeSoftware}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem
+                                ToolTip.Tip="{locale:Locale MemoryManagerHostTooltip}">
+                                <TextBlock Text="{locale:Locale SettingsTabSystemMemoryManagerModeHost}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem
+                                ToolTip.Tip="{locale:Locale MemoryManagerUnsafeTooltip}">
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemMemoryManagerModeHostUnchecked}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+                </StackPanel>
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml.cs
new file mode 100644
index 000000000..5c5b60793
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsCPUView.axaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsCPUView : UserControl
+    {
+        public SettingsCPUView()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml
new file mode 100644
index 000000000..1f65155a2
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml
@@ -0,0 +1,218 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsGraphicsView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer
+        Name="GraphicsPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel
+                Margin="10"
+                HorizontalAlignment="Stretch"
+                Orientation="Vertical"
+                Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsAPI}" />
+                <StackPanel Margin="10,0,0,0" Orientation="Vertical" Spacing="10">
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                ToolTip.Tip="{locale:Locale SettingsTabGraphicsBackendTooltip}"
+                                Text="{locale:Locale SettingsTabGraphicsBackend}"
+                                Width="250" />
+                        <ComboBox Width="350"
+                                HorizontalContentAlignment="Left"
+                                ToolTip.Tip="{locale:Locale SettingsTabGraphicsBackendTooltip}"
+                                SelectedIndex="{Binding GraphicsBackendIndex}">
+                            <ComboBoxItem IsVisible="{Binding IsVulkanAvailable}">
+                                <TextBlock Text="Vulkan" />
+                            </ComboBoxItem>
+                            <ComboBoxItem IsEnabled="{Binding IsOpenGLAvailable}">
+                                <TextBlock Text="OpenGL" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal" IsVisible="{Binding IsVulkanSelected}">
+                        <TextBlock VerticalAlignment="Center"
+                                ToolTip.Tip="{locale:Locale SettingsTabGraphicsPreferredGpuTooltip}"
+                                Text="{locale:Locale SettingsTabGraphicsPreferredGpu}"
+                                Width="250" />
+                        <ComboBox Width="350"
+                                HorizontalContentAlignment="Left"
+                                ToolTip.Tip="{locale:Locale SettingsTabGraphicsPreferredGpuTooltip}"
+                                SelectedIndex="{Binding PreferredGpuIndex}"
+                                Items="{Binding AvailableGpus}"/>
+                    </StackPanel>
+                </StackPanel>
+                <Separator Height="1" />
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsFeatures}" />
+                <StackPanel Margin="10,0,0,0" Orientation="Vertical" Spacing="10">
+                    <StackPanel Orientation="Vertical">
+                        <CheckBox IsChecked="{Binding EnableShaderCache}"
+                            ToolTip.Tip="{locale:Locale ShaderCacheToggleTooltip}">
+                            <TextBlock Text="{locale:Locale SettingsTabGraphicsEnableShaderCache}" />
+                        </CheckBox>
+                        <CheckBox IsChecked="{Binding EnableTextureRecompression}"
+                            ToolTip.Tip="{locale:Locale SettingsEnableTextureRecompressionTooltip}">
+                            <TextBlock Text="{locale:Locale SettingsEnableTextureRecompression}" />
+                        </CheckBox>
+                        <CheckBox IsChecked="{Binding EnableMacroHLE}"
+                            ToolTip.Tip="{locale:Locale SettingsEnableMacroHLETooltip}">
+                            <TextBlock Text="{locale:Locale SettingsEnableMacroHLE}" />
+                        </CheckBox>
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   ToolTip.Tip="{locale:Locale ResolutionScaleTooltip}"
+                                   Text="{locale:Locale SettingsTabGraphicsResolutionScale}"
+                                   Width="250" />
+                        <ComboBox SelectedIndex="{Binding ResolutionScale}"
+                                  Width="350"
+                                  HorizontalContentAlignment="Left"
+                                  ToolTip.Tip="{locale:Locale ResolutionScaleTooltip}">
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScaleCustom}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScaleNative}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale2x}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale3x}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale4x}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                        <ui:NumberBox
+                            Margin="10,0,0,0"
+                            ToolTip.Tip="{locale:Locale ResolutionScaleEntryTooltip}"
+                            MinWidth="150"
+                            SmallChange="0.1"
+                            LargeChange="1"
+                            SimpleNumberFormat="F2"
+                            SpinButtonPlacementMode="Inline"
+                            IsVisible="{Binding IsCustomResolutionScaleActive}"
+                            Maximum="100"
+                            Minimum="0.1"
+                            Value="{Binding CustomResolutionScale}" />
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   ToolTip.Tip="{locale:Locale AnisotropyTooltip}"
+                                   Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering}"
+                                   Width="250" />
+                        <ComboBox SelectedIndex="{Binding MaxAnisotropy}"
+                                  Width="350"
+                                  HorizontalContentAlignment="Left"
+                                  ToolTip.Tip="{locale:Locale AnisotropyTooltip}">
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabGraphicsAnisotropicFilteringAuto}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering2x}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering4x}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering8x}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering16x}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   ToolTip.Tip="{locale:Locale AspectRatioTooltip}"
+                                   Text="{locale:Locale SettingsTabGraphicsAspectRatio}"
+                                   Width="250" />
+                        <ComboBox SelectedIndex="{Binding AspectRatio}"
+                                  Width="350"
+                                  HorizontalContentAlignment="Left"
+                                  ToolTip.Tip="{locale:Locale AspectRatioTooltip}">
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio4x3}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio16x9}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio16x10}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio21x9}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio32x9}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatioStretch}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+                </StackPanel>
+                <StackPanel
+                    Margin="10,0,0,0"
+                    HorizontalAlignment="Stretch"
+                    Orientation="Vertical"
+                    Spacing="10">
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   ToolTip.Tip="{locale:Locale GraphicsBackendThreadingTooltip}"
+                                   Text="{locale:Locale SettingsTabGraphicsBackendMultithreading}"
+                                   Width="250" />
+                        <ComboBox Width="350"
+                                  HorizontalContentAlignment="Left"
+                                  ToolTip.Tip="{locale:Locale GalThreadingTooltip}"
+                                  SelectedIndex="{Binding GraphicsBackendMultithreadingIndex}">
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale CommonAuto}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale CommonOff}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale CommonOn}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+                </StackPanel>
+                <Separator Height="1" />
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsDeveloperOptions}" />
+                <StackPanel
+                    Margin="10,0,0,0"
+                    HorizontalAlignment="Stretch"
+                    Orientation="Vertical"
+                    Spacing="10">
+                    <StackPanel Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   ToolTip.Tip="{locale:Locale ShaderDumpPathTooltip}"
+                                   Text="{locale:Locale SettingsTabGraphicsShaderDumpPath}"
+                                   Width="250" />
+                        <TextBox Text="{Binding ShaderDumpPath}"
+                                 Width="350"
+                                 ToolTip.Tip="{locale:Locale ShaderDumpPathTooltip}" />
+                    </StackPanel>
+                </StackPanel>
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml.cs
new file mode 100644
index 000000000..8fe08552e
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsGraphicsView.axaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsGraphicsView : UserControl
+    {
+        public SettingsGraphicsView()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml
new file mode 100644
index 000000000..361125bfe
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml
@@ -0,0 +1,104 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsHotkeysView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel"
+    Focusable="True">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <UserControl.Resources>
+        <helpers:KeyValueConverter x:Key="Key" />
+    </UserControl.Resources>
+    <ScrollViewer 
+        Name="HotkeysPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel Margin="10" Orientation="Vertical" Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabHotkeysHotkeys}" />
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysToggleVsyncHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.ToggleVsync, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysScreenshotHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.Screenshot, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysShowUiHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.ShowUi, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysPauseHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.Pause, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysToggleMuteHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.ToggleMute, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysResScaleUpHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.ResScaleUp, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysResScaleDownHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.ResScaleDown, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysVolumeUpHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.VolumeUp, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+                <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
+                    <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysVolumeDownHotkey}" Width="230" />
+                    <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
+                        <TextBlock
+                            Text="{Binding KeyboardHotkeys.VolumeDown, Mode=TwoWay, Converter={StaticResource Key}}"
+                            TextAlignment="Center" />
+                    </ToggleButton>
+                </StackPanel>
+            </StackPanel>
+        </Border>
+   </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml.cs
new file mode 100644
index 000000000..702f73e87
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsHotkeysView.axaml.cs
@@ -0,0 +1,81 @@
+using Avalonia.Controls;
+using Avalonia.Controls.Primitives;
+using Avalonia.Input;
+using Avalonia.Interactivity;
+using Ryujinx.Ava.Input;
+using Ryujinx.Ava.UI.Helpers;
+using Ryujinx.Input;
+using Ryujinx.Input.Assigner;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsHotkeysView : UserControl
+    {
+        private ButtonKeyAssigner _currentAssigner;
+        private IGamepadDriver AvaloniaKeyboardDriver;
+    
+        public SettingsHotkeysView()
+        {
+            InitializeComponent();
+            AvaloniaKeyboardDriver = new AvaloniaKeyboardDriver(this);
+        }
+
+        private void MouseClick(object sender, PointerPressedEventArgs e)
+        {
+            bool shouldUnbind = e.GetCurrentPoint(this).Properties.IsMiddleButtonPressed;
+
+            _currentAssigner?.Cancel(shouldUnbind);
+
+            PointerPressed -= MouseClick;
+        }
+    
+        private void Button_Checked(object sender, RoutedEventArgs e)
+        {
+            if (sender is ToggleButton button)
+            {
+                if (_currentAssigner != null && button == _currentAssigner.ToggledButton)
+                {
+                    return;
+                }
+
+                if (_currentAssigner == null && button.IsChecked != null && (bool)button.IsChecked)
+                {
+                    _currentAssigner = new ButtonKeyAssigner(button);
+
+                    FocusManager.Instance?.Focus(this, NavigationMethod.Pointer);
+
+                    PointerPressed += MouseClick;
+
+                    var keyboard = (IKeyboard)AvaloniaKeyboardDriver.GetGamepad(AvaloniaKeyboardDriver.GamepadsIds[0]);
+                    IButtonAssigner assigner = new KeyboardKeyAssigner(keyboard);
+
+                    _currentAssigner.GetInputAndAssign(assigner);
+                }
+                else
+                {
+                    if (_currentAssigner != null)
+                    {
+                        ToggleButton oldButton = _currentAssigner.ToggledButton;
+
+                        _currentAssigner.Cancel();
+                        _currentAssigner = null;
+
+                        button.IsChecked = false;
+                    }
+                }
+            }
+        }
+
+        private void Button_Unchecked(object sender, RoutedEventArgs e)
+        {
+            _currentAssigner?.Cancel();
+            _currentAssigner = null;
+        }
+
+        public void Dispose()
+        {
+            _currentAssigner?.Cancel();
+            _currentAssigner = null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml
new file mode 100644
index 000000000..1c774bdad
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml
@@ -0,0 +1,46 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsInputView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:window="clr-namespace:Ryujinx.Ava.UI.Windows"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer 
+        Name="InputPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel Margin="4" Orientation="Vertical">
+                <StackPanel Orientation="Horizontal">
+                    <CheckBox Margin="5,0"
+                              ToolTip.Tip="{locale:Locale DockModeToggleTooltip}"
+                              IsChecked="{Binding EnableDockedMode}">
+                        <TextBlock VerticalAlignment="Center"
+                                   Text="{locale:Locale SettingsTabInputEnableDockedMode}" />
+                    </CheckBox>
+                    <CheckBox Margin="5,0"
+                              ToolTip.Tip="{locale:Locale DirectKeyboardTooltip}"
+                              IsChecked="{Binding EnableKeyboard}">
+                        <TextBlock Text="{locale:Locale SettingsTabInputDirectKeyboardAccess}" />
+                    </CheckBox>
+                    <CheckBox Margin="5,0"
+                              ToolTip.Tip="{locale:Locale DirectMouseTooltip}"
+                              IsChecked="{Binding EnableMouse}">
+                        <TextBlock Text="{locale:Locale SettingsTabInputDirectMouseAccess}" />
+                    </CheckBox>
+                </StackPanel>
+                <window:ControllerSettingsWindow Name="ControllerSettings" Margin="0" MinHeight="600" />
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml.cs
new file mode 100644
index 000000000..0c2105ec4
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml.cs
@@ -0,0 +1,17 @@
+using Avalonia.Controls;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsInputView : UserControl
+    {
+        public SettingsInputView()
+        {
+            InitializeComponent();
+        }
+
+        public void Dispose()
+        {
+            ControllerSettings.Dispose();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml
new file mode 100644
index 000000000..2163dcdac
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml
@@ -0,0 +1,118 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsLoggingView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer
+        Name="LoggingPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel
+                Margin="10"
+                HorizontalAlignment="Stretch"
+                Orientation="Vertical"
+                Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabLoggingLogging}" />
+                <StackPanel Margin="10,0,0,0" Orientation="Vertical">
+                    <CheckBox IsChecked="{Binding EnableFileLog}"
+                              ToolTip.Tip="{locale:Locale FileLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableLoggingToFile}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding EnableStub}"
+                              ToolTip.Tip="{locale:Locale StubLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableStubLogs}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding EnableInfo}"
+                              ToolTip.Tip="{locale:Locale InfoLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableInfoLogs}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding EnableWarn}"
+                              ToolTip.Tip="{locale:Locale WarnLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableWarningLogs}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding EnableError}"
+                              ToolTip.Tip="{locale:Locale ErrorLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableErrorLogs}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding EnableTrace}"
+                              ToolTip.Tip="{locale:Locale TraceLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableTraceLogs}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding EnableGuest}"
+                              ToolTip.Tip="{locale:Locale GuestLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableGuestLogs}" />
+                    </CheckBox>
+                </StackPanel>
+                <Separator Height="1" />
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabLoggingDeveloperOptions}" />
+                <StackPanel
+                    Margin="10,0,0,0"
+                    HorizontalAlignment="Stretch"
+                    Orientation="Vertical"
+                    Spacing="10">
+                    <StackPanel Orientation="Vertical">
+                        <CheckBox IsChecked="{Binding EnableDebug}"
+                                ToolTip.Tip="{locale:Locale DebugLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableDebugLogs}" />
+                        </CheckBox>
+                        <CheckBox IsChecked="{Binding EnableFsAccessLog}"
+                                ToolTip.Tip="{locale:Locale FileAccessLogTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabLoggingEnableFsAccessLogs}" />
+                        </CheckBox>
+                        <StackPanel Margin="0,10,0,0" Orientation="Horizontal" VerticalAlignment="Stretch">
+                            <TextBlock VerticalAlignment="Center"
+                                    ToolTip.Tip="{locale:Locale FSAccessLogModeTooltip}"
+                                    Text="{locale:Locale SettingsTabLoggingFsGlobalAccessLogMode}"
+                                    Width="285" />
+                            <ui:NumberBox
+                                Maximum="3"
+                                Minimum="0"
+                                Width="150"
+                                SpinButtonPlacementMode="Inline"
+                                SmallChange="1"
+                                LargeChange="1"
+                                Value="{Binding FsGlobalAccessLogMode}" />
+                        </StackPanel>
+                        <StackPanel Margin="0,10,0,0" Orientation="Horizontal">
+                            <TextBlock VerticalAlignment="Center"
+                                    Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevel}"
+                                    ToolTip.Tip="{locale:Locale OpenGlLogLevel}"
+                                    Width="285" />
+                            <ComboBox SelectedIndex="{Binding OpenglDebugLevel}"
+                                    Width="150"
+                                    HorizontalContentAlignment="Left"
+                                    ToolTip.Tip="{locale:Locale OpenGlLogLevel}">
+                                <ComboBoxItem>
+                                    <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelNone}" />
+                                </ComboBoxItem>
+                                <ComboBoxItem>
+                                    <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelError}" />
+                                </ComboBoxItem>
+                                <ComboBoxItem>
+                                    <TextBlock
+                                        Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelPerformance}" />
+                                </ComboBoxItem>
+                                <ComboBoxItem>
+                                    <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelAll}" />
+                                </ComboBoxItem>
+                            </ComboBox>
+                        </StackPanel>
+                    </StackPanel>
+                </StackPanel>
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml.cs
new file mode 100644
index 000000000..2ec476ac6
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsLoggingView.axaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsLoggingView : UserControl
+    {
+        public SettingsLoggingView()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml
new file mode 100644
index 000000000..8efd367dd
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml
@@ -0,0 +1,35 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsNetworkView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer
+        Name="NetworkPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel
+                Margin="10"
+                HorizontalAlignment="Stretch"
+                Orientation="Vertical"
+                Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabNetworkConnection}" />
+                <CheckBox Margin="10,0,0,0" IsChecked="{Binding EnableInternetAccess}">
+                    <TextBlock Text="{locale:Locale SettingsTabSystemEnableInternetAccess}"
+                               ToolTip.Tip="{locale:Locale EnableInternetAccessTooltip}" />
+                </CheckBox>
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml.cs
new file mode 100644
index 000000000..d7407b9d5
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsNetworkView.axaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsNetworkView : UserControl
+    {
+        public SettingsNetworkView()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml
new file mode 100644
index 000000000..ddcca39cb
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml
@@ -0,0 +1,195 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsSystemView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer 
+        Name="SystemPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel
+                Margin="10"
+                HorizontalAlignment="Stretch"
+                Orientation="Vertical"
+                Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabSystemCore}" />
+                <StackPanel Margin="10,0,0,0" Orientation="Vertical">
+                    <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   Text="{locale:Locale SettingsTabSystemSystemRegion}"
+                                   Width="250" />
+                        <ComboBox SelectedIndex="{Binding Region}"
+                                  ToolTip.Tip="{locale:Locale RegionTooltip}"
+                                  HorizontalContentAlignment="Left"
+                                  Width="350">
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionJapan}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionUSA}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionEurope}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionAustralia}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionChina}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionKorea}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionTaiwan}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+                    <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   Text="{locale:Locale SettingsTabSystemSystemLanguage}"
+                                   ToolTip.Tip="{locale:Locale LanguageTooltip}"
+                                   Width="250" />
+                        <ComboBox SelectedIndex="{Binding Language}"
+                                  ToolTip.Tip="{locale:Locale LanguageTooltip}"
+                                  HorizontalContentAlignment="Left"
+                                  Width="350">
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageJapanese}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemSystemLanguageAmericanEnglish}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageFrench}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageGerman}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageItalian}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageSpanish}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageChinese}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageKorean}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageDutch}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguagePortuguese}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageRussian}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageTaiwanese}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemSystemLanguageBritishEnglish}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemSystemLanguageCanadianFrench}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemSystemLanguageLatinAmericanSpanish}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemSystemLanguageSimplifiedChinese}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemSystemLanguageTraditionalChinese}" />
+                            </ComboBoxItem>
+                            <ComboBoxItem>
+                                <TextBlock
+                                    Text="{locale:Locale SettingsTabSystemSystemLanguageBrazilianPortuguese}" />
+                            </ComboBoxItem>
+                        </ComboBox>
+                    </StackPanel>
+                    <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   Text="{locale:Locale SettingsTabSystemSystemTimeZone}"
+                                   ToolTip.Tip="{locale:Locale TimezoneTooltip}"
+                                   Width="250" />
+                        <AutoCompleteBox
+                            Name="TimeZoneBox"
+                            Width="350"
+                            MaxDropDownHeight="500"
+                            FilterMode="Contains"
+                            Items="{Binding TimeZones}"
+                            SelectionChanged="TimeZoneBox_OnSelectionChanged"
+                            Text="{Binding Path=TimeZone, Mode=OneWay}"
+                            TextChanged="TimeZoneBox_OnTextChanged"
+                            ToolTip.Tip="{locale:Locale TimezoneTooltip}" />
+                    </StackPanel>
+                    <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
+                        <TextBlock VerticalAlignment="Center"
+                                   Text="{locale:Locale SettingsTabSystemSystemTime}"
+                                   ToolTip.Tip="{locale:Locale TimeTooltip}"
+                                   Width="250"/>
+                        <DatePicker VerticalAlignment="Center" SelectedDate="{Binding DateOffset}"
+                                    ToolTip.Tip="{locale:Locale TimeTooltip}"
+                                    Width="350" />
+                    </StackPanel>
+                    <StackPanel Margin="250,0,0,10" Orientation="Horizontal">
+                        <TimePicker
+                            VerticalAlignment="Center"
+                            ClockIdentifier="24HourClock"
+                            SelectedTime="{Binding TimeOffset}"
+                            Width="350"
+                            ToolTip.Tip="{locale:Locale TimeTooltip}" />
+                    </StackPanel>
+                    <CheckBox IsChecked="{Binding EnableVsync}">
+                        <TextBlock Text="{locale:Locale SettingsTabSystemEnableVsync}"
+                                   ToolTip.Tip="{locale:Locale VSyncToggleTooltip}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding EnableFsIntegrityChecks}">
+                        <TextBlock Text="{locale:Locale SettingsTabSystemEnableFsIntegrityChecks}"
+                                   ToolTip.Tip="{locale:Locale FsIntegrityToggleTooltip}" />
+                    </CheckBox>
+                </StackPanel>
+                <Separator Height="1" />
+                <StackPanel Orientation="Horizontal">
+                    <TextBlock Classes="h1" Text="{locale:Locale SettingsTabSystemHacks}" />
+                    <TextBlock Text="{locale:Locale SettingsTabSystemHacksNote}" />
+                </StackPanel>
+                <StackPanel
+                    Margin="10,0,0,0"
+                    HorizontalAlignment="Stretch"
+                    Orientation="Vertical">
+                    <CheckBox IsChecked="{Binding ExpandDramSize}"
+                              ToolTip.Tip="{locale:Locale DRamTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabSystemExpandDramSize}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding IgnoreMissingServices}"
+                              ToolTip.Tip="{locale:Locale IgnoreMissingServicesTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabSystemIgnoreMissingServices}" />
+                    </CheckBox>
+                </StackPanel>
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs
new file mode 100644
index 000000000..d2ea59deb
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsSystemView.axaml.cs
@@ -0,0 +1,52 @@
+using Avalonia.Controls;
+using Avalonia.Data;
+using Avalonia.Data.Converters;
+using Ryujinx.Ava.UI.ViewModels;
+using System;
+using System.Linq;
+using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsSystemView : UserControl
+    {
+        public SettingsViewModel ViewModel;
+
+        public SettingsSystemView()
+        {
+            InitializeComponent();
+        
+            FuncMultiValueConverter<string, string> converter = new(parts => string.Format("{0}  {1}   {2}", parts.ToArray()).Trim());
+            MultiBinding tzMultiBinding = new() { Converter = converter };
+
+            tzMultiBinding.Bindings.Add(new Binding("UtcDifference"));
+            tzMultiBinding.Bindings.Add(new Binding("Location"));
+            tzMultiBinding.Bindings.Add(new Binding("Abbreviation"));
+
+            TimeZoneBox.ValueMemberBinding = tzMultiBinding;
+        }
+
+        private void TimeZoneBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            if (e.AddedItems != null && e.AddedItems.Count > 0)
+            {
+                if (e.AddedItems[0] is TimeZone timeZone)
+                {
+                    e.Handled = true;
+
+                    ViewModel.ValidateAndSetTimeZone(timeZone.Location);
+                }
+            }
+        }
+
+        private void TimeZoneBox_OnTextChanged(object sender, EventArgs e)
+        {
+            if (sender is AutoCompleteBox box && box.SelectedItem is TimeZone timeZone)
+            {
+                {
+                    ViewModel.ValidateAndSetTimeZone(timeZone.Location);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml b/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml
new file mode 100644
index 000000000..61b6c4335
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml
@@ -0,0 +1,156 @@
+<UserControl 
+    x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsUIView"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    mc:Ignorable="d"
+    x:CompileBindings="True"
+    x:DataType="viewModels:SettingsViewModel">
+    <Design.DataContext>
+        <viewModels:SettingsViewModel />
+    </Design.DataContext>
+    <ScrollViewer 
+        Name="UiPage"
+        HorizontalAlignment="Stretch"
+        VerticalAlignment="Stretch"
+        HorizontalScrollBarVisibility="Disabled"
+        VerticalScrollBarVisibility="Auto">
+        <Border Classes="settings">
+            <StackPanel
+                Margin="10"
+                HorizontalAlignment="Stretch"
+                Orientation="Vertical"
+                Spacing="10">
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralGeneral}" />
+                <StackPanel Margin="10,0,0,0" Orientation="Vertical">
+                    <CheckBox IsChecked="{Binding EnableDiscordIntegration}">
+                        <TextBlock VerticalAlignment="Center"
+                                   ToolTip.Tip="{locale:Locale ToggleDiscordTooltip}"
+                                   Text="{locale:Locale SettingsTabGeneralEnableDiscordRichPresence}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding CheckUpdatesOnStart}">
+                        <TextBlock Text="{locale:Locale SettingsTabGeneralCheckUpdatesOnLaunch}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding ShowConfirmExit}">
+                        <TextBlock Text="{locale:Locale SettingsTabGeneralShowConfirmExitDialog}" />
+                    </CheckBox>
+                    <CheckBox IsChecked="{Binding HideCursorOnIdle}">
+                        <TextBlock Text="{locale:Locale SettingsTabGeneralHideCursorOnIdle}" />
+                    </CheckBox>
+                </StackPanel>
+                <Separator Height="1" />
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralGameDirectories}" />
+                <StackPanel
+                    Margin="10,0,0,0"
+                    HorizontalAlignment="Stretch"
+                    Orientation="Vertical"
+                    Spacing="10">
+                    <ListBox
+                        Name="GameList"
+                        MinHeight="230"
+                        Items="{Binding GameDirectories}">
+                        <ListBox.Styles>
+                            <Style Selector="ListBoxItem">
+                                <Setter Property="Padding" Value="10" />
+                                <Setter Property="Background" Value="{DynamicResource ListBoxBackground}" />
+                            </Style>
+                        </ListBox.Styles>
+                    </ListBox>
+                    <Grid HorizontalAlignment="Stretch">
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="*" />
+                            <ColumnDefinition Width="Auto" />
+                            <ColumnDefinition Width="Auto" />
+                        </Grid.ColumnDefinitions>
+                        <TextBox
+                            Name="PathBox"
+                            Margin="0"
+                            ToolTip.Tip="{locale:Locale AddGameDirBoxTooltip}"
+                            VerticalAlignment="Stretch" />
+                        <Button
+                            Name="AddButton"
+                            Grid.Column="1"
+                            MinWidth="90"
+                            Margin="10,0,0,0"
+                            ToolTip.Tip="{locale:Locale AddGameDirTooltip}"
+                            Click="AddButton_OnClick">
+                            <TextBlock HorizontalAlignment="Center"
+                                       Text="{locale:Locale SettingsTabGeneralAdd}" />
+                        </Button>
+                        <Button
+                            Name="RemoveButton"
+                            Grid.Column="2"
+                            MinWidth="90"
+                            Margin="10,0,0,0"
+                            ToolTip.Tip="{locale:Locale RemoveGameDirTooltip}"
+                            Click="RemoveButton_OnClick">
+                            <TextBlock HorizontalAlignment="Center"
+                                       Text="{locale:Locale SettingsTabGeneralRemove}" />
+                        </Button>
+                    </Grid>
+                </StackPanel>
+                <Separator Height="1" />
+                <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralTheme}" />
+                <Grid Margin="10,0,0,0">
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="Auto" />
+                        <ColumnDefinition />
+                        <ColumnDefinition Width="Auto" />
+                    </Grid.ColumnDefinitions>
+                    <Grid.RowDefinitions>
+                        <RowDefinition />
+                        <RowDefinition />
+                        <RowDefinition />
+                    </Grid.RowDefinitions>
+                    <CheckBox 
+                        IsChecked="{Binding EnableCustomTheme}"
+                        ToolTip.Tip="{locale:Locale CustomThemeCheckTooltip}">
+                        <TextBlock Text="{locale:Locale SettingsTabGeneralThemeEnableCustomTheme}" />
+                    </CheckBox>
+                    <TextBlock
+                        Grid.Column="0"
+                        Grid.Row="1"
+                        VerticalAlignment="Center"
+                        Margin="0,10,0,0"
+                        Text="{locale:Locale SettingsTabGeneralThemeCustomTheme}"
+                        ToolTip.Tip="{locale:Locale CustomThemePathTooltip}" />
+                    <TextBox
+                        Grid.Row="1"
+                        Grid.Column="1"
+                        Margin="0,10,0,0"
+                        Text="{Binding CustomThemePath}" />
+                    <Button 
+                        Grid.Row="1"
+                        Grid.Column="2"
+                        Margin="10,10,0,0"
+                        Click="BrowseTheme"
+                        ToolTip.Tip="{locale:Locale CustomThemeBrowseTooltip}"
+                        Content="{locale:Locale ButtonBrowse}" />
+                    <TextBlock
+                        Grid.Column="0"
+                        Grid.Row="2"
+                        VerticalAlignment="Center"
+                        Margin="0,10,0,0"
+                        Text="{locale:Locale SettingsTabGeneralThemeBaseStyle}" />
+                    <ComboBox
+                        Grid.Column="1"
+                        Grid.Row="2"
+                        VerticalAlignment="Center"
+                        Margin="0,10,0,0"
+                        MinWidth="100"
+                        SelectedIndex="{Binding BaseStyleIndex}">
+                        <ComboBoxItem>
+                            <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleLight}" />
+                        </ComboBoxItem>
+                        <ComboBoxItem>
+                            <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleDark}" />
+                        </ComboBoxItem>
+                    </ComboBox>
+                </Grid>
+            </StackPanel>
+        </Border>
+    </ScrollViewer>
+</UserControl>
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs b/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs
new file mode 100644
index 000000000..8e6da7c54
--- /dev/null
+++ b/Ryujinx.Ava/UI/Views/Settings/SettingsUIView.axaml.cs
@@ -0,0 +1,82 @@
+using Avalonia.Controls;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Interactivity;
+using Ryujinx.Ava.Common.Locale;
+using Ryujinx.Ava.UI.ViewModels;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace Ryujinx.Ava.UI.Views.Settings
+{
+    public partial class SettingsUIView : UserControl
+    {
+        public SettingsViewModel ViewModel;
+
+        public SettingsUIView()
+        {
+            InitializeComponent();
+        }
+
+        private async void AddButton_OnClick(object sender, RoutedEventArgs e)
+        {
+            string path = PathBox.Text;
+
+            if (!string.IsNullOrWhiteSpace(path) && Directory.Exists(path) && !ViewModel.GameDirectories.Contains(path))
+            {
+                ViewModel.GameDirectories.Add(path);
+                ViewModel.DirectoryChanged = true;
+            }
+            else
+            {
+                if (Avalonia.Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+                {
+                    path = await new OpenFolderDialog().ShowAsync(desktop.MainWindow);
+
+                    if (!string.IsNullOrWhiteSpace(path))
+                    {
+                        ViewModel.GameDirectories.Add(path);
+                        ViewModel.DirectoryChanged = true;
+                    }
+                }
+            }
+        }
+
+        private void RemoveButton_OnClick(object sender, RoutedEventArgs e)
+        {
+            int oldIndex = GameList.SelectedIndex;
+
+            foreach (string path in new List<string>(GameList.SelectedItems.Cast<string>()))
+            {
+                ViewModel.GameDirectories.Remove(path);
+                ViewModel.DirectoryChanged = true;
+            }
+
+            if (GameList.ItemCount > 0)
+            {
+                GameList.SelectedIndex = oldIndex < GameList.ItemCount ? oldIndex : 0;
+            }
+        }
+
+        public async void BrowseTheme(object sender, RoutedEventArgs e)
+        {
+            var dialog = new OpenFileDialog()
+            {
+                Title = LocaleManager.Instance[LocaleKeys.SettingsSelectThemeFileDialogTitle],
+                AllowMultiple = false
+            };
+
+            dialog.Filters.Add(new FileDialogFilter() { Extensions = { "xaml" }, Name = LocaleManager.Instance[LocaleKeys.SettingsXamlThemeFile] });
+
+            if (Avalonia.Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+            {
+                var file = await dialog.ShowAsync(desktop.MainWindow);
+
+                if (file != null && file.Length > 0)
+                {
+                    ViewModel.CustomThemePath = file[0];
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
index e25500828..851e9b5b3 100644
--- a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
+++ b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml
@@ -6,13 +6,12 @@
     xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
     xmlns:window="clr-namespace:Ryujinx.Ava.UI.Windows"
+    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
+    xmlns:settings="clr-namespace:Ryujinx.Ava.UI.Views.Settings"
     xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
     Width="1100"
     Height="768"
-    d:DesignWidth="800"
-    d:DesignHeight="950"
     MinWidth="800"
     MinHeight="480"
     WindowStartupLocation="CenterOwner"
@@ -23,9 +22,6 @@
     <Design.DataContext>
         <viewModels:SettingsViewModel />
     </Design.DataContext>
-    <Window.Resources>
-        <helpers:KeyValueConverter x:Key="Key" />
-    </Window.Resources>
     <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="600">
         <Grid.RowDefinitions>
             <RowDefinition Height="Auto" />
@@ -38,871 +34,15 @@
             IsVisible="False"
             KeyboardNavigation.IsTabStop="False"/>
         <Grid Name="Pages" IsVisible="False" Grid.Row="2">
-            <ScrollViewer Name="UiPage"
-                          Margin="0,0,2,0"
-                          HorizontalAlignment="Stretch"
-                          VerticalAlignment="Stretch"
-                          HorizontalScrollBarVisibility="Disabled"
-                          VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel
-                        Margin="10,5"
-                        HorizontalAlignment="Stretch"
-                        Orientation="Vertical"
-                        Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralGeneral}" />
-                        <StackPanel Margin="10,0,0,0" Orientation="Vertical">
-                            <CheckBox IsChecked="{Binding EnableDiscordIntegration}">
-                                <TextBlock VerticalAlignment="Center"
-                                           ToolTip.Tip="{locale:Locale ToggleDiscordTooltip}"
-                                           Text="{locale:Locale SettingsTabGeneralEnableDiscordRichPresence}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding CheckUpdatesOnStart}">
-                                <TextBlock Text="{locale:Locale SettingsTabGeneralCheckUpdatesOnLaunch}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding ShowConfirmExit}">
-                                <TextBlock Text="{locale:Locale SettingsTabGeneralShowConfirmExitDialog}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding HideCursorOnIdle}">
-                                <TextBlock Text="{locale:Locale SettingsTabGeneralHideCursorOnIdle}" />
-                            </CheckBox>
-                        </StackPanel>
-                        <Separator Height="1" />
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralGameDirectories}" />
-                        <StackPanel
-                            Margin="10,0,0,0"
-                            HorizontalAlignment="Stretch"
-                            Orientation="Vertical"
-                            Spacing="10">
-                            <ListBox
-                                Name="GameList"
-                                MinHeight="250"
-                                Items="{Binding GameDirectories}" />
-                            <Grid HorizontalAlignment="Stretch">
-                                <Grid.ColumnDefinitions>
-                                    <ColumnDefinition Width="*" />
-                                    <ColumnDefinition Width="Auto" />
-                                    <ColumnDefinition Width="Auto" />
-                                </Grid.ColumnDefinitions>
-                                <TextBox
-                                    Name="PathBox"
-                                    Margin="0"
-                                    ToolTip.Tip="{locale:Locale AddGameDirBoxTooltip}"
-                                    VerticalAlignment="Stretch" />
-                                <Button
-                                    Name="AddButton"
-                                    Grid.Column="1"
-                                    MinWidth="90"
-                                    Margin="10,0,0,0"
-                                    ToolTip.Tip="{locale:Locale AddGameDirTooltip}"
-                                    Click="AddButton_OnClick">
-                                    <TextBlock HorizontalAlignment="Center"
-                                               Text="{locale:Locale SettingsTabGeneralAdd}" />
-                                </Button>
-                                <Button
-                                    Name="RemoveButton"
-                                    Grid.Column="2"
-                                    MinWidth="90"
-                                    Margin="10,0,0,0"
-                                    ToolTip.Tip="{locale:Locale RemoveGameDirTooltip}"
-                                    Click="RemoveButton_OnClick">
-                                    <TextBlock HorizontalAlignment="Center"
-                                               Text="{locale:Locale SettingsTabGeneralRemove}" />
-                                </Button>
-                            </Grid>
-                        </StackPanel>
-                        <Separator Height="1" />
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGeneralTheme}" />
-                        <Grid Margin="10,0,0,0">
-                            <Grid.ColumnDefinitions>
-                                <ColumnDefinition Width="Auto" />
-                                <ColumnDefinition />
-                                <ColumnDefinition Width="Auto" />
-                            </Grid.ColumnDefinitions>
-                            <Grid.RowDefinitions>
-                                <RowDefinition />
-                                <RowDefinition />
-                                <RowDefinition />
-                            </Grid.RowDefinitions>
-                            <CheckBox IsChecked="{Binding EnableCustomTheme}"
-                                      ToolTip.Tip="{locale:Locale CustomThemeCheckTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabGeneralThemeEnableCustomTheme}" />
-                            </CheckBox>
-                            <TextBlock VerticalAlignment="Center"
-                                       Margin="0,10,0,0"
-                                       Grid.Row="1"
-                                       Text="{locale:Locale SettingsTabGeneralThemeCustomTheme}"
-                                       ToolTip.Tip="{locale:Locale CustomThemePathTooltip}" />
-                            <TextBox Margin="0,10,0,0"
-                                     Grid.Row="1"
-                                     Grid.Column="1"
-                                     Text="{Binding CustomThemePath}" />
-                            <Button Grid.Row="1"
-                                    Grid.Column="2"
-                                    Margin="10,10,0,0"
-                                    Command="{ReflectionBinding BrowseTheme}"
-                                    ToolTip.Tip="{locale:Locale CustomThemeBrowseTooltip}"
-                                    Content="{locale:Locale ButtonBrowse}" />
-                            <TextBlock VerticalAlignment="Center"
-                                       Margin="0,10,0,0"
-                                       Grid.Row="2"
-                                       Text="{locale:Locale SettingsTabGeneralThemeBaseStyle}" />
-                            <ComboBox VerticalAlignment="Center"
-                                      Margin="0,10,0,0"
-                                      Grid.Column="1"
-                                      Grid.Row="2"
-                                      MinWidth="100"
-                                      SelectedIndex="{Binding BaseStyleIndex}">
-                                <ComboBoxItem>
-                                    <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleLight}" />
-                                </ComboBoxItem>
-                                <ComboBoxItem>
-                                    <TextBlock Text="{locale:Locale SettingsTabGeneralThemeBaseStyleDark}" />
-                                </ComboBoxItem>
-                            </ComboBox>
-                        </Grid>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer Name="InputPage"
-                          HorizontalAlignment="Stretch"
-                          VerticalAlignment="Stretch"
-                          Padding="0,0,2,0"
-                          HorizontalScrollBarVisibility="Disabled"
-                          VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel Margin="4" Orientation="Vertical">
-                        <StackPanel Orientation="Horizontal">
-                            <CheckBox Margin="5,0"
-                                      ToolTip.Tip="{locale:Locale DockModeToggleTooltip}"
-                                      IsChecked="{Binding EnableDockedMode}">
-                                <TextBlock VerticalAlignment="Center"
-                                           Text="{locale:Locale SettingsTabInputEnableDockedMode}" />
-                            </CheckBox>
-                            <CheckBox Margin="5,0"
-                                      ToolTip.Tip="{locale:Locale DirectKeyboardTooltip}"
-                                      IsChecked="{Binding EnableKeyboard}">
-                                <TextBlock Text="{locale:Locale SettingsTabInputDirectKeyboardAccess}" />
-                            </CheckBox>
-                            <CheckBox Margin="5,0"
-                                      ToolTip.Tip="{locale:Locale DirectMouseTooltip}"
-                                      IsChecked="{Binding EnableMouse}">
-                                <TextBlock Text="{locale:Locale SettingsTabInputDirectMouseAccess}" />
-                            </CheckBox>
-                        </StackPanel>
-                        <window:ControllerSettingsWindow Name="ControllerSettings" Margin="0,0,0,0" MinHeight="600" />
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer Name="HotkeysPage"
-                          HorizontalAlignment="Stretch"
-                          VerticalAlignment="Stretch"
-                          HorizontalScrollBarVisibility="Disabled"
-                          VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel Margin="10,5" Orientation="Vertical" Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabHotkeysHotkeys}" />
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysToggleVsyncHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.ToggleVsync, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysScreenshotHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.Screenshot, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysShowUiHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.ShowUi, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysPauseHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.Pause, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysToggleMuteHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.ToggleMute, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysResScaleUpHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.ResScaleUp, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysResScaleDownHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.ResScaleDown, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysVolumeUpHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.VolumeUp, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center" Text="{locale:Locale SettingsTabHotkeysVolumeDownHotkey}" Width="230" />
-                            <ToggleButton Width="90" Height="27" Checked="Button_Checked" Unchecked="Button_Unchecked">
-                                <TextBlock
-                                    Text="{Binding KeyboardHotkeys.VolumeDown, Mode=TwoWay, Converter={StaticResource Key}}"
-                                    TextAlignment="Center" />
-                            </ToggleButton>
-                        </StackPanel>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer Name="SystemPage"
-                          HorizontalAlignment="Stretch"
-                          VerticalAlignment="Stretch"
-                          HorizontalScrollBarVisibility="Disabled"
-                          VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel
-                        Margin="10,5"
-                        HorizontalAlignment="Stretch"
-                        Orientation="Vertical"
-                        Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabSystemCore}" />
-                        <StackPanel Margin="10,0,0,0" Orientation="Vertical">
-                            <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           Text="{locale:Locale SettingsTabSystemSystemRegion}"
-                                           Width="250" />
-                                <ComboBox SelectedIndex="{Binding Region}"
-                                          ToolTip.Tip="{locale:Locale RegionTooltip}"
-                                          HorizontalContentAlignment="Left"
-                                          Width="350">
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionJapan}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionUSA}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionEurope}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionAustralia}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionChina}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionKorea}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemRegionTaiwan}" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                            </StackPanel>
-                            <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           Text="{locale:Locale SettingsTabSystemSystemLanguage}"
-                                           ToolTip.Tip="{locale:Locale LanguageTooltip}"
-                                           Width="250" />
-                                <ComboBox SelectedIndex="{Binding Language}"
-                                          ToolTip.Tip="{locale:Locale LanguageTooltip}"
-                                          HorizontalContentAlignment="Left"
-                                          Width="350">
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageJapanese}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemSystemLanguageAmericanEnglish}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageFrench}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageGerman}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageItalian}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageSpanish}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageChinese}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageKorean}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageDutch}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguagePortuguese}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageRussian}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemSystemLanguageTaiwanese}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemSystemLanguageBritishEnglish}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemSystemLanguageCanadianFrench}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemSystemLanguageLatinAmericanSpanish}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemSystemLanguageSimplifiedChinese}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemSystemLanguageTraditionalChinese}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemSystemLanguageBrazilianPortuguese}" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                            </StackPanel>
-                            <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           Text="{locale:Locale SettingsTabSystemSystemTimeZone}"
-                                           ToolTip.Tip="{locale:Locale TimezoneTooltip}"
-                                           Width="250" />
-                                <AutoCompleteBox
-                                    Name="TimeZoneBox"
-                                    Width="350"
-                                    MaxDropDownHeight="500"
-                                    FilterMode="Contains"
-                                    Items="{Binding TimeZones}"
-                                    SelectionChanged="TimeZoneBox_OnSelectionChanged"
-                                    Text="{Binding Path=TimeZone, Mode=OneWay}"
-                                    TextChanged="TimeZoneBox_OnTextChanged"
-                                    ValueMemberBinding="{ReflectionBinding TzMultiBinding}"
-                                    ToolTip.Tip="{locale:Locale TimezoneTooltip}" />
-                            </StackPanel>
-                            <StackPanel Margin="0,0,0,10" Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           Text="{locale:Locale SettingsTabSystemSystemTime}"
-                                           ToolTip.Tip="{locale:Locale TimeTooltip}"
-                                           Width="250"/>
-                                <DatePicker VerticalAlignment="Center" SelectedDate="{Binding DateOffset}"
-                                            ToolTip.Tip="{locale:Locale TimeTooltip}"
-                                            Width="350" />
-                            </StackPanel>
-                            <StackPanel Margin="250,0,0,10" Orientation="Horizontal">
-                                <TimePicker
-                                    VerticalAlignment="Center"
-                                    ClockIdentifier="24HourClock"
-                                    SelectedTime="{Binding TimeOffset}"
-                                    Width="350"
-                                    ToolTip.Tip="{locale:Locale TimeTooltip}" />
-                            </StackPanel>
-                            <CheckBox IsChecked="{Binding EnableVsync}">
-                                <TextBlock Text="{locale:Locale SettingsTabSystemEnableVsync}"
-                                           ToolTip.Tip="{locale:Locale VSyncToggleTooltip}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding EnableFsIntegrityChecks}">
-                                <TextBlock Text="{locale:Locale SettingsTabSystemEnableFsIntegrityChecks}"
-                                           ToolTip.Tip="{locale:Locale FsIntegrityToggleTooltip}" />
-                            </CheckBox>
-                        </StackPanel>
-                        <Separator Height="1" />
-                        <StackPanel Orientation="Horizontal">
-                            <TextBlock Classes="h1" Text="{locale:Locale SettingsTabSystemHacks}" />
-                            <TextBlock Text="{locale:Locale SettingsTabSystemHacksNote}" />
-                        </StackPanel>
-                        <StackPanel
-                            Margin="10,0,0,0"
-                            HorizontalAlignment="Stretch"
-                            Orientation="Vertical">
-                            <CheckBox IsChecked="{Binding ExpandDramSize}"
-                                      ToolTip.Tip="{locale:Locale DRamTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabSystemExpandDramSize}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding IgnoreMissingServices}"
-                                      ToolTip.Tip="{locale:Locale IgnoreMissingServicesTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabSystemIgnoreMissingServices}" />
-                            </CheckBox>
-                        </StackPanel>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer
-                Name="CpuPage"
-                HorizontalAlignment="Stretch"
-                VerticalAlignment="Stretch"
-                HorizontalScrollBarVisibility="Disabled"
-                VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel
-                        Margin="10,5"
-                        HorizontalAlignment="Stretch"
-                        Orientation="Vertical"
-                        Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabCpuCache}" />
-                        <StackPanel
-                            Margin="10,0,0,0"
-                            HorizontalAlignment="Stretch"
-                            Orientation="Vertical">
-                            <CheckBox IsChecked="{Binding EnablePptc}">
-                                <TextBlock Text="{locale:Locale SettingsTabSystemEnablePptc}"
-                                           ToolTip.Tip="{locale:Locale PptcToggleTooltip}" />
-                            </CheckBox>
-                        </StackPanel>
-                        <Separator Height="1" />
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabCpuMemory}" />
-                        <StackPanel
-                            Margin="10,0,0,0"
-                            HorizontalAlignment="Stretch"
-                            Orientation="Vertical">
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           Text="{locale:Locale SettingsTabSystemMemoryManagerMode}"
-                                           ToolTip.Tip="{locale:Locale MemoryManagerTooltip}"
-                                           Width="250" />
-                                <ComboBox SelectedIndex="{Binding MemoryMode}"
-                                          ToolTip.Tip="{locale:Locale MemoryManagerTooltip}"
-                                          HorizontalContentAlignment="Left"
-                                          Width="350">
-                                    <ComboBoxItem
-                                        ToolTip.Tip="{locale:Locale MemoryManagerSoftwareTooltip}">
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemMemoryManagerModeSoftware}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem
-                                        ToolTip.Tip="{locale:Locale MemoryManagerHostTooltip}">
-                                        <TextBlock Text="{locale:Locale SettingsTabSystemMemoryManagerModeHost}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem
-                                        ToolTip.Tip="{locale:Locale MemoryManagerUnsafeTooltip}">
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabSystemMemoryManagerModeHostUnchecked}" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                            </StackPanel>
-                        </StackPanel>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer
-                Name="GraphicsPage"
-                HorizontalAlignment="Stretch"
-                VerticalAlignment="Stretch"
-                HorizontalScrollBarVisibility="Disabled"
-                VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel
-                        Margin="10,5"
-                        HorizontalAlignment="Stretch"
-                        Orientation="Vertical"
-                        Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsAPI}" />
-                        <StackPanel Margin="10,0,0,0" Orientation="Vertical" Spacing="10">
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                        ToolTip.Tip="{locale:Locale SettingsTabGraphicsBackendTooltip}"
-                                        Text="{locale:Locale SettingsTabGraphicsBackend}"
-                                        Width="250" />
-                                <ComboBox Width="350"
-                                        HorizontalContentAlignment="Left"
-                                        ToolTip.Tip="{locale:Locale SettingsTabGraphicsBackendTooltip}"
-                                        SelectedIndex="{Binding GraphicsBackendIndex}">
-                                    <ComboBoxItem IsVisible="{Binding IsVulkanAvailable}">
-                                        <TextBlock Text="Vulkan" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem IsEnabled="{Binding IsOpenGLAvailable}">
-                                        <TextBlock Text="OpenGL" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal" IsVisible="{Binding IsVulkanSelected}">
-                                <TextBlock VerticalAlignment="Center"
-                                        ToolTip.Tip="{locale:Locale SettingsTabGraphicsPreferredGpuTooltip}"
-                                        Text="{locale:Locale SettingsTabGraphicsPreferredGpu}"
-                                        Width="250" />
-                                <ComboBox Width="350"
-                                        HorizontalContentAlignment="Left"
-                                        ToolTip.Tip="{locale:Locale SettingsTabGraphicsPreferredGpuTooltip}"
-                                        SelectedIndex="{Binding PreferredGpuIndex}"
-                                        Items="{Binding AvailableGpus}"/>
-                            </StackPanel>
-                        </StackPanel>
-                        <Separator Height="1" />
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsFeatures}" />
-                        <StackPanel Margin="10,0,0,0" Orientation="Vertical" Spacing="10">
-                            <StackPanel Orientation="Vertical">
-                                <CheckBox IsChecked="{Binding EnableShaderCache}"
-                                    ToolTip.Tip="{locale:Locale ShaderCacheToggleTooltip}">
-                                    <TextBlock Text="{locale:Locale SettingsTabGraphicsEnableShaderCache}" />
-                                </CheckBox>
-                                <CheckBox IsChecked="{Binding EnableTextureRecompression}"
-                                    ToolTip.Tip="{locale:Locale SettingsEnableTextureRecompressionTooltip}">
-                                    <TextBlock Text="{locale:Locale SettingsEnableTextureRecompression}" />
-                                </CheckBox>
-                                <CheckBox IsChecked="{Binding EnableMacroHLE}"
-                                    ToolTip.Tip="{locale:Locale SettingsEnableMacroHLETooltip}">
-                                    <TextBlock Text="{locale:Locale SettingsEnableMacroHLE}" />
-                                </CheckBox>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           ToolTip.Tip="{locale:Locale ResolutionScaleTooltip}"
-                                           Text="{locale:Locale SettingsTabGraphicsResolutionScale}"
-                                           Width="250" />
-                                <ComboBox SelectedIndex="{Binding ResolutionScale}"
-                                          Width="350"
-                                          HorizontalContentAlignment="Left"
-                                          ToolTip.Tip="{locale:Locale ResolutionScaleTooltip}">
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScaleCustom}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScaleNative}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale2x}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale3x}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsResolutionScale4x}" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                                <ui:NumberBox
-                                    Margin="10,0,0,0"
-                                    ToolTip.Tip="{locale:Locale ResolutionScaleEntryTooltip}"
-                                    MinWidth="150"
-                                    SmallChange="0.1"
-                                    LargeChange="1"
-                                    SimpleNumberFormat="F2"
-                                    SpinButtonPlacementMode="Inline"
-                                    IsVisible="{Binding IsCustomResolutionScaleActive}"
-                                    Maximum="100"
-                                    Minimum="0.1"
-                                    Value="{Binding CustomResolutionScale}" />
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           ToolTip.Tip="{locale:Locale AnisotropyTooltip}"
-                                           Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering}"
-                                           Width="250" />
-                                <ComboBox SelectedIndex="{Binding MaxAnisotropy}"
-                                          Width="350"
-                                          HorizontalContentAlignment="Left"
-                                          ToolTip.Tip="{locale:Locale AnisotropyTooltip}">
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabGraphicsAnisotropicFilteringAuto}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering2x}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering4x}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering8x}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock
-                                            Text="{locale:Locale SettingsTabGraphicsAnisotropicFiltering16x}" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                            </StackPanel>
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           ToolTip.Tip="{locale:Locale AspectRatioTooltip}"
-                                           Text="{locale:Locale SettingsTabGraphicsAspectRatio}"
-                                           Width="250" />
-                                <ComboBox SelectedIndex="{Binding AspectRatio}"
-                                          Width="350"
-                                          HorizontalContentAlignment="Left"
-                                          ToolTip.Tip="{locale:Locale AspectRatioTooltip}">
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio4x3}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio16x9}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio16x10}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio21x9}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatio32x9}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale SettingsTabGraphicsAspectRatioStretch}" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                            </StackPanel>
-                        </StackPanel>
-                        <StackPanel
-                            Margin="10,0,0,0"
-                            HorizontalAlignment="Stretch"
-                            Orientation="Vertical"
-                            Spacing="10">
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           ToolTip.Tip="{locale:Locale GraphicsBackendThreadingTooltip}"
-                                           Text="{locale:Locale SettingsTabGraphicsBackendMultithreading}"
-                                           Width="250" />
-                                <ComboBox Width="350"
-                                          HorizontalContentAlignment="Left"
-                                          ToolTip.Tip="{locale:Locale GalThreadingTooltip}"
-                                          SelectedIndex="{Binding GraphicsBackendMultithreadingIndex}">
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale CommonAuto}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale CommonOff}" />
-                                    </ComboBoxItem>
-                                    <ComboBoxItem>
-                                        <TextBlock Text="{locale:Locale CommonOn}" />
-                                    </ComboBoxItem>
-                                </ComboBox>
-                            </StackPanel>
-                        </StackPanel>
-                        <Separator Height="1" />
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabGraphicsDeveloperOptions}" />
-                        <StackPanel
-                            Margin="10,0,0,0"
-                            HorizontalAlignment="Stretch"
-                            Orientation="Vertical"
-                            Spacing="10">
-                            <StackPanel Orientation="Horizontal">
-                                <TextBlock VerticalAlignment="Center"
-                                           ToolTip.Tip="{locale:Locale ShaderDumpPathTooltip}"
-                                           Text="{locale:Locale SettingsTabGraphicsShaderDumpPath}"
-                                           Width="250" />
-                                <TextBox Text="{Binding ShaderDumpPath}"
-                                         Width="350"
-                                         ToolTip.Tip="{locale:Locale ShaderDumpPathTooltip}" />
-                            </StackPanel>
-                        </StackPanel>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer
-                Name="AudioPage"
-                HorizontalAlignment="Stretch"
-                VerticalAlignment="Stretch"
-                HorizontalScrollBarVisibility="Disabled"
-                VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel
-                        Margin="10,5"
-                        HorizontalAlignment="Stretch"
-                        Orientation="Vertical"
-                        Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabAudio}" />
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center"
-                                       Text="{locale:Locale SettingsTabSystemAudioBackend}"
-                                       ToolTip.Tip="{locale:Locale AudioBackendTooltip}"
-                                       Width="250" />
-                            <ComboBox SelectedIndex="{Binding AudioBackend}"
-                                      Width="350"
-                                      HorizontalContentAlignment="Left">
-                                <ComboBoxItem>
-                                    <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendDummy}" />
-                                </ComboBoxItem>
-                                <ComboBoxItem IsEnabled="{Binding IsOpenAlEnabled}">
-                                    <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendOpenAL}" />
-                                </ComboBoxItem>
-                                <ComboBoxItem IsEnabled="{Binding IsSoundIoEnabled}">
-                                    <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendSoundIO}" />
-                                </ComboBoxItem>
-                                <ComboBoxItem IsEnabled="{Binding IsSDL2Enabled}">
-                                    <TextBlock Text="{locale:Locale SettingsTabSystemAudioBackendSDL2}" />
-                                </ComboBoxItem>
-                            </ComboBox>
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <TextBlock VerticalAlignment="Center"
-                                       Text="{locale:Locale SettingsTabSystemAudioVolume}"
-                                       ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
-                                       Width="250" />
-                            <ui:NumberBox Value="{Binding Volume}"
-                                    ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
-                                    Width="350"
-                                    SmallChange="1"
-                                    LargeChange="10"
-                                    SimpleNumberFormat="F0"
-                                    SpinButtonPlacementMode="Inline"
-                                    Minimum="0"
-                                    Maximum="100" />
-                        </StackPanel>
-                        <StackPanel Margin="10,0,0,0" Orientation="Horizontal">
-                            <Slider Value="{Binding Volume}"
-                                    Margin="250,0,0,0"
-                                    ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
-                                    Minimum="0"
-                                    Maximum="100"
-                                    SmallChange="5"
-                                    TickFrequency="5"
-                                    IsSnapToTickEnabled="True"
-                                    LargeChange="10"
-                                    Width="350" />
-                        </StackPanel>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer
-                Name="NetworkPage"
-                HorizontalAlignment="Stretch"
-                VerticalAlignment="Stretch"
-                HorizontalScrollBarVisibility="Disabled"
-                VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel
-                        Margin="10,5"
-                        HorizontalAlignment="Stretch"
-                        Orientation="Vertical"
-                        Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabNetworkConnection}" />
-                        <CheckBox Margin="10,0,0,0" IsChecked="{Binding EnableInternetAccess}">
-                            <TextBlock Text="{locale:Locale SettingsTabSystemEnableInternetAccess}"
-                                       ToolTip.Tip="{locale:Locale EnableInternetAccessTooltip}" />
-                        </CheckBox>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
-            <ScrollViewer
-                Name="LoggingPage"
-                HorizontalAlignment="Stretch"
-                VerticalAlignment="Stretch"
-                HorizontalScrollBarVisibility="Disabled"
-                VerticalScrollBarVisibility="Auto">
-                <Border Classes="settings">
-                    <StackPanel
-                        Margin="10,5"
-                        HorizontalAlignment="Stretch"
-                        Orientation="Vertical"
-                        Spacing="10">
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabLoggingLogging}" />
-                        <StackPanel Margin="10,0,0,0" Orientation="Vertical">
-                            <CheckBox IsChecked="{Binding EnableFileLog}"
-                                      ToolTip.Tip="{locale:Locale FileLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableLoggingToFile}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding EnableStub}"
-                                      ToolTip.Tip="{locale:Locale StubLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableStubLogs}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding EnableInfo}"
-                                      ToolTip.Tip="{locale:Locale InfoLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableInfoLogs}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding EnableWarn}"
-                                      ToolTip.Tip="{locale:Locale WarnLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableWarningLogs}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding EnableError}"
-                                      ToolTip.Tip="{locale:Locale ErrorLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableErrorLogs}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding EnableTrace}"
-                                      ToolTip.Tip="{locale:Locale TraceLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableTraceLogs}" />
-                            </CheckBox>
-                            <CheckBox IsChecked="{Binding EnableGuest}"
-                                      ToolTip.Tip="{locale:Locale GuestLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableGuestLogs}" />
-                            </CheckBox>
-                        </StackPanel>
-                        <Separator Height="1" />
-                        <TextBlock Classes="h1" Text="{locale:Locale SettingsTabLoggingDeveloperOptions}" />
-                        <StackPanel
-                            Margin="10,0,0,0"
-                            HorizontalAlignment="Stretch"
-                            Orientation="Vertical"
-                            Spacing="10">
-                            <StackPanel Orientation="Vertical">
-                                <CheckBox IsChecked="{Binding EnableDebug}"
-                                        ToolTip.Tip="{locale:Locale DebugLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableDebugLogs}" />
-                                </CheckBox>
-                                <CheckBox IsChecked="{Binding EnableFsAccessLog}"
-                                        ToolTip.Tip="{locale:Locale FileAccessLogTooltip}">
-                                <TextBlock Text="{locale:Locale SettingsTabLoggingEnableFsAccessLogs}" />
-                                </CheckBox>
-                                <StackPanel Margin="0,10,0,0" Orientation="Horizontal" VerticalAlignment="Stretch">
-                                    <TextBlock VerticalAlignment="Center"
-                                            ToolTip.Tip="{locale:Locale FSAccessLogModeTooltip}"
-                                            Text="{locale:Locale SettingsTabLoggingFsGlobalAccessLogMode}"
-                                            Width="285" />
-                                    <ui:NumberBox
-                                        Maximum="3"
-                                        Minimum="0"
-                                        Width="150"
-                                        SpinButtonPlacementMode="Inline"
-                                        SmallChange="1"
-                                        LargeChange="1"
-                                        Value="{Binding FsGlobalAccessLogMode}" />
-                                </StackPanel>
-                                <StackPanel Margin="0,10,0,0" Orientation="Horizontal">
-                                    <TextBlock VerticalAlignment="Center"
-                                            Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevel}"
-                                            ToolTip.Tip="{locale:Locale OpenGlLogLevel}"
-                                            Width="285" />
-                                    <ComboBox SelectedIndex="{Binding OpenglDebugLevel}"
-                                            Width="150"
-                                            HorizontalContentAlignment="Left"
-                                            ToolTip.Tip="{locale:Locale OpenGlLogLevel}">
-                                        <ComboBoxItem>
-                                            <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelNone}" />
-                                        </ComboBoxItem>
-                                        <ComboBoxItem>
-                                            <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelError}" />
-                                        </ComboBoxItem>
-                                        <ComboBoxItem>
-                                            <TextBlock
-                                                Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelPerformance}" />
-                                        </ComboBoxItem>
-                                        <ComboBoxItem>
-                                            <TextBlock Text="{locale:Locale SettingsTabLoggingGraphicsBackendLogLevelAll}" />
-                                        </ComboBoxItem>
-                                    </ComboBox>
-                                </StackPanel>
-                            </StackPanel>
-                        </StackPanel>
-                    </StackPanel>
-                </Border>
-            </ScrollViewer>
+            <settings:SettingsUIView Name="UiPage" />
+            <settings:SettingsInputView Name="InputPage" />
+            <settings:SettingsHotkeysView Name="HotkeysPage" />
+            <settings:SettingsSystemView Name="SystemPage" />
+            <settings:SettingsCPUView Name="CpuPage" />
+            <settings:SettingsGraphicsView Name="GraphicsPage" />
+            <settings:SettingsAudioView Name="AudioPage" />
+            <settings:SettingsNetworkView Name="NetworkPage" />
+            <settings:SettingsLoggingView Name="LoggingPage" />
         </Grid>
         <ui:NavigationView Grid.Row="1"
                            IsSettingsVisible="False"
@@ -962,7 +102,7 @@
             Spacing="10"
             Orientation="Horizontal"
             HorizontalAlignment="Right"
-            ReverseOrder="{ReflectionBinding IsMacOS}">
+            ReverseOrder="{Binding IsMacOS}">
             <Button 
                 HotKey="Enter" 
                 Classes="accent"
diff --git a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs
index ae489b86a..bdf7e94d8 100644
--- a/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs
+++ b/Ryujinx.Ava/UI/Windows/SettingsWindow.axaml.cs
@@ -1,49 +1,29 @@
-using Avalonia.Controls;
-using Avalonia.Controls.Primitives;
-using Avalonia.Data;
-using Avalonia.Data.Converters;
-using Avalonia.Input;
-using Avalonia.Interactivity;
 using FluentAvalonia.Core;
 using FluentAvalonia.UI.Controls;
 using Ryujinx.Ava.Common.Locale;
-using Ryujinx.Ava.UI.Controls;
-using Ryujinx.Ava.UI.Helpers;
 using Ryujinx.Ava.UI.ViewModels;
 using Ryujinx.HLE.FileSystem;
-using Ryujinx.Input;
-using Ryujinx.Input.Assigner;
 using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
+using System.ComponentModel;
 
 namespace Ryujinx.Ava.UI.Windows
 {
     public partial class SettingsWindow : StyleableWindow
     {
-        private ButtonKeyAssigner _currentAssigner;
-
         internal SettingsViewModel ViewModel { get; set; }
 
         public SettingsWindow(VirtualFileSystem virtualFileSystem, ContentManager contentManager)
         {
             Title = $"Ryujinx {Program.Version} - {LocaleManager.Instance[LocaleKeys.Settings]}";
 
-            ViewModel   = new SettingsViewModel(virtualFileSystem, contentManager, this);
+            ViewModel   = new SettingsViewModel(virtualFileSystem, contentManager);
             DataContext = ViewModel;
 
+            ViewModel.CloseWindow += Close;
+            ViewModel.SaveSettingsEvent += SaveSettings;
+
             InitializeComponent();
             Load();
-
-            FuncMultiValueConverter<string, string> converter = new(parts => string.Format("{0}  {1}   {2}", parts.ToArray()).Trim());
-            MultiBinding tzMultiBinding = new() { Converter = converter };
-            tzMultiBinding.Bindings.Add(new Binding("UtcDifference"));
-            tzMultiBinding.Bindings.Add(new Binding("Location"));
-            tzMultiBinding.Bindings.Add(new Binding("Abbreviation"));
-
-            TimeZoneBox.ValueMemberBinding = tzMultiBinding;
         }
 
         public SettingsWindow()
@@ -55,6 +35,16 @@ namespace Ryujinx.Ava.UI.Windows
             Load();
         }
 
+        public void SaveSettings()
+        {
+            InputPage.ControllerSettings?.SaveCurrentProfile();
+
+            if (Owner is MainWindow window && ViewModel.DirectoryChanged)
+            {
+                window.ViewModel.LoadApplications();
+            }
+        }
+
         private void Load()
         {
             Pages.Children.Clear();
@@ -62,152 +52,52 @@ namespace Ryujinx.Ava.UI.Windows
             NavPanel.SelectedItem = NavPanel.MenuItems.ElementAt(0);
         }
 
-        private void Button_Checked(object sender, RoutedEventArgs e)
-        {
-            if (sender is ToggleButton button)
-            {
-                if (_currentAssigner != null && button == _currentAssigner.ToggledButton)
-                {
-                    return;
-                }
-
-                if (_currentAssigner == null && (bool)button.IsChecked)
-                {
-                    _currentAssigner = new ButtonKeyAssigner(button);
-
-                    FocusManager.Instance.Focus(this, NavigationMethod.Pointer);
-
-                    PointerPressed += MouseClick;
-
-                    IKeyboard       keyboard = (IKeyboard)ViewModel.AvaloniaKeyboardDriver.GetGamepad(ViewModel.AvaloniaKeyboardDriver.GamepadsIds[0]);
-                    IButtonAssigner assigner = new KeyboardKeyAssigner(keyboard);
-
-                    _currentAssigner.GetInputAndAssign(assigner);
-                }
-                else
-                {
-                    if (_currentAssigner != null)
-                    {
-                        ToggleButton oldButton = _currentAssigner.ToggledButton;
-
-                        _currentAssigner.Cancel();
-                        _currentAssigner = null;
-
-                        button.IsChecked = false;
-                    }
-                }
-            }
-        }
-
-        private void Button_Unchecked(object sender, RoutedEventArgs e)
-        {
-            _currentAssigner?.Cancel();
-            _currentAssigner = null;
-        }
-
-        private void MouseClick(object sender, PointerPressedEventArgs e)
-        {
-            bool shouldUnbind = false;
-
-            if (e.GetCurrentPoint(this).Properties.IsMiddleButtonPressed)
-            {
-                shouldUnbind = true;
-            }
-
-            _currentAssigner?.Cancel(shouldUnbind);
-
-            PointerPressed -= MouseClick;
-        }
-
         private void NavPanelOnSelectionChanged(object sender, NavigationViewSelectionChangedEventArgs e)
         {
-            if (e.SelectedItem is NavigationViewItem navitem)
+            if (e.SelectedItem is NavigationViewItem navItem && navItem.Tag is not null)
             {
-                NavPanel.Content = navitem.Tag.ToString() switch
+                switch (navItem.Tag.ToString())
                 {
-                    "UiPage"       => UiPage,
-                    "InputPage"    => InputPage,
-                    "HotkeysPage"  => HotkeysPage,
-                    "SystemPage"   => SystemPage,
-                    "CpuPage"      => CpuPage,
-                    "GraphicsPage" => GraphicsPage,
-                    "AudioPage"    => AudioPage,
-                    "NetworkPage"  => NetworkPage,
-                    "LoggingPage"  => LoggingPage,
-                    _              => throw new NotImplementedException()
-                };
-            }
-        }
-
-        private async void AddButton_OnClick(object sender, RoutedEventArgs e)
-        {
-            string path = PathBox.Text;
-
-            if (!string.IsNullOrWhiteSpace(path) && Directory.Exists(path) && !ViewModel.GameDirectories.Contains(path))
-            {
-                ViewModel.GameDirectories.Add(path);
-                ViewModel.DirectoryChanged = true;
-            }
-            else
-            {
-                path = await new OpenFolderDialog().ShowAsync(this);
-
-                if (!string.IsNullOrWhiteSpace(path))
-                {
-                    ViewModel.GameDirectories.Add(path);
-                    ViewModel.DirectoryChanged = true;
+                    case "UiPage":
+                        UiPage.ViewModel = ViewModel;
+                        NavPanel.Content = UiPage;
+                        break;
+                    case "InputPage":
+                        NavPanel.Content = InputPage;
+                        break;
+                    case "HotkeysPage":
+                        NavPanel.Content = HotkeysPage;
+                        break;
+                    case "SystemPage":
+                        SystemPage.ViewModel = ViewModel;
+                        NavPanel.Content = SystemPage;
+                        break;
+                    case "CpuPage":
+                        NavPanel.Content = CpuPage;
+                        break;
+                    case "GraphicsPage":
+                        NavPanel.Content = GraphicsPage;
+                        break;
+                    case "AudioPage":
+                        NavPanel.Content = AudioPage;
+                        break;
+                    case "NetworkPage":
+                        NavPanel.Content = NetworkPage;
+                        break;
+                    case "LoggingPage":
+                        NavPanel.Content = LoggingPage;
+                        break;
+                    default:
+                        throw new NotImplementedException();
                 }
             }
         }
 
-        private void RemoveButton_OnClick(object sender, RoutedEventArgs e)
+        protected override void OnClosing(CancelEventArgs e)
         {
-            int oldIndex = GameList.SelectedIndex;
-
-            foreach (string path in new List<string>(GameList.SelectedItems.Cast<string>()))
-            {
-                ViewModel.GameDirectories.Remove(path);
-                ViewModel.DirectoryChanged = true;
-            }
-
-            if (GameList.ItemCount > 0)
-            {
-                GameList.SelectedIndex = oldIndex < GameList.ItemCount ? oldIndex : 0;
-            }
-        }
-
-        private void TimeZoneBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            if (e.AddedItems != null && e.AddedItems.Count > 0)
-            {
-                if (e.AddedItems[0] is TimeZone timeZone)
-                {
-                    e.Handled = true;
-
-                    ViewModel.ValidateAndSetTimeZone(timeZone.Location);
-                }
-            }
-        }
-
-        private void TimeZoneBox_OnTextChanged(object sender, EventArgs e)
-        {
-            if (sender is AutoCompleteBox box)
-            {
-                if (box.SelectedItem != null && box.SelectedItem is TimeZone timeZone)
-                {
-                    ViewModel.ValidateAndSetTimeZone(timeZone.Location);
-                }
-            }
-        }
-
-        protected override void OnClosed(EventArgs e)
-        {
-            ControllerSettings.Dispose();
-
-            _currentAssigner?.Cancel();
-            _currentAssigner = null;
-            
-            base.OnClosed(e);
+            HotkeysPage.Dispose();
+            InputPage.Dispose();
+            base.OnClosing(e);
         }
     }
 }
\ No newline at end of file