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()