Solving Ubuntu 20.04 LTS external monitor resolution problems

Solving Ubuntu 20.04 LTS external monitor resolution problems with custom resolutions

Solving Ubuntu 20.04 LTS external monitor resolution problems
Photo by Joshua Aragon / Unsplash

I've recently learned that messing with fractional scaling within Display settings of Ubuntu 20.04 slows everything down, almost to a halt.

If I disabled the fractional scaling setting and used e.g. 200% scale then both monitors were set up for 200%, but what I wanted is to have my primary monitor at 200% and secondary at 100%.

Through many attempts and recommendations you can find online I've learned I should fiddle with screen resolution instead of scaling.  

This is what I did

  • Disable Fractional Scaling
  • Keep Scale always to 100%
  • Instead set the resolution to your monitor (either laptop of external)

The Setup

I have 2 external monitors. At home, I have ViewSonic Corporation 31'' with which I have no problems at all attaching to XPS 13 Dell laptop. Everything works fine.

At work, however, I have a crappy Dell S3221 QS 32'' Curved 4K monitor. As long as I used a Single Display everything is fine (well except the quality of the S3221) but as soon as you try to Join Displays things go awry.

The command we'll be using is xrandr

Here is my xrandr output (type xrandr in terminal):

eDP-3

It shows I have eDP-1 as my laptop monitor and eDP-3 as my external monitor (ViewSonic in this case).

Solution

Add custom resolutions for one of the monitors that you feel is not "sizing" well. For me, that was my laptop monitor, eDP-1.

The primary resolution was 3840x2400. Instead of scaling it 200%, I had to add custom resolution settings (since those were not available by default). The target resolution for me was (3840x2400) / 2 =  1920x1200.

First this is to run the command:

cvt 1920 1200
result of: cvt 1920 120

Copy everything after Modeline and run the xrandr newmode

sudo xrandr --newmode "1920x1200_60.00"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync

Now add create mode for your display device (in my case that's eDP-1).

sudo xrandr --addmode eDP-1 "1920x1200_60.00"

Now you can go to Display settings and check your new resolution

The last thing to do is to save those settings on computer restart in case you need to reuse them.

sudo pico ~/.profile

and add the last 2 commands to the bottom of the file.

Ctrl-X to exit and save.

That's it.