1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

UI - Fixed Tray Icon on Linux

This commit is contained in:
Diogo Trindade 2022-07-30 19:43:42 +01:00
parent 1210dc3f63
commit 45e810c3ac
6 changed files with 54 additions and 49 deletions

View File

@ -9,4 +9,22 @@
<Application.Styles>
<StyleInclude Source="avares://Artemis.UI/Styles/Artemis.axaml" />
</Application.Styles>
<TrayIcon.Icons>
<TrayIcons>
<TrayIcon Icon="avares://Artemis.UI/Assets/Images/Logo/application.ico" ToolTipText="Artemis">
<TrayIcon.Menu>
<NativeMenu>
<NativeMenuItem Header="Home" Command="{Binding OpenScreen}" CommandParameter="Home" />
<NativeMenuItem Header="Workshop" Command="{Binding OpenScreen}" CommandParameter="Workshop" />
<NativeMenuItem Header="Surface Editor" Command="{Binding OpenScreen}" CommandParameter="Surface Editor" />
<NativeMenuItem Header="Settings" Command="{Binding OpenScreen}" CommandParameter="Settings" />
<NativeMenuItemSeparator />
<NativeMenuItem Header="Debugger" Command="{Binding OpenDebugger}" />
<NativeMenuItem Header="Exit" Command="{Binding Exit}" />
</NativeMenu>
</TrayIcon.Menu>
</TrayIcon>
</TrayIcons>
</TrayIcon.Icons>
</Application>

View File

@ -9,4 +9,22 @@
<Application.Styles>
<StyleInclude Source="avares://Artemis.UI/Styles/Artemis.axaml" />
</Application.Styles>
<TrayIcon.Icons>
<TrayIcons>
<TrayIcon Icon="avares://Artemis.UI/Assets/Images/Logo/application.ico" ToolTipText="Artemis">
<TrayIcon.Menu>
<NativeMenu>
<NativeMenuItem Header="Home" Command="{Binding OpenScreen}" CommandParameter="Home" />
<NativeMenuItem Header="Workshop" Command="{Binding OpenScreen}" CommandParameter="Workshop" />
<NativeMenuItem Header="Surface Editor" Command="{Binding OpenScreen}" CommandParameter="Surface Editor" />
<NativeMenuItem Header="Settings" Command="{Binding OpenScreen}" CommandParameter="Settings" />
<NativeMenuItemSeparator />
<NativeMenuItem Header="Debugger" Command="{Binding OpenDebugger}" />
<NativeMenuItem Header="Exit" Command="{Binding Exit}" />
</NativeMenu>
</TrayIcon.Menu>
</TrayIcon>
</TrayIcons>
</TrayIcon.Icons>
</Application>

View File

@ -9,4 +9,22 @@
<Application.Styles>
<StyleInclude Source="avares://Artemis.UI/Styles/Artemis.axaml" />
</Application.Styles>
<TrayIcon.Icons>
<TrayIcons>
<TrayIcon Icon="avares://Artemis.UI/Assets/Images/Logo/application.ico" ToolTipText="Artemis">
<TrayIcon.Menu>
<NativeMenu>
<NativeMenuItem Header="Home" Command="{Binding OpenScreen}" CommandParameter="Home" />
<NativeMenuItem Header="Workshop" Command="{Binding OpenScreen}" CommandParameter="Workshop" />
<NativeMenuItem Header="Surface Editor" Command="{Binding OpenScreen}" CommandParameter="Surface Editor" />
<NativeMenuItem Header="Settings" Command="{Binding OpenScreen}" CommandParameter="Settings" />
<NativeMenuItemSeparator />
<NativeMenuItem Header="Debugger" Command="{Binding OpenDebugger}" />
<NativeMenuItem Header="Exit" Command="{Binding Exit}" />
</NativeMenu>
</TrayIcon.Menu>
</TrayIcon>
</TrayIcons>
</TrayIcon.Icons>
</Application>

View File

@ -1,12 +0,0 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<NativeMenu x:Key="TrayIconMenu">
<NativeMenuItem Header="Home" Command="{Binding OpenScreen}" CommandParameter="Home" />
<NativeMenuItem Header="Workshop" Command="{Binding OpenScreen}" CommandParameter="Workshop" />
<NativeMenuItem Header="Surface Editor" Command="{Binding OpenScreen}" CommandParameter="Surface Editor" />
<NativeMenuItem Header="Settings" Command="{Binding OpenScreen}" CommandParameter="Settings" />
<NativeMenuItemSeparator />
<NativeMenuItem Header="Debugger" Command="{Binding OpenDebugger}" />
<NativeMenuItem Header="Exit" Command="{Binding Exit}" />
</NativeMenu>
</ResourceDictionary>

View File

@ -30,8 +30,6 @@ namespace Artemis.UI.Screens.Root
private readonly ISidebarVmFactory _sidebarVmFactory;
private readonly IWindowService _windowService;
private SidebarViewModel? _sidebarViewModel;
private TrayIcon? _trayIcon;
private TrayIcons? _trayIcons;
private ViewModelBase? _titleBarViewModel;
public RootViewModel(ICoreService coreService,
@ -78,7 +76,6 @@ namespace Artemis.UI.Screens.Root
TitleBarViewModel = _defaultTitleBarViewModel;
}
public SidebarViewModel? SidebarViewModel
{
get => _sidebarViewModel;
@ -105,12 +102,6 @@ namespace Artemis.UI.Screens.Root
bool minimized = _coreService.StartupArguments.Contains("--minimized");
bool showOnAutoRun = _settingsService.GetSetting("UI.ShowOnStartup", true).Value;
// Always show the tray icon if ShowOnStartup is false or the user has no way to open the main window
bool showTrayIcon = !showOnAutoRun || _settingsService.GetSetting("UI.ShowTrayIcon", true).Value;
if (showTrayIcon)
ShowTrayIcon();
if (autoRunning && !showOnAutoRun || minimized)
{
// TODO: Auto-update
@ -127,27 +118,6 @@ namespace Artemis.UI.Screens.Root
_windowService.ShowWindow<SplashViewModel>();
}
private void ShowTrayIcon()
{
_trayIcon = new TrayIcon
{
Icon = new WindowIcon(_assetLoader.Open(new Uri("avares://Artemis.UI/Assets/Images/Logo/application.ico"))),
Command = ReactiveCommand.Create(OpenMainWindow)
};
_trayIcon.Menu = (NativeMenu?) Application.Current!.FindResource("TrayIconMenu");
_trayIcons = new TrayIcons {_trayIcon};
TrayIcon.SetIcons(Application.Current!, _trayIcons);
}
private void HideTrayIcon()
{
_trayIcon?.Dispose();
TrayIcon.SetIcons(Application.Current!, null!);
_trayIcon = null;
_trayIcons = null;
}
/// <inheritdoc />
public RoutingState Router { get; }

View File

@ -1,13 +1,6 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:styling="clr-namespace:FluentAvalonia.Styling;assembly=FluentAvalonia">
<Styles.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceInclude Source="/ArtemisTrayIcon.axaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Styles.Resources>
<!-- Third party styles -->
<styling:FluentAvaloniaTheme PreferSystemTheme="False" RequestedTheme="Dark"/>
<!-- <FluentTheme Mode="Dark"></FluentTheme> -->