I wanna get DE accent color from d-bus, so I try to call org.freedesktop.portal.Desktop with interface org.freedesktop.portal.Settings method ReadOne with namespace org.freedesktop.appearance and key accent-color

I use library Tmds.DBusand create simple ConsoleAppto test
using Tmds.DBus.Protocol;
try
{
var connection = new DBusConnection(DBusAddress.Session!);
await connection.ConnectAsync();
var writer = connection.GetMessageWriter();
writer.WriteMethodCallHeader(
destination: "org.freedesktop.portal.Desktop",
path: "/org/freedesktop/portal/desktop",
@interface: "org.freedesktop.portal.Settings",
member: "ReadOne",
signature: "ss");
writer.WriteString("org.freedesktop.appearance");
writer.WriteString("accent-color");
var message = writer.CreateMessage();
var reply = await connection.CallMethodAsync(message,
(result, _) => result);
var reader = reply.GetBodyReader();
reader.AlignStruct();
reader.ReadInt64();
var red = (int)(reader.ReadDouble() * 255);
var green = (int)(reader.ReadDouble() * 255);
var blue = (int)(reader.ReadDouble() * 255);
Console.WriteLine($"RGB: {red}, {green}, {blue}");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
It works and returns corrent output:
RGB: 53, 168, 84
But THE SAME code in the my app throws exception:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
at Tmds.DBus.Protocol.Reader..ctor(Boolean isBigEndian, ReadOnlySequence`1 sequence, UnixFdCollection handles, Int32 handleCount)
at Tmds.DBus.Protocol.Message.GetBodyReader()
at GMenu.Modules.LinuxSystem.LinuxThemeLoader.GetThemeHexAsync() in /home/themakarik/RiderProjects/g-menu/src/GMenu/Modules/LinuxSystem/LinuxThemeLoader.cs:line 27
public async Task GetThemeHexAsync()
{
try
{
var connection = new DBusConnection(DBusAddress.Session!);
await connection.ConnectAsync();
var writer = connection.GetMessageWriter();
writer.WriteMethodCallHeader(
destination: "org.freedesktop.portal.Desktop",
path: "/org/freedesktop/portal/desktop",
@interface: "org.freedesktop.portal.Settings",
member: "ReadOne",
signature: "ss");
writer.WriteString("org.freedesktop.appearance");
writer.WriteString("accent-color");
var message = writer.CreateMessage();
var reply = await connection.CallMethodAsync(message,
(result, _) => result);
var reader = reply.GetBodyReader();
reader.AlignStruct();
reader.ReadInt64();
var red = (int)(reader.ReadDouble() * 255);
var green = (int)(reader.ReadDouble() * 255);
var blue = (int)(reader.ReadDouble() * 255);
return new Rgb(red, green, blue);
}
catch (Exception e)
{
logger.Error("Exception: {exception}", e);
return null;
}
}
Code usings:
public override async void OnFrameworkInitializationCompleted()
{
try
{
//https://stackoverflow.com/questions/79933121/avaloniaui-strange-async-application-loading
var provider = Services;
LoadLocalization(provider);
var logger = provider.GetRequiredService();
logger.Information("Initializing GMenu...");
await LoadMaterialThemeAsync(provider);
logger.Information("Desktop files paths: {paths}", StaticConfiguration.PathToDesktopFiles);
logger.Information("Desktop files icons path: {paths}", StaticConfiguration.PathsToRefineIcon);
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow { DataContext = Services.GetRequiredService() };
await LoadConfigurationAsync(provider).ConfigureAwait(false);
base.OnFrameworkInitializationCompleted();
}
catch (Exception e)
{
Services.GetRequiredService().Error(e, "An error occured while initializing the application.");
Console.WriteLine(e);
Environment.Exit(-1);
}
}
private async Task LoadMaterialThemeAsync(IServiceProvider provider)
{
using var scope = provider.CreateScope();
var themeLoader = scope.ServiceProvider.GetRequiredService();
var rgb = await themeLoader.GetThemeHexAsync();
var color = new Color(255, (byte)rgb.Red, (byte)rgb.Green, (byte)rgb.Blue );
var materialTheme = this.LocateMaterialTheme();
materialTheme.BaseTheme = BaseThemeMode.Inherit;
materialTheme.PrimaryColor = color;
materialTheme.SecondaryColor = color;
this.Resources["AccentColor"] = materialTheme.PrimaryColor;
}
Can somebody explain why strange things like this happens, and how can I fix it