14

Although I know how to tweak here and there..

I wonder if there is any Ubuntu 16.04 (or newer) variant that specializes or works 'out-of-the-box' with HiDPI screens.

For that matter, it would be interesting to know any good and recent Linux distribution that works well with HiDPI...

Update:

Thanks for you answers but I am not looking for a way to adjust my machine. I am aware of these tweaks and I am already using a few of them. My question was more towards which Ubuntu variant (such as Mate, Mint, etc.) handles HiDPI well. For Ubuntu Mate it is part of their roadmap but not there yet. I wonder if there is something already available.

  • I know Ubuntu MATE has had some recent improvements regarding HiDPI display support, but I can't say I'm familiar with it or that I've tried it. – Nick Weinberg Nov 1 '16 at 19:08
  • Thanks! At least it seems to be in their road map: wiki.mate-desktop.com/roadmap – Juan Leni Nov 3 '16 at 6:34
  • I suggest you check my answer here as well: askubuntu.com/questions/788099/is-ubuntu-4k-ready I don't know what you really need; if you've got a desktop computer with just one hidpi monitor, Ubuntu Unity works fine and is probably the way to go. Multiple monitors and/or different scaling factors, or laptops, are just unreliable. – Alan Franzoni Feb 9 '17 at 16:31
12
+50

No, there isn't any to this answered date.

What is "consistent"

Before one disagrees with this answer, make sure to understand the question by OP. Given that one needs to manually set DPI value or scale factor of desktop environment, which varies for different monitors, we can't say Ubuntu "handles HiDPI consistently".

I'd understand "consistent" as more towards out-of-box experience (Even OP has mentioned this in the question). That is, in terms of the ability of operating system to use appropriate settings for any given hardware and application software that respects the settings.

Does Ubuntu offer out-of-box experience for HiDPI support? No, or mostly uncertain.

HiDPI support for Ubuntu

Trusty Tahr (14.04) is the first Ubuntu release that explicitly mentioned HiDPI support. Even before the release, relevant information can be traced back to this dated message.

cairo 1.13 snapshot in the ubuntu-desktop ppa (Hi-DPI support testing)

Better support for Hi-DPI screen is a topic that is being discussed for the coming LTS [...]

From TrustyTahr/ReleaseNotes for 14.04:

From XenialXerus/ReleaseNotes for 16.04:

  • Improved HiDPI support in the greeter
  • Support for scaling cursors in HiDPI environments

HiDPI support for others

From blog post Kubuntu and HiDPI Screen dated 16 February 2016, by Giri Alam:

Kubuntu/KDE is not perfect on HiDPI screen. Currently, there is no utility to automatically detect and scale the UI based on device screen resolution and Dots Per Inch (DPI) value, but the workaround to make Kubuntu more usable on HiDPI screen is quite simple.

From blog post Ubuntu MATE 16.10 Alpha 1 dated late June 2016, on Ubuntu MATE blog:

We have initial HiDPI support (almost) working. Don’t get too excited, this is an all or nothing implementation. When enabled all GTK3+ applications (not just MATE) will be rendered using high quality pixel doubling. If you have a 2160p display, it looks ace :-D

However, no mention of HiDPI support status in the final release note of Ubuntu MATE 16.10.

From GNOME Wiki HowDoI/HiDpi:

GNOME currently enables hi-dpi support when the screen resolution is at least 192 dpi and the screen height (in device pixels) is at least 1200.

From reddit thread of BudgieRemix dated mid-June 2016, prior to becoming Ubuntu Budgie:

There doesn't seem to be HiDPI Support in any native settings menus, or on the lock screen. Scaling on the lock/login screen was added to Ubuntu 16.04 for HiDPI monitors. [...] scales everything correctly with a scale factor of 2, however there is one issue. [The icons in the system tray] do not scale and do not appear correctly.

And the only replied answer:

