add a tray icon for wasabi.
MODIFY
WalletWasabi.Fluent/App.axaml
WalletWasabi.Fluent/App.axaml
<StyleInclude Source="avares://WalletWasabi.Fluent/Controls/StatusItem.axaml" />
<StyleInclude Source="avares://WalletWasabi.Fluent/Controls/PrivacyContentControl.axaml" />
</Application.Styles>
+
+ <TrayIcon.TrayIcons>
+ <TrayIcons>
+ <TrayIcon Icon="/Assets/WasabiLogo.ico">
+ <NativeMenu.Menu>
+ <NativeMenu>
+ <NativeMenuItem Header="Show Wasabi Wallet" />
+ <NativeMenuItem Header="Quit Wasabi Wallet" Command="{Binding QuitCommand}" />
+ </NativeMenu>
+ </NativeMenu.Menu>
+ </TrayIcon>
+ </TrayIcons>
+ </TrayIcon.TrayIcons>
</Application>

ADD
WalletWasabi.Fluent/Assets/WasabiLogo.ico
WalletWasabi.Fluent/Assets/WasabiLogo.ico
Binary files /dev/null and b/WalletWasabi.Fluent/Assets/WasabiLogo.ico differ

MODIFY
WalletWasabi.Fluent/ViewModels/ApplicationViewModel.cs
WalletWasabi.Fluent/ViewModels/ApplicationViewModel.cs
using System;
+using System.Windows.Input;
+using Avalonia;
+using Avalonia.Controls.ApplicationLifetimes;
+using ReactiveUI;
using WalletWasabi.Fluent.Providers;
using WalletWasabi.WabiSabi.Client;
@@ -6,7 +10,24 @@ namespace WalletWasabi.Fluent.ViewModels
{
public partial class ApplicationViewModel : ViewModelBase, ICanShutdownProvider
{
- bool ICanShutdownProvider.CanShutdown()
+ public ApplicationViewModel()
+ {
+ QuitCommand = ReactiveCommand.Create(() =>
+ {
+ if (CanShutdown())
+ {
+ if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime
+ desktopLifetime)
+ {
+ desktopLifetime.Shutdown();
+ }
+ }
+ });
+ }
+
+ public ICommand QuitCommand { get; }
+
+ public bool CanShutdown()
{
return Services.HostedServices.Get<CoinJoinManager>().HighestCoinJoinClientState switch
{

add a tray icon for wasabi.