HowTo: Downscale HiDPI to scaled resolution


I have seen the future and it is HiDPI monitors and laptop screens (what is known as Retina Display in the Apple world). My current laptop is the Dell XPS 13 (9360) which came out of the box with Ubuntu. The highest resolution is 3200×1800. This is astonishing and really puts Dell ahead of other laptop manufacturers who are still putting out non-Retina laptop displays.

3200×1800 = Tiny Icons, Tiny Text

Unfortunately, no one is really ready for the future with HiDPI in GNU/Linux! When I left the native resolution at 3200×1800, the GNOME3 theme was small and had to be scaled to a factor of 2, the icons in most GTK and KDE applications were also tiny.

To try and solve those problems I asked on AskUbuntu (a Stackoverflow/Stack Exchange off-shoot):

The ArchLinux wiki has a page for HiDPI screens and on it you will find ways to:

Downscale from 3200×1800 to 1920×1080

But what if you wanted to downscale rather than upscale everything? I thought of this idea when using the Macbook Pros at my job (every developer job seems to have consolidated on Apple Macbooks as the gear of choice, guess it’s less of a pain for the IT support department to deal with? or they get a nice volume discount?)

The Macbook Pro has a Retina screen with a high native resolution, 2880×1800. However, Apple has downscaled to a lower resolution, 1400×900 to be precise. Apple labels that as the best resolution, and this Anand Tech article explains that for every pixel at the lower resolution you actually four pixels (since the native resolution is so much higher). I have actually found it hard to go back to regular monitors after working on a downscaled Macbook and I wanted the same experience on the Dell XPS. Not only that, but downscaling would also fix my problems with tiny text and icons.

Here are the instructions on how to downscale a HiDPI GNU/Linux desktop to a scaled resolution, specifically on GNOME. Unity has its own tweak tool and there are instructions on the ArchLinux Wiki to downscale KDE.

Lower the Resolution

Open the screen display configuration screen and find your display. Then change the resolution from 3200×1800 (16:9) to 1920×1080(16:9). You can lower this further but remember you have to maintain the same perspective ratio. Apple Macbooks are at 16:10, the Dell XPS 13 uses 16:9 perspective.

Note: if you downscale further, you will need to change all the settings below from 1 to 0.75 or 0.5 (whichever looks best at the lower resolution). For me at 1920×1080 (16:9) I changed all settings to 1. The lowest resolution for me is 1360×768 (16:9) which would require scaling everything down to 0.75 or 0.5 to look good. (Side note: the first laptop I ever owned was the Dell Inspiron 1545 which had a resolution of 1366×768).

Lower the resolution in Screen Display

Adjust the Window Scaling Factor

You’re going to need the GNOME Tweak tool installed for this. Find the Windows tab in the Tweak Tool and find the HiDPI section. Change the Window scaling setting from 2 to 1.

Set the window scaling in Tweak Tool to 1

Adjust the Font Scaling Factor

You’re going to need the GNOME Tweak tool installed for this. Find the Fonts tab and look for Scaling Factor, change the setting to 1.00 (you can try and scaling it up a little bit at a time until the fonts are more readable to you).

GNOME Tweak Tool Font Scaling Factor

Adjust the GNOME Desktop Scaling Factor

You’re going to need to open up the dconf editor and find the org.gnome.desktop.interface scaling-factor setting. Change it from 2 (hidpi) to 1 (downscaled).

Dconf Editor GNOME org.gnome.desktop.interface

Congrats! You’ve just downscaled HiDPI to scaled resolution!

In short, you just need the right tool to downscale your HiDPI laptop or monitor to a scaled resolution. Apple does with with Macbooks because they know most applications aren’t suitable for the highest resolutions yet. The future is here as I said, it’s just that most applications and desktop environments in GNU/Linux are not ready for it.

So congrats on downscaling, welcome to a screen full of right-sized fonts and icons!

(cover photo by ACBahn (Own work) [GFDL or CC BY 3.0], via Wikimedia Commons)

UPDATE! The above is just a workaround!

As pointed out in the Reddit comments on /r/linux, the above settings are a workaround. The scaling that Apple does with Retina is not the same as the scaling done with GNOME and the Tweak Tool.

This comment by MrSicles explains:

If I’m understanding this right, this effectively turns your HiDPI monitor into a lower resolution monitor, where, for example, four pixels on your monitor are used to display just one pixel from the operating system. That group of four pixels will always have the same color, so they act as one larger pixel, defeating the purpose of a HiDPI display.

The article says that retina-display Macs apply this kind of downscaling, but that’s not right. OS X’s scaling options control the amount of upscaling applied. OS X upscales everything to “look like” the chosen resolution, but it doesn’t group pixels together — each physical pixel can have its own color, so you get the benefit of a HiDPI display — everything looks smoother.

And makruiten further explains:

u/MrSicles is correct. Apple uses high resolution text and graphics where possible and upscales or downscales elements if needed. Low resolution legacy content is upscaled. The resolution that Apple reports at the settings panel is the effective resolution, meaning that the size of the content will be identical to that on a non-retina screen set at that resolution. It’s not the real resolution; everything it still rendered at the native resolution, be at full size, downscaled or upscaled.

Now, if you use your suggested settings, you’re just throwing away all that extra sharpness that your screen provides. This is not at all what Apple does. If you set GNOME HiDPI scaling to 2 and keep your resolution at the highest setting, you’re using your screen to the fullest. The downside is that content may now appear too big (or too small) and GNOME does not have the option to use fractional scaling, like Apple does. Another downside is that not all apps may behave well at this setting and a lot of apps don’t offer HiDPI support anyway and low resolution elements will be upscaled, which doesn’t do much (or anything) for the perceived sharpness.

Your solution might not be perfect from a technical standpoint, but it saves you from the headaches that HiDPI scaling may give you – albeit at the expense of losing that extra sharpness that your laptop provides.

Basically, since I’ve had the Dell XPS I’ve worked at the highest native resolution with scaling factors set to 2. I’ve tried the workarounds and using GIMP and Audacity, which are part of my workflow has been hard to do with the highest resolution. The workaround I settled on is downscaling at the expense of some sharpness and I hope it helps anyone else while we patiently wait for patches to GIMP, Audacity and other tools that aren’t scaling correctly at the moment.

One comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.