Hacker News new | ask | show | jobs
by ambrop7 3369 days ago
One way to solve the scaling issue is to set the external monitor to a virtual higher resolution while still driving it at its native resolution (with scaling down done in GPU).

Actually Linux/Xorg generally support this out of the box, it is just the higher-level software that would need to make use of it. You can try it youself:

xrandr --output <output-name> --scale 2x2

the result should be the given monitor will appear to have twice the resolution, so if applications believe they are running on a high-DPI display, they will look fine on the external monitor as well.

However due to lack of support and awareness in desktops doing just this might leave you with an unsatisfactory configuration, e.g. part of the desktop erroneously shown on both monitors - you might need to use further xrandr commands to setup the regions that each monitor displays.

I use the same approach to solve this issue on a Windows 7 system I am using, it is just slightly more involved (I need to setup a custom resolution in the Nvidia control panel).

2 comments

Unfortunately, this scales after drawing. The entire point of hiDPI is to have a crisper image. To achieve that, the scaling must be done at the drawing level.
Unity and Gtk would scale everthing up, so things that are properly drawn before being re-scaled.

So quality will be there.

For normal/low-DPI screens instead, you'd scale everything down, so you'd lose some memory CPU power, but you'd still get the quality result.

Battling xrandr is not for the feint of heart. It is tedious to get the right behavior and differs from one display to the next (the precise dimrnsions, etc..)