Dual monitors on Windows - How do I set a different DPI or text size on each monitor?

104

23

My laptop is a 15" wide screen running at 1600x1050, and in addition to that I connect an external 19" LCD which runs at 1280x1024. The problem with this setup is that if I increase the text size to make the laptop screen readable, the text on the external LCD is huge. Normal text on the LCD results in tiny text on the laptop.

What options do I have to get around this?

dlux

Posted 2009-08-26T03:39:38.783

Reputation: 4 183

possible duplicate of Set DPI of individual applications in Windows

– Ƭᴇcʜιᴇ007 – 2013-08-16T18:25:34.140

I unmarked the answer on this question as it appears Windows 8.1 now supports multiple DPI settings. – dlux – 2014-03-08T03:04:09.590

Answers

43

DPI settings affect the entire desktop, regardless of number or arrangement of monitors. You cannot have two different DPI settings on two monitors.

Update:

This is untrue as of Windows 8.1, which adds many DPI scaling enhancements, including per-display DPI settings. Although some may not find the implementation offers enough control.

Josip Medved

Posted 2009-08-26T03:39:38.783

Reputation: 8 582

If I have 13" my main laptop's and 19" external monitor, does that mean everything I see on my laptop's monitor will be too big? – Boris_yo – 2014-12-08T06:41:21.910

8Imagine what a program would have to try of it spans both monitors. Or is moved from one to the next ... – Joey – 2009-08-26T07:16:58.487

@Johannes: For me it would be enough if DWM would control scaling (as it does for non-DPI aware applications). Final result would be blurry at best but it would be good enough for support monitor. – Josip Medved – 2009-08-26T08:08:39.253

5I figured this was going to be impossible, but was hoping there was some third-party solution out there. If anyone wants to make some money, here is a problem that need solving. :) – dlux – 2009-08-26T13:26:57.767

3This is the correct answer - the answer is "no". And imagine if a program's window was spanning 2 or 3 monitors at once - it is essentially impossible for a program to draw parts of itself at different DPI/Font settings. Windows would have to be resigned - getting rid of the notion of font and DPI preferences in order for this to ever work. – Ian Boyd – 2009-08-31T11:40:53.957

1@Ian, Joey: This issue isn't as insurmountable as all that, it's just that it wasn't designed to do that. Two options that come to mind immediately: the DWM could request one image of the window for each DPI in use in the session and show the appropriate slices on screen. The rendering DPI could be set really high and the DWM could scale windows down to the appropriate on screen DPI as needed. – Chris Smith – 2012-11-16T15:07:51.630

@ChrisSmith Problem with using DWM to scale window contents is that text becomes fuzzy and hard to read. And i hate the fuzzies.

– Ian Boyd – 2012-11-16T16:16:37.183

@Ian Boyd - Fuzziness is caused by rendering at too low a DPI (i.e. standard because the app can't do anything else) and scaling up. There isn't enough image data there for each new pixel at the higher size so the video hardware fills in the blanks. That wouldn't be a problem if you rendered at a really high DPI and scaled down. That's how antialiasing works in modern real time 3d rendering. – Chris Smith – 2012-11-16T23:00:53.557

1The case of a window spanning multiple monitors is an edge case, most users put windows on one monitor or another. So by having DPI per monitor you could optimize for most windows, then when a window spans monitors the app would just pick one monitor's DPI. Non-optimal, but its the edge case. – studgeek – 2013-01-01T20:26:16.843

13You can have different dpi depending on screen, but apparently not on Windows. I'm having this problem with the Retina Macbook Pro hooked up to another screen. It works perfectly in Mac OS X as it scales according to screen's native DPI and resolution but not in Windows 7/8 as it wants the same dpi on the whole desktop. This is an issue in Windows because either you have to live with too large text in one display or too small text in the other. – Spoike – 2013-01-28T14:09:31.167

4Funny that a lot of these answers are "that's impossible" when it is done in Windows 8, although it still isn't perfect. As for spanning monitors, it simply picks the DPI of the monitor where the top-left of the window is positioned. The problem I have is with RDP to windows 7. The retina display is too small and moving it to a 1920x1080 tv as the second display makes it look even smaller. – Jason Goemaat – 2013-09-10T00:26:02.150

In Windows 8.1 having two different dpi settings does work. – Josip Medved – 2013-09-15T18:50:40.573

27

A bit of a hack is:

If you are always using a certain application on one screen, you can set that application to ignore DPI settings. For example, I have Visual Studio on my big monitor set to ignore DPI (100%). Everything else on my retina laptop monitor is at 145%.

The setting "Disable display scaling on high DPI settings" is under compatibility under the properties menu of the application exe.

olly

Posted 2009-08-26T03:39:38.783

Reputation: 271

Interestingly, I understand chrome doesn't do the display scaling properly since it's rendering the fonts off-screen or something. So the 145% thing for chrome is probably not that great (still probably pretty good though) :-) – Jesse Pepper – 2014-01-31T09:13:33.020

