I'm using Ubuntu 12.04.3 with NVidia drivers (319) for my Quadro K2100M graphic card, and when I switch my main 3200x1800 laptop screen to mode 1920x1080 (using nvidia-settings), the display goes blurry...

I am using two screens:

  • My main screen is a LCD with max resolution 1920x1200.
  • My laptop screen (original resolution 3200x1800) is sitting to the right of that.

The main problem is that, on Ubuntu, the font is far too small on my laptop screen. Because of that, I wanted to change the resolution of my laptop to 1920x1080.

Reading Galgalesh answer I tryed to compute my DPI and here is the DPI configuration which I should have :

  • 94x94 for my main LCD screen 1920x1200
  • 235x236 for my 3200x1800 laptop screen

Is there a way to have dual DPI resolutions with an extended desktop?

share|improve this question
3  
Well, driving any LCD screen on a non-native resolution will appear blurry. That's because the way the pixels are laid out in a fixed way and the signal does not match this. What exactly are you expecting to happen? Disabling scaling perhaps? But then it's only displayed in the middle of the screen and not full screen. For optimal display always keep it your display on the native screen resolution. I don't think this has anything to do with Ubuntu. – gertvdijk Dec 23 '13 at 14:37
1  
@gertvdijk: So do you have a way of keeping both monitors at their native screen resolution? I think that's what Anthony's asking. – beldaz Oct 7 '14 at 21:56
2  
@beldaz My reply was to revision 1 of the question. It did not mention anything related to dual-screen setup at the time. Because the question was changed significantly, this raises the eyebrows for any posts changed after that date. It basically invalidates anything contributed and really lowers my motivation to help. Users should ask a new question instead, in my opinion. – gertvdijk Oct 7 '14 at 22:02
    
@gertvdijk Sorry, makes sense now. – beldaz Oct 7 '14 at 22:15
    
I wonder if the possibility to use Wayland in the newest Ubuntu makes this any easier to solve. – mkataja Jun 8 '15 at 14:18

It seems people are still struggling trying to work with several monitors and HiDPI displays. A good workaround is described in arch wiki https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays. So, I have:

  • laptop asus ln303ux: 3200x1800,
  • external monitor: 1920x1200

Now I use Ubuntu 14.10 & GNOME Shell 3.12.2 that has pretty usable HiDPI support. So I just use out-of-the-box support of HiDPI - scaling factor is 2 (it can be set up via GUI). That means that on external monitor I get everything twice bigger than acceptable. Thus, I use xrandr; but instead of downscaling laptop screen, I upscale external monitor screen:

xrandr --output HDMI1 --scale 2x2 --mode 1920x1200 --fb 3840x4200 --pos 0x0
xrandr --output eDP1 --scale 1x1 --pos 320x2400

So, one by one:

  1. --output HDMI1 in my case is the external screen, eDP1 is the laptop screen.
  2. --scale 2x2 - make everything on external screen twice smaller
  3. --mode XxY - explicitly set the resolution for screen (not necessary if is already set)
  4. --fb XxY - set size of a virtual screen (framebuffer) (important without this, you will be able to use only a fourth part of the screen). In my case one screen was on top of another, so I added up effective heights 2400+1800=4200. Also note, that maximum framebuffer size might be specified in xorg.conf - then you cannot exceed it (it is written in the first line of xrandr -q output).
  5. --pos XxY - in my case I set absolute positioning of the screens, so my laptop screen is directly on the bottom of the external sceen.

And this is it! Everything is as crisp as it could be.

FYI: to get the names of the screens and available resolutions, one can run xrandr --current. More information on setting the resolution an be found here: https://wiki.ubuntu.com/X/Config/Resolution .

UPDATE - OPTION 2: one more interesting workaround for applications that support GTK3. If I normally use only one application on the large screen (e.g. some IDE, like leksah), I do not resize the the screen, but run the application scaled to its original size

env GDK_SCALE=0.5 GDK_DPI_SCALE=0.5 CLUTTER_SCALE=0.5 appname
share|improve this answer
6  
got an error of failed request: BadValue (integer parameter out of range for operation) :-( – Juh_ Jan 19 '15 at 13:17
1  
Thank this works almost perfectly. The only downside is a giant cursor on the low res monitor. Any idea how to fix that? – wgcrouch May 8 '15 at 10:11
3  
The --fb option doesn't seem to enable more than a quarter of the 2x2 screen (mouse cursor can't be moved past top left quadrant) – EoghanM Sep 8 '15 at 17:33
6  
For a side by side setup with a 1920x1080 external monitor sitting to the left of my 3200x1800 hiDPI laptop: xrandr --output eDP1 --scale 1x1 --pos 3840x0 ; xrandr --output HDMI1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 0x0 – Daniel Bower Nov 13 '15 at 16:23
2  
The --fb parameter is 2*external monitor + laptop screen – Brian C. Mar 16 '17 at 15:17

Why is it blurry?

Your screen always displays 3200x1800 pixels. If you lower the screen resolution on your computer that just means that your screen has to scale the image to fit your screen. Depending on the ratio between your native resolution and the current resolution, that scaling will produce a blurry image.

You can find more information on scaling and native resolution here: https://en.wikipedia.org/wiki/Native_resolution

How can I make the text bigger?

If the text is to small you have two options:

1. Change Ubuntu's font size

