My trusty old Dell XPS M1330 decided to stop working recently, so I got a new laptop, a Sony Vaio Z. It's a very nice piece of equipment, and particularly nice is its screen: 1920x1080 in a 13.1" package.
Of course this means that in order to make text readable, I need to use at least 120DPI. That's not a problem (although of course some of the programs I use don't work particularly well with it).
However, whenever I'm at work (which counts for about 90% of my laptop usage), I connect the laptop to a big external screen. However, this screen is only 96DPI. Using a setting above that just makes everything really big.
This leaves me with three options when the external display is connected:
- Use 120DPI, meaning that everything's too big on my primary screen.
- Use 96DPI, so that the laptop's display is essentially unusable because everything is way too tiny. It also means I need to switch DPI settings every time I want to use the laptop without the external display.
- Use 96DPI and set the laptop's display to a lower resolution. This means everything on the laptop display becomes fuzzy and horrible looking but at least I can read it. And of course now I need to switch DPI and resolution when not using the external display.
Currently I'm using number 3. It's not ideal but it's the most workable. At least switching DPI just requires logging off in Windows 7, unlike in XP where it required a reboot.
DPI really ought to be a per-display setting rather than per-system or per-user. I know the technical reasons for why that's pretty much impossible; applications would have to re-layout when dragged from screen to screen, and what about if they're half on one screen and half on the other? I can see this work with WPF or Silverlight, but making this work with traditional Win32 apps would be impossible.
How would you deal with this kind of situation?