17

It finally does work in Windows 10 although many apps still would not scale correctly. It works almost as good as on OSX.

For higher DPI 1st monitor (200% scale)

enter image description here

For lower DPI 2nd monitor (100% scale) enter image description here

It is important NOT to use following scaling (it should be set to 100%). By default using MacBook retina driver pack it would be set to 150/200%. enter image description here enter image description here enter image description here enter image description here

Evalds Urtans

Posted 2009-08-26T03:39:38.783

Reputation: 281

That's good news about Windows 10, and thanks for a very well written answer! – dlux – 2015-08-10T17:25:07.277

1Is there also way to get it sorted with different ratio? I need to set my laptop display (15" full HD) to 125%, to be able to see anything. But my external display (27" full HD) I want to keep to 100% text size, to utilize big screen. But on this configuration the external display got blurry text. Is there a fix for that? Thanks – mimo – 2016-08-02T18:06:40.203

8

Note: Windows 8.1, contrary to Microsoft's claims, does not truly support running multiple DPI's on separate monitors.

I have a laptop with windows 8.1 and 3840x2160 16" screen. In order for dialog boxes, windows etc. to be a usable size it must run at 200% scale (comparable real estate to a typical 16" 1080p display but with UI elements, text, and photos all rendered sharper).

When apps are moved from the laptop monitor onto the external monitor, as soon as more than half of teh window is dragged over the window is resized. The problem with this is the menu bars, cursor, etc. are not natively redrawn at the new DPI setting, the entire application window, toolbars and all is drawn at 200DPI then bitmap resized to 50% in order to fit on the external monitor. Only the 200% DPI scale is being used at once, whereas other DPIs for external monitors are [poorly] virtualized. A very blurry bilinear scaling is used, and text is completely unreadable on the external monitor. This means the benefit of things like cleartype text (which relies on 1:1 pixel rendering and actually uses sub-pixel anti aliasing) is not achievable when mixed DPIs are used.

A select few applications (IE, powerpoint) are listed per-monitor DPI aware. In this case, the contents of the windows are redrawn at the correct size and cleartype within the apps still functions but the menu bars, title bar, even the cursor are still drawn at 200% scale -- rendering them unusably large on external monitors. I suspect this exception was made so that fullscreen presentations could still be done without the blurry bitmap scaling. With 200% scale toolbars though, these apps are not usable for anything other than fullscreen mode.

At this point there is no getting around having to restart the computer to change DPI every time you plug into external monitor and use external monitor only.

ScottLux

Posted 2009-08-26T03:39:38.783

Reputation: 81

This looks to be the case in Windows 10 as well. The only way I could fix the blurred text on the external monitor, was to plug in the external display, and then sign out/in, or restart the computer. – levi – 2017-01-08T21:51:23.653

3

I solved this issue by changing the "apparent DPI" (and thus text size) of the monitors. Placing the external 19" LCD further away will reduce the apparent size of the font.

If you don't want to/can't place the displays like that, you can also use the Thinkpad screen at a lower resolution to increase the apparent font size. Calculate the DPI here and make sure they match.

Leftium

Posted 2009-08-26T03:39:38.783

Reputation: 8 163

Setting to matching resolutions (as opposed to the manufacturer recommended ones) has had the best results in terms of matching size, although there's an impact in font blockiness and smoothing. – Danny Staple – 2016-02-12T11:19:00.747