How do I change fonts and adjust their size?

2. Change DPI (will make the whole interface bigger, not only text)

How to find and change the screen DPI? (answer by @whtyger)

share|improve this answer
1  
Just as a note on increasing font sizes. Rather increase the DPI so the whole user interface scales. This should be recognized properly automatically (reading the EDID from your display), but if that fails: How to find and change the screen DPI? – gertvdijk Dec 24 '13 at 18:40
17  
Actually that's not an answer for my question. I'm using two different screens with different resolutions. I've made the computation : my left main LCD screen should have 94x94 DPI resolution whereas my right laptop screen should have 235x235 DPI... And I don't find any way to set two different DPI resolution except by configuring nvidia to run 2 separated X, and then I can't pass one window from left to right... Windows is far better to handle that problem :( – Anthony O. Jan 6 '14 at 9:02
8  
-1 for completely ignoring the point of the question – Martin Konecny Sep 3 '14 at 0:19
6  
@AnthonyO. Please don't change your question considerably after an answer was posted you don't like. At the time this answer was posted you did not mention anything related to a dual-screen setup (see revision 1). Changing your question invalidates anything already posted and you should not do that. Instead, revert the question edits and post a new question instead. – gertvdijk Oct 7 '14 at 22:18
3  
@MartinKonecny The original questioner substantially edited his question, this answer does answer his original question, check the revisions. – Jamie Kitson Mar 26 '15 at 22:09

I used artmem's solution but ran into the mouse problem mentioned by EoghanM. The workaround I found in the old bug report he linked to related to --panning.

I'm shooting for: - DP1-2 3840x2160 in native DIP. - eDP1 1366x768, scaled to look reasonable to the right of DP1-2.

I get this to happen by having a frame buffer that is like DP1-2 + (2x eDP1) then I scale everything going to eDP1 by 1/2.

This should be simple but xrandr is a bit tricky.

Here --scale is used to reduce everything going to eDP1 by 1/2. --panning is the same as eDP1 in the original frame buffer with the position (+3840+0) of just to the right of DP1-2. +0+2160 would be below it.

xrandr -d :0 --fb 6572x3696 --output DP1-2 --mode 3840x2160 --scale 1x1 --rate 60 --pos 0x0 --primary

# sometimes panning get applied incorrectly when switching from some other mode, running it twice is a work around
xrandr -d :0 --output eDP1 --off
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0

I also set Xft.dpi to 185

$ cat ~/.Xresources
Xft.dpi: 185

When I unplug from the external monitor I run :

xrandr -d :0 --output DP1-2 --off
xrandr -d :0 --fb 2732x1536 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+0+0 --pos 0x0 --primary

That doesn't look great but I'm not away from my desk much. You could get around this by changing Xft.dpi and restarting all your desktop programs. I don't know of a way to change Xft.dpi and then get clients to use it without restarting them.

share|improve this answer
    
Panning was the final piece of the puzzle - it solved the cursor stuck at a quarter of the screen issue. Thanks @Brian! – rtindru Apr 26 '17 at 11:50
    
"running it twice" ???? holy pixel, it works (I was already applying panning, but it's correctly applied only if I run the same command twice). – Riccardo Galli May 2 '17 at 17:44
    
Ya, I noticed that it was working about every other time I ran it so I thought I'd try it twice and, well, here we are. – Brian C. May 3 '17 at 19:10
    
Alright, so this doesn't work with the kernel 4.5.2. I installed just that kernel to deal with a docker related problem in 4.5.1 and now the above script leaves me with a black screen. To fix this on 4.5.2 I do the eDP1 commands first without the --off and then the DP1-2 command. – Brian C. May 10 '17 at 19:48

I was able to solve this (with issues) using the details outlined in the following github discussion: https://github.com/linuxmint/Cinnamon/issues/3606

External Monitor QHD (2560X1440), Internal/Laptop Monitor 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2880
xrandr --output DP-1 --mode 2560x1440 --scale 2x2 --fb 5120x4680

OR

External Monitor FHD (1920x1080), Internal/Laptop Monitor 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2160
xrandr --output DP-1 --mode 1920x1080 --scale 2x2 --fb 3840x3960

These work, but there is a significant amount to tearing in the high resolution monitor (laptop) when I move windows, resize screens or scroll on a browser. This feels like a software rending solution (which has all these issues of tearing, and slow refreshes).

Its 2017, Linux/Gnome needs to address the multi-monitor, mixed scaling solution. Both Windows 10 and OS X have this resolved without having to resort to command line band-aid fixes that partially work (the tearing issue isn't acceptable for gaming)

share|improve this answer
1  
Is this a new answer or are you trying to report a bug? – user68186 Jul 20 '17 at 19:16
    
Its an elaboration on an existing answer, with more options that one can leverage. The answer provided by @artem above explains how these settings work. I simply attempted to provide 2 options that can be used as is for folks who have either a QHD or FHD external monitor, and a 4K primary monitor/laptop monitor. The bug is in the tearing you see with this solution. That is inherent to this approach. – Jeets Jul 21 '17 at 21:35
    
With proliferation of 4k and multi-resolution setups, I agree with the final paragraph this needs resolution. Was not too bad before, but now it is simply wrecking my setup on one monitor now that I have a 4k. Hopefully Ubuntu 18 LTS they will have this fixed. – neuronet Sep 11 '17 at 13:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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