diff --git a/v2rayN/v2rayN.Desktop/v2rayN.ico b/v2rayN/v2rayN.Desktop/Assets/v2rayN.ico
similarity index 100%
rename from v2rayN/v2rayN.Desktop/v2rayN.ico
rename to v2rayN/v2rayN.Desktop/Assets/v2rayN.ico
diff --git a/v2rayN/v2rayN.Desktop/ViewModels/AppViewModel.cs b/v2rayN/v2rayN.Desktop/ViewModels/AppViewModel.cs
deleted file mode 100644
index 4b56a9a5..00000000
--- a/v2rayN/v2rayN.Desktop/ViewModels/AppViewModel.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using Avalonia;
-using Avalonia.Controls.ApplicationLifetimes;
-using ReactiveUI;
-using Splat;
-using System.Reactive;
-using v2rayN.Desktop.Common;
-
-namespace v2rayN.Desktop.ViewModels
-{
-    public class AppViewModel : MyReactiveObject
-    {
-        public ReactiveCommand<Unit, Unit> SystemProxyClearCmd { get; }
-        public ReactiveCommand<Unit, Unit> SystemProxySetCmd { get; }
-        public ReactiveCommand<Unit, Unit> SystemProxyNothingCmd { get; }
-        public ReactiveCommand<Unit, Unit> AddServerViaClipboardCmd { get; }
-        public ReactiveCommand<Unit, Unit> SubUpdateCmd { get; }
-        public ReactiveCommand<Unit, Unit> SubUpdateViaProxyCmd { get; }
-        public ReactiveCommand<Unit, Unit> ExitCmd { get; }
-
-        public AppViewModel()
-        {
-            _config = AppHandler.Instance.Config;
-
-            SystemProxyClearCmd = ReactiveCommand.CreateFromTask(async () =>
-            {
-                await SetListenerType(ESysProxyType.ForcedClear);
-            });
-            SystemProxySetCmd = ReactiveCommand.CreateFromTask(async () =>
-            {
-                await SetListenerType(ESysProxyType.ForcedChange);
-            });
-            SystemProxyNothingCmd = ReactiveCommand.CreateFromTask(async () =>
-            {
-                await SetListenerType(ESysProxyType.Unchanged);
-            });
-
-            AddServerViaClipboardCmd = ReactiveCommand.CreateFromTask(async () =>
-            {
-                await AddServerViaClipboard();
-            });
-
-            SubUpdateCmd = ReactiveCommand.CreateFromTask(async () =>
-            {
-                await UpdateSubscriptionProcess(false);
-            });
-            SubUpdateViaProxyCmd = ReactiveCommand.CreateFromTask(async () =>
-            {
-                await UpdateSubscriptionProcess(true);
-            });
-
-            ExitCmd = ReactiveCommand.CreateFromTask(async () =>
-            {
-                await Exit();
-            });
-        }
-
-        private async Task SetListenerType(ESysProxyType type)
-        {
-            if (_config.systemProxyItem.sysProxyType == type)
-            {
-                return;
-            }
-
-            var service = Locator.Current.GetService<StatusBarViewModel>();
-            if (service != null) await service.SetListenerType(type);
-        }
-
-        private async Task AddServerViaClipboard()
-        {
-            if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
-            {
-                if (desktop.MainWindow != null)
-                {
-                    var clipboardData = await AvaUtils.GetClipboardData(desktop.MainWindow);
-                    var service = Locator.Current.GetService<MainWindowViewModel>();
-                    if (service != null) await service.AddServerViaClipboardAsync(clipboardData);
-                }
-            }
-        }
-
-        private async Task UpdateSubscriptionProcess(bool blProxy)
-        {
-            var service = Locator.Current.GetService<MainWindowViewModel>();
-            if (service != null) await service.UpdateSubscriptionProcess("", blProxy);
-        }
-
-        private async Task Exit()
-        {
-            if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
-            {
-                var service = Locator.Current.GetService<MainWindowViewModel>();
-                if (service != null) await service.MyAppExitAsync(false);
-
-                desktop.Shutdown();
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml b/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml
index 6adffd7d..53e0e305 100644
--- a/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml
+++ b/v2rayN/v2rayN.Desktop/Views/ProfilesView.axaml
@@ -170,10 +170,10 @@
                                         Content="{x:Static resx:ResUI.TipActiveServer}"
                                         IsVisible="{Binding isActive}"
                                         Theme="{StaticResource TagLabel}" />
-                                    <Label
+                                    <TextBlock
                                         HorizontalAlignment="Center"
                                         VerticalAlignment="Center"
-                                        Content="{Binding remarks}" />
+                                        Text="{Binding remarks}" />
                                 </StackPanel>
                             </DataTemplate>
                         </DataGridTemplateColumn.CellTemplate>
diff --git a/v2rayN/v2rayN.Desktop/Views/ThemeSettingView.axaml b/v2rayN/v2rayN.Desktop/Views/ThemeSettingView.axaml
index 42804ce1..f898a1df 100644
--- a/v2rayN/v2rayN.Desktop/Views/ThemeSettingView.axaml
+++ b/v2rayN/v2rayN.Desktop/Views/ThemeSettingView.axaml
@@ -27,46 +27,32 @@
                 <StackPanel>
                     <StackPanel Orientation="Horizontal">
                         <TextBlock
-                            Grid.Row="0"
-                            Grid.Column="0"
                             Width="100"
                             VerticalAlignment="Center"
                             Classes="Margin8"
                             Text="{x:Static resx:ResUI.TbSettingsColorMode}" />
-                        <ToggleSwitch
-                            x:Name="togDarkMode"
-                            Grid.Row="0"
-                            Grid.Column="1"
-                            Classes="Margin8" />
+                        <ToggleSwitch x:Name="togDarkMode" Classes="Margin8" />
                     </StackPanel>
 
                     <StackPanel Orientation="Horizontal">
                         <TextBlock
-                            Grid.Row="1"
-                            Grid.Column="0"
                             Width="100"
                             VerticalAlignment="Center"
                             Classes="Margin8"
                             Text="{x:Static resx:ResUI.TbSettingsFontSize}" />
                         <ComboBox
                             x:Name="cmbCurrentFontSize"
-                            Grid.Row="1"
-                            Grid.Column="1"
                             Width="100"
                             Classes="Margin8" />
                     </StackPanel>
                     <StackPanel Orientation="Horizontal">
                         <TextBlock
-                            Grid.Row="2"
-                            Grid.Column="0"
                             Width="100"
                             VerticalAlignment="Center"
                             Classes="Margin8"
                             Text="{x:Static resx:ResUI.TbSettingsLanguage}" />
                         <ComboBox
                             x:Name="cmbCurrentLanguage"
-                            Grid.Row="2"
-                            Grid.Column="1"
                             Width="100"
                             Classes="Margin8" />
                     </StackPanel>
diff --git a/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj b/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj
index 5319c903..a5750c74 100644
--- a/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj
+++ b/v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj
@@ -4,7 +4,7 @@
         <TargetFramework>net8.0</TargetFramework>
         <Nullable>enable</Nullable>
 		<ImplicitUsings>enable</ImplicitUsings>
-		<ApplicationIcon>v2rayN.ico</ApplicationIcon>
+		<ApplicationIcon>Assets\v2rayN.ico</ApplicationIcon>
         <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
         <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
     </PropertyGroup>
@@ -37,7 +37,7 @@
     </ItemGroup>
  
     <ItemGroup>
-      <EmbeddedResource Include="v2rayN.ico">
+      <EmbeddedResource Include="Assets\v2rayN.ico">
         <CopyToOutputDirectory>Never</CopyToOutputDirectory>
       </EmbeddedResource>
     </ItemGroup> 
diff --git a/v2rayN/v2rayN/v2rayN.ico b/v2rayN/v2rayN/Resources/v2rayN.ico
similarity index 100%
rename from v2rayN/v2rayN/v2rayN.ico
rename to v2rayN/v2rayN/Resources/v2rayN.ico
diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj
index 274ea8b8..a0bc58a9 100644
--- a/v2rayN/v2rayN/v2rayN.csproj
+++ b/v2rayN/v2rayN/v2rayN.csproj
@@ -8,7 +8,7 @@
 		<UseWPF>true</UseWPF>  
 		<ApplicationManifest>app.manifest</ApplicationManifest>
 		<ImplicitUsings>enable</ImplicitUsings>
-		<ApplicationIcon>v2rayN.ico</ApplicationIcon>
+		<ApplicationIcon>Resources\v2rayN.ico</ApplicationIcon>
 		<Copyright>Copyright © 2017-2024 (GPLv3)</Copyright>
 		<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>
 	</PropertyGroup>
@@ -24,15 +24,13 @@
 	
 	<ItemGroup>       
         <AdditionalFiles Include="app.manifest" />       
-        <EmbeddedResource Include="v2rayN.ico">
+        <EmbeddedResource Include="Resources\v2rayN.ico">
           <CopyToOutputDirectory>Never</CopyToOutputDirectory>
         </EmbeddedResource>
         <Resource Include="Resources\NotifyIcon1.ico" />
         <Resource Include="Resources\NotifyIcon2.ico" />
         <Resource Include="Resources\NotifyIcon3.ico" />
-        <Resource Include="v2rayN.ico">
-          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-        </Resource>
+        <Resource Include="Resources\v2rayN.ico" />
     </ItemGroup> 	 
 	
 	<ItemGroup>