None of the current members of the development team has a HiDPI monitor so we cannot reproduce the issues you raise :(

Overall HiDPI support

Although I have not quoted other sources here, most mentioned flavours for HiDPI support are Ubuntu GNOME and Ubuntu (Unity). Some mentioned Kubuntu/KDE and Xubuntu/Xfce, but not much information for hardware that actually worked for these flavours.

Disclaimers

This answer intends to review HiDPI support status, as 2016, for Ubuntu and its official flavours. The following limitations shall be noted:

  • Some flavours are not mentioned at all because those had no relevant information of HiDPI support

  • Non-Ubuntu flavours or unofficial derivatives are not mentioned, such as Linux Mint/Cinnamon, elementary OS/Pantheon

  • I don't have any HiDPI monitor or HiDPI supported hardware to verify above information; This answer solely quotes relevant information from the web

TL;DR To this date, HiDPI support is work in progress, regardless of distribution and desktop environment. There isn't any Ubuntu flavour that handles HiDPI consistently yet.


Related posts on Ask Ubuntu

  • 1
    Thank you very much. Great answer and specific to my question. – Juan Leni Nov 19 '16 at 7:29
2

The Problem

This is the strangest answer I've written. When upgrading to Ubuntu 16.04 I had to set scaling factor to 1.4 on this screen:

Screen Scaling

I know it says 1.5 but 1.4 worked better and I had also tried 1.25.

Next I had to go into Google Chrome and set "Large Font" in the settings. Alternatively I had tried setting zoom factor to 110% and 125%.

The Solution

I fixed this by acccident using Ctrl+Alt+F5, logging into the console and typing startx. Then using Ctrl+Alt+F1, logging into to console and typing sudo reboot.

Upon signing in all the icons and menu lines were super enlarged and I reset monitor scaling (in picture above) to 1.0. I then had to change Google-Chrome font size from "large" to "normal".

The Explanation

I wouldn't believe this solution myself unless it happened to me.

I then discovered the command xrandr --listmonitors which shows:

$ xrandr --listmonitors
Monitors: 2
 0: +*LVDS1 1920/382x1080/215+0+1080  LVDS1
 1: +HDMI1 1920/1107x1080/623+0+0  HDMI1

Notice the screen size 382x215 millimeters for the 17" laptop display (LVDS1) and 1107x623 millimeters for the 50" TV. This plays an important role in the new DPI scaling I'm benefiting from, but I don't have the experience to explain it academically.

So yes it's an incredulous answer and I wouldn't believe it had it not happened to me. I believe there must be a better method such as reconfiguring X, perhaps by deleting a configuration file so it's automatically rebuilt but, I don't know that shorter solution.

The Proof

The end result is what is important:

Screen no scaling

  • 1
    I didn't understand what this answer is attempting to convey. – Jus12 Jan 25 '18 at 16:23
2

Even with and font and window sizes tweaked, some programs still "don't like" HiDPI screens because their programmers don't tell the program how to support it. It is partly a problem of application support. On Windows some programs have the same issue. What Windows does is to scale the whole window giving a pixelated looking thing.

Some answers suggest you create scripts to change the screen resolution before you start a program. I think this is too awkward. Personally I find virtual magnifiers very helpful.

Magnifier programs have already been discussed here: Is there a Magnifier app for Ubuntu? I want to use a bounding box with the mouse on a part of the screen and magnify it for our eyes to Zoom

Here I will show you how to use the Compiz Config Settings Manager's default magnifying glass.

  1. Start Compiz Config Settings Manager (If you don't have it, install it first)

  2. Click on the Accessibility tab on the left. On the right, click on Enhanced Zoom Desktop.

  3. Enable Zoom In Key and Zoom Out Key. For my preference, I set them to Ctrl+Super+= and Ctrl+Super+-.

  4. If the default Sync Mouse panning behavior isn't to your liking, you can go to the Mouse Behavior tab and select your favorite Zoom Mode.

  5. Close the program. Now press Ctrl+Super+Equal. You should see your desktop magnified.

1

Changing GNOME 3's dpi settings src

To change the scaling settings in GNOME 3, you'll need the GNOME Tweak Tool. If you don't have it installed, you can probably find the package in your distribution's repository. You can do this by using one of the following commands as root or by prefixing them with the sudo command:

  • Fedora: # yum install gnome-tweak-tool
  • Ubuntu: # apt-get install gnome-tweak-tool
  • Arch Linux: # pacman -S gnome-tweak-tool

Once you've got GNOME Tweak Tool installed, open the activities screen by moving your mouse to the upper-left corner of your screen, tapping the Super (Windows) key, or clicking Activities to the far left of GNOME's top bar. Search for tweak tool and open the app. Once open, click the Windows tab. Under HiDPI, adjust the window scaling to 2, or higher if you need to:

tweak tool window firefox warning Voila! All of your GNOME 3 applications like Evolution and Rhythmbox should be properly scaled and usable. But chances are you're going to want to browse the web too, so let's get your browsers sorted out.

check the article for more detail

1

Best solution I found

As previously mentioned you'll get very little luck having this just work - especially with multiple monitors (my problem). I settled on a one-line command to achieve consistent multi-monitor presentation, with my on-board display being the hidpi, this:

./xrandr --output eDP-1 --mode "2880x1800" --scale "0.5x0.5"

This command means: Scale my native resolution down by 50%, which when we're talking about pixels means the rendering shouldn't have to interpret very much at all and the result should be crisp.

Why it works: Because, one "square" pixel is now represented in 4 square pixels.

Note: Your options will probably be a bit different.

Some details: Had to switch back to nouveau from nvidia


First - See if your default system xrandr scaling has no blur

  • Install x11-server-utils

    sudo apt install x11-xserver-utils
    
  • Find the 'connected' hidpi display, it will have an identifying name in front of 'connected':

    xrandr -q
    
  • example output, your monitor name is in front of the 'connected':

xrandr -q output

  • So my monitor is 'eDP-1' and the native resolution, the top one, is 2880x1800. So, we scale the top one by 50% to avoid blurring, be sure to use your values from xrandr -q for the eDP-1 and the 2880x1800:

    xrandr --output eDP-1 --mode "2880x1800" --scale "0.5x0.5"
    

If you do this and you still have crisp fonts, etc, then you are set, skip to 'Wrap Up' below.

If it is blurry, then the following steps will help.


Step 1 - System xrandr still blurry...system prep

sudo apt install git build-essential autoconf xutils-dev automake dkms gksu libxrandr-dev mesa-utils x11-xserver-utils

Could be a bit different for you depending on your system, this worked for me though.


Step 2 - get the xrandr source

clone the xrandr code

git clone https://anongit.freedesktop.org/git/xorg/app/xrandr.git xrandr_source && cd xrandr_source

Step 3 - note your xrandr version

Note your xrandr version, you'll need this:

xrandr --version | grep 'program version' | awk '{print $4}'

Step 4 - checkout the same version number git tag as what your system has

Check the git tags for xrandr from within the xrandr_source directory

git tag --list | grep 'xrandr'

Find your version number and 'check out' that tag

git checkout tag/xrandr-[your version number here]

for me this was:

git checkout tax/xrandr-1.5.0

Step 5 - Modify xrandr.c

Open xrandr.c with whatever file editor you want to use. Search for 'transform.filter'. There are about three places. You'll notice it's within a conditional, something like this:

    if (sx != 1 || sy != 1)
        output->transform.filter = "bilinear";
    else
        output->transform.filter = "nearest";

'bilinear' is what makes it blurry - BUT - since we are "squarely" scaling down, that is, one pixel is now four, we don't need bilinear and can go with 'nearest'.

You have two options, enhance the if conditional, or completely remove all of the if and keep just:

output->transform.filter = "nearest";

Since we are not going to 'install' this xrandr, might as well just take the route I did. You'll find a few places with:

output->transform.filter = "bilinear";

Simplest thing is to just change the "bilinear" to "nearest"

Save the file. Close your editor


Step 6 - compile

./autogen.sh && make

You should have a newly built xrandr now in that directory, try

./xrandr -q

Which should give you output.

Now you can try the original xrandr command:

./xrandr --output [your display] --mode "[your native resolution]" --scale "0.5x0.5"

Step 7 - wrap up

You can also now do things like play with all your regular settings related to fonts, dpi, anti-alias, etc

I don't need all the extra real estate the hidpi gives, plus you just end up enlarging everything to make is usable.

Credit: I got most of my stuff for this from here, But, it's a couple years old and I think it belongs here on a more recent question: https://forums.linuxmint.com/viewtopic.php?t=159064

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.