diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-disconnected.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-disconnected.png index 1f29949ed..c9bd35c2d 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-disconnected.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-disconnected.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-error.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-error.png index b99f7749c..c9bd35c2d 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-error.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-error.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-pause.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-pause.png index 54ab9241c..3713ad137 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-pause.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-pause.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-running.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-running.png index 42dc139df..393913567 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-running.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-running.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-warning.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-warning.png index ca0e6071b..174b44546 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-warning.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal-warning.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal.png index 41b40e3ff..cac50c7f7 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/dark/normal.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-disconnected.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-disconnected.png index f74fbf15e..c9bd35c2d 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-disconnected.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-disconnected.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-error.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-error.png index e3d493771..c9bd35c2d 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-error.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-error.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-pause.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-pause.png index 138b250b4..3713ad137 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-pause.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-pause.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-running.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-running.png index 3a5e9d6d2..393913567 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-running.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-running.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-warning.png b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-warning.png index 884489dc5..174b44546 100644 Binary files a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-warning.png and b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Assets/icons/macos/light/normal-warning.png differ diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/AvaloniaRunner.cs b/Duplicati/GUI/Duplicati.GUI.TrayIcon/AvaloniaRunner.cs index 10e4c45e9..50d18078f 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/AvaloniaRunner.cs +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/AvaloniaRunner.cs @@ -61,25 +61,25 @@ namespace Duplicati.GUI.TrayIcon internal Task RunOnUIThread(Action action) { - if (_disposed != 0) - return Task.CompletedTask; + if (_disposed != 0) + return Task.CompletedTask; - return actionDelayer.ExecuteAction(() => - { - try - { - if (_disposed != 0 ) - { - return; - } - RunOnUIThreadInternal(action); - } - catch (Exception ex) - { - Log.WriteErrorMessage(LOGTAG, "AvaloniaRunOnUIThreadFailed", ex, "Failed to run action on UI thread"); - throw; - } - }); + return actionDelayer.ExecuteAction(() => + { + try + { + if (_disposed != 0) + { + return; + } + RunOnUIThreadInternal(action); + } + catch (Exception ex) + { + Log.WriteErrorMessage(LOGTAG, "AvaloniaRunOnUIThreadFailed", ex, "Failed to run action on UI thread"); + throw; + } + }); } private void RunOnUIThreadInternal(Action action) @@ -89,7 +89,7 @@ namespace Duplicati.GUI.TrayIcon return; if (_disposed != 0) - return ; + return; if (Dispatcher.UIThread.CheckAccess()) action(); @@ -340,7 +340,7 @@ namespace Duplicati.GUI.TrayIcon private void UpdateIcon() { if (nativeMenuItem == null) - return; + return; nativeMenuItem.Icon = this.Icon switch { @@ -410,6 +410,7 @@ namespace Duplicati.GUI.TrayIcon if (this.trayIcon == null) return; + MacOSProperties.SetIsTemplateIcon(this.trayIcon, true); switch (icon) { case TrayIcons.IdleError: @@ -482,7 +483,7 @@ namespace Duplicati.GUI.TrayIcon } catch (Exception ex) { - Console.WriteLine($"AVALALONIA desktop.Shutdown() failed because of {ex}"); + Console.WriteLine($"AVALALONIA desktop.Shutdown() failed because of {ex}"); } } diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj index 4055c04e7..d8a983d26 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj @@ -21,11 +21,11 @@ - - - + + + - + diff --git a/Duplicati/Library/SecretProvider/Duplicati.Library.SecretProvider.csproj b/Duplicati/Library/SecretProvider/Duplicati.Library.SecretProvider.csproj index b38ff01c3..b6d7ce779 100644 --- a/Duplicati/Library/SecretProvider/Duplicati.Library.SecretProvider.csproj +++ b/Duplicati/Library/SecretProvider/Duplicati.Library.SecretProvider.csproj @@ -18,7 +18,7 @@ - + diff --git a/Duplicati/Library/SecretProvider/LibSecret/secrets.DBus.cs b/Duplicati/Library/SecretProvider/LibSecret/secrets.DBus.cs index 5052c2ef8..2522bbce2 100644 --- a/Duplicati/Library/SecretProvider/LibSecret/secrets.DBus.cs +++ b/Duplicati/Library/SecretProvider/LibSecret/secrets.DBus.cs @@ -51,7 +51,7 @@ namespace secrets.DBus private const string __Interface = "org.freedesktop.impl.portal.Secret"; public Secret(secretsService service, ObjectPath path) : base(service, path) { } - public Task<(uint Response, Dictionary Results)> RetrieveSecretAsync(ObjectPath handle, string appId, System.Runtime.InteropServices.SafeHandle fd, Dictionary options) + public Task<(uint Response, Dictionary Results)> RetrieveSecretAsync(ObjectPath handle, string appId, System.Runtime.InteropServices.SafeHandle fd, Dictionary options) { return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_uaesv(m, (secretsObject)s!), this); MessageBuffer CreateMessage() @@ -187,7 +187,7 @@ namespace secrets.DBus return writer.CreateMessage(); } } - public Task CreateWithMasterPasswordAsync(Dictionary attributes, (ObjectPath, byte[], byte[], string) master) + public Task CreateWithMasterPasswordAsync(Dictionary attributes, (ObjectPath, byte[], byte[], string) master) { return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_o(m, (secretsObject)s!), this); MessageBuffer CreateMessage() @@ -231,7 +231,7 @@ namespace secrets.DBus private const string __Interface = "org.freedesktop.Secret.Service"; public Service(secretsService service, ObjectPath path) : base(service, path) { } - public Task<(VariantValue Output, ObjectPath Result)> OpenSessionAsync(string algorithm, Variant input) + public Task<(VariantValue Output, ObjectPath Result)> OpenSessionAsync(string algorithm, VariantValue input) { return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_vo(m, (secretsObject)s!), this); MessageBuffer CreateMessage() @@ -248,7 +248,7 @@ namespace secrets.DBus return writer.CreateMessage(); } } - public Task<(ObjectPath Collection, ObjectPath Prompt)> CreateCollectionAsync(Dictionary properties, string @alias) + public Task<(ObjectPath Collection, ObjectPath Prompt)> CreateCollectionAsync(Dictionary properties, string @alias) { return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_oo(m, (secretsObject)s!), this); MessageBuffer CreateMessage() @@ -558,7 +558,7 @@ namespace secrets.DBus return writer.CreateMessage(); } } - public Task<(ObjectPath Item, ObjectPath Prompt)> CreateItemAsync(Dictionary properties, (ObjectPath, byte[], byte[], string) secret, bool replace) + public Task<(ObjectPath Item, ObjectPath Prompt)> CreateItemAsync(Dictionary properties, (ObjectPath, byte[], byte[], string) secret, bool replace) { return this.Connection.CallMethodAsync(CreateMessage(), (Message m, object? s) => ReadMessage_oo(m, (secretsObject)s!), this); MessageBuffer CreateMessage()