GP SoftwareTwitter
Opus FAQsManualCommandsObjects

High DPI - Dual Monitor Configuration

This actually works very well on Windows 10.
Laptop 4k at 200%
Main monitor at 2560x1440 at 100%

I can move windows around without any problems and Windows adopts.

Will Opus ever be programmed for multi-monitor-DPI-awareness? I'm still dealing with a fuzzy Opus interface on the external (High DPI monitor). Windows high DPI awareness has come a long way since my initial post in mid-2018.

You should make the higher DPI monitor the primary one so the system DPI is the higher of the two DPIs.

(The fact Windows doesn't do this automatically points to multi-DPI in Windows still being a work in progress, IMO. They fixed the titlebar sizes but very little else.)

Hi Leo,

The higher DPI (UHD) monitor is the primary monitor (3840 x 2160) - the Opus interface is crisp/sharp. The external monitor is a full HD monitor (1920 x 1080) - the Opus interface is fuzzy.

I mainly work in my productivity software on the UHD monitor with Opus on the full HD monitor to access files etc. To get a good interface I would need to purchase a UHD monitor to replace the current full HD monitor - and they are expensive.

This is in a workplace environment - I have supplied my own notebook computer and the company that I work for has supplied the monitor - they're not prepared to provide me with a UHD monitor. I'm coping but would love for Opus to have per Monitor or per Monitor V2 support i.e. a crisp interface on the Full HD monitor. I get this if I change Opus properties, High DPI scaling override to System or System (Enhanced). That however introduces issues in Excel (and some other software) when double clicking to open a file.

I have a Surface Pro 6, which runs at 200% DPI. I also have a 30" Dell U3014 monitor for my main workstation, which runs at 100% DPI.

I just tried plugging it into my Surface Pro 6 as a secondary monitor, with the main monitor at 200% and the Dell at 100%.

Directory Opus 12.14 has no issues with fonts or UI elements. It operates as I would expect.

This isn't about scaling - it's about different monitor resolutions.

Yes. I know that. My Surface Pro 6 built in display has a vastly higher resolution than my Dell U3014.

Are you able to confirm the resolutions? A Google search gives 2736 x 1824 for the Surface Pro 6 and 2560 x 1600 for the Dell U3014.
Regardless, Opus is fuzzy on the 1920 x 1080 external monitor that I use; you can't convince me otherwise. I would prefer that it wasn't so.

Yes those are the correct resolutions for my displays, and I had no issues at all with UI elements.

I'm not trying to convince you that you're not seeing fuzziness. I'm saying that the issue doesn't appear to be a fault caused by Directory Opus.

Yes and no. The blurry interface can be resolved by improving Directory Opus' DPI Awareness. Currently Directory Opus is "System Aware". System Aware was introduced in Windows 8 (2012). There are two subsequent awareness modes; Per Monitor V1 (Windows 8.1 - 2013) and Per Monitor V2 (Windows 10 Creators Update - October 2018). If Directory Opus targeted either of these later awareness modes (Per Monitor or Per Monitor V2) the blurry interface could be addressed. I do however understand that it would take effort to target the Per Monitor awareness modes.

But it does have per monitor awareness, I’ve proved that on my own system...

It doesn't. The number of pixels on your two monitors is very similar 2736 x 1824 for the Surface Pro 6 and 2560 x 1600 for the Dell U3014; hardly an earth shattering difference.
You're not seeing what I'm seeing 3840 x 2160 and 1920 x 1080.
I'm attaching a screen shot from the Windows task manager showing Directory Opus' DPI awareness. I'm attaching an image from Windows Task Manager showing the Directory Opus DIP awareness mode. But enough of this - it's a bit silly.

You’re confusing DPI and resolution. My monitors DO NOT have a similar DPI.

My Surface Pro 6 has a 12” screen. My Dell U3014 has a 30” screen. Their DPIs are VASTLY different, hence why my Surface Pro 6 screen defaults to 200% scaling, whereas my Dell U3014 defaults to 100% scaling.

You seem to be forgetting that DPI is a measurement of the physical Dots Per Inch on a display, which does not correlate with the resolution of any given screen.

While Opus supports high DPI, Opus isn't (currently) per-monitor DPI aware. It's only system DPI aware. The system DPI is then scaled up or down to other monitors if they aren't the same DPI as the main monitor (or if you haven't rebooted since changing the main monitor's DPI).

Scaling down from 200% to 100% usually looks fine in my experience, although not quite as good as rendering at 100% directly, of course. Scaling up from 100% to 200% also looks OK (not that it's a likely scenario with Opus 12 or above) since Windows will exactly double everything instead of blurry upscaling. Native looks best, of course.

As well as the technical difficulties in supporting per-monitor DPI (the API keeps changing, although it is improving lately; a lot of code renders or caches sizes and bitmaps before it knows which monitor something will be displayed on; and things can move to other monitors at any time), there is also the difficulty in actually using and testing per-monitor DPI, as it still has a number of problems in the OS itself and the ecosystem generally. Basic high DPI in Windows was itself like that for a long time, but eventually got a lot better, so per-monitor DPI may be the same. Although it's always going to be best to pick a DPI and then have all your monitors run at the same one.

Scaling down from 200% to 100% usually looks fine in my experience, although not quite as good as rendering at 100% directly, of course. Scaling up from 100% to 200% also looks OK (not that it's a likely scenario with Opus 12 or above) since Windows will exactly double everything instead of blurry upscaling. Native looks best, of course.

My experience has been perfectly fine — on instances where I'm just using my Surface in a single-monitor, 200% DPI mode, and when hooking up to a display that has a lower DPI screen so that both monitors are being run at different scaling.

I also have two 1920x1200 monitors hooked up to my main workstation at home, so I can of course test hooking up my Surface to one of those just to be sure, but based on my experience so far, I am certainly not seeing any issues at all with Directory Opus and multi-monitor set-ups where there is a mixture of High DPI and Standard DPI displays.

OK so it's challenging - but are there any plans to add per monitor v2 support to Directory Opus? From my point of view things have been improving lately - Office 365 copes much better with changes in DPI these days and most of the programs are fine (Firefox, Onenote etc.). It would be great to see improvements.

I don't have any issues when using my Surface book plugged into an external monitor, the main issue is when I unplug and go back to using the built in monitor - then Opus turns blurry.

+1 for proper scaling when in a multi-monitor high and non-high/standard DPI environment. Currently DOpus will look super blurry on one of the monitors unless you set it to scale at 100%, which is unusable for a 4k screen.

It won't look blurry if you set your system DPI to the higher res screen, so DPI-Aware (but not Per-Monitor DPI Aware) things are rendered natively for the highest DPI you're using and get scaled down for the lower res screen. That looks fine IME.

(Windows itself has so many bugs when run in a mixed DPI mode that I'd recommend using two screens of the same DPI anyway, regardless of anything specific to Opus.)

Setting the system DPI to the higher res screen will only shift this problem to the other monitor as DOpus will then look blurry on the other monitor. I have tried and tested this.

I concede that Windows isn't all there with mixed DPI mode but the fact that there are more than a few programs out there that can handle it pretty well (they at least do not look blurry) tells me it is not impossible.

IME, it doesn't look (very) blurry when scaled down, only when scaled up. Maybe it depends on the monitors and resolutions, though.

It's not impossible, no. It is a huge amount of work with a program the size and complexity of Opus. High DPI support itself took about 6 months of work, and mixed DPI is harder in a lot of ways, because nothing can be cached and everything needs to be potentially reloaded and recalcualted at any moment. And every bitmap or icon or font that is displayed anywhere needs to know in advance which DPI it is being generated for (instead of being generated for the system DPI -- which may be high DPI but is always the same until the next restart -- and then usable on any screen).

I'm using a mixed DPI setup at the moment to find workarounds some issues, and also work on some completely new code (which is being designed for mixed DPI from the ground up, which is easier). Even with my own code working completely, there are so many bugs in Windows itself that I cannot understand why minor issues in Opus are something to complain about; the entire OS is unusable in this mode, IMO. (The standard File > Open dialogs don't even draw properly!)

We could certainly spend a long time adding full support for mixed DPI scaling and on-the-fly DPI switching, but anyone using Windows with that configuration would still have a miserable time due to the OS itself (and most other software), so it seems a bit pointless, given the amount of time it would take away from other work.

1 Like