A common mistake people make is to take the resolution of the monitor (in pixels) and divide it by the size of the monitor (in inches), and use that number as the DPI setting for Windows. – Ian Boyd – 2011-04-08T19:59:08.813

3

You (should) be able to. In Linux you could do it like this:

  1. Create a X VNC Server with the size of two times the smaller screen. For example: you have two monitors, same size, but 1920 and 1600 pixels wide: you make a virtual server of two times the better one: 3840px wide (1080px height).

  2. Open two VNC clients against the server you just created. Put one in each screen. Full screen. Scale 1:1. Scroll the window on the right to show the rightmost part of the Vnc server. Since the pixels are different size, everything will look bigger in the screen of 1600px. Zoom out that one until sizes fits.

This is obviously very simple and has grave drawbacks (no direct rendering, probably slow, etc). But if you could do the same with proper framebuffers and such...

Daniel

Posted 2009-08-26T03:39:38.783

Reputation: 31

but it won't work for dpi settings like 125% or 150% – phuclv – 2017-06-28T08:37:27.557

2

A workaround (although I haven't found how to do it in Windows 7) is enabling desktop panning/scrolling, that way it could be possible to set any resolution in smaller displays so font size would be similar.

t3mujin

Posted 2009-08-26T03:39:38.783

Reputation: 290

panning/scrolling is not relevant. If a display and its driver is capable of changing resolution, then it is the resolution change (sacrificing the full detail of the display) that makes this approach work. Such a workaround can be done today, where supported by hardware, without panning/scrolling. – ToolmakerSteve – 2015-06-17T17:38:35.763

1

As other answers have pointed out, DPI settings can't be adjusted per-monitor (or per-application).

If you need specific applications running in a different DPI than the rest of the desktop, consider using a virtual machine.

Ƭᴇcʜιᴇ007

Posted 2009-08-26T03:39:38.783

Reputation: 103 763

1

See also Olly's new answer ;-)

– Arjan – 2013-08-16T15:16:03.010

1

@Arjan Check out: http://superuser.com/a/422387/23133

– Ƭᴇcʜιᴇ007 – 2013-08-16T18:26:18.783

1

I've solved the issue with setting a custom resolution to the second monitor. That way, you can effectively "fake" the different DPI-setting. But note that it depends on the actual monitor, whether it displays non-standard resolution at all. Also, it might produce a terrible, blurry image, but you can decide if you can live with it. It's far from optimal, but at least solves the "different size"-issue... (Of course the graphics driver has to support it too. Nvidia does, others I don't know.)

void

Posted 2009-08-26T03:39:38.783

Reputation: 11

1Are you using Windows 8.1? If so, you're just restating information that has been presented here multiple times already. If you're *not* using Windows 8.1, please provide specifics (what OS are you using, and *how did you set different resolutions on two monitors?*). Because people have been trying to do that for the past 5+ years without success (until eight months ago). – G-Man Says 'Reinstate Monica' – 2014-11-07T17:58:58.310

3@G-Man: he's saying he changed the resolution on the second monitor. Giving up on using the monitor's full native resolution. Most (all?) discrete graphics cards driving external monitors can be run at lower resolutions. (An extreme example would be dropping a 3840 x 2160 display by half, to 1920 x 1080.) Depending on the monitor, the result may be horrible blur, or quite useable. Changing the resolution implicitly changes the DPI. It means sacrificing some of the quality of the higher DPI device, in order to have two screens with similar characteristics. – ToolmakerSteve – 2015-06-17T17:27:29.930

0

The procedure by changing simply text size on each monitor works fine (Windows 10), but there is a huge problem by blurring!. See this topic

Tomas

Posted 2009-08-26T03:39:38.783

Reputation: 1

-1

I had a similar issue, realizing that font was set at 125% across my 2 monitors. So I simply lowered the laptop resolution from 1920X1080 to 1600X900 and then reduced the font to 100% in the Control Panel\All Control Panel Items\Display. This kept the font readable on the laptop while also reducing its size as I wanted on my external monitor, which is still set at 1920X1080.

Amir

Posted 2009-08-26T03:39:38.783

Reputation: 1