Window management

This commit is contained in:
2026-01-17 02:33:00 +00:00
parent 47a5fc8c01
commit 5a915ca06a
7 changed files with 734 additions and 0 deletions

View File

@@ -51,6 +51,32 @@ public class DeviceDisplayService : IDeviceDisplay
{
try
{
// Try to use MonitorService for accurate XRandR-based info
var primaryMonitor = MonitorService.Instance.PrimaryMonitor;
if (primaryMonitor != null)
{
double scaleFactor = GetScaleFactor();
// If scale factor not set via env, use monitor's DPI-based scale
if (scaleFactor == 1.0 && primaryMonitor.ScaleFactor > 1.0)
{
scaleFactor = Math.Round(primaryMonitor.ScaleFactor * 4) / 4; // Round to nearest 0.25
}
DisplayOrientation orientation = (primaryMonitor.Width <= primaryMonitor.Height)
? DisplayOrientation.Portrait
: DisplayOrientation.Landscape;
_mainDisplayInfo = new DisplayInfo(
primaryMonitor.Width,
primaryMonitor.Height,
scaleFactor,
orientation,
DisplayRotation.Rotation0,
(float)primaryMonitor.RefreshRate);
return;
}
// Fall back to GDK
IntPtr screen = GdkNative.gdk_screen_get_default();
if (screen != IntPtr.Zero)
{