diff --git a/src/Avalonia.X11/Screens/X11Screen.Providers.cs b/src/Avalonia.X11/Screens/X11Screen.Providers.cs index 7ba3c67fa6..64cfd7fa79 100644 --- a/src/Avalonia.X11/Screens/X11Screen.Providers.cs +++ b/src/Avalonia.X11/Screens/X11Screen.Providers.cs @@ -13,7 +13,7 @@ internal partial class X11Screens { internal class X11Screen { - public bool IsPrimary { get; } + public bool IsPrimary { get; set; } public string Name { get; set; } public PixelRect Bounds { get; set; } public Size? PhysicalSize { get; set; } diff --git a/src/Avalonia.X11/Screens/X11Screens.cs b/src/Avalonia.X11/Screens/X11Screens.cs index bced3b669c..d29d156e82 100644 --- a/src/Avalonia.X11/Screens/X11Screens.cs +++ b/src/Avalonia.X11/Screens/X11Screens.cs @@ -86,8 +86,17 @@ namespace Avalonia.X11.Screens public int ScreenCount => _impl.Screens.Length; - public IReadOnlyList AllScreens => - _impl.Screens.Select((s, i) => new Screen(_scaling.GetScaling(s, i), s.Bounds, s.WorkingArea, s.IsPrimary)) - .ToArray(); + public IReadOnlyList AllScreens + { + get + { + var rawScreens = _impl.Screens; + if (!rawScreens.Any(s => s.IsPrimary) && rawScreens.Length > 0) + rawScreens[0].IsPrimary = true; + return rawScreens.Select((s, i) => + new Screen(_scaling.GetScaling(s, i), s.Bounds, s.WorkingArea, s.IsPrimary)) + .ToArray(); + } + } } }