Make 4k works with normal monitor in Linux (Fedora 32)

My screen is composed of two monitor

  • Left: 3840x2160 Dell 4k screen HiDPI
  • Right: 2560x1080 Dell wide screen


We cannot set it with GUI Fedora provided.

This is not very direct because we have different dpi.


After few days, I just arrive at the solution and here is the important notes:

First, the screen size must be according to the finer resolution

The screen width is 3840 + 2560 *2
The screen height is according to the larger of 2160

***Trying to zoom in the 4k screen is the wrong approach

Second, GNOME must be set to scale x2

This will make application looks correctly scaled.

Here is the configuration that make it work:

How to do it?

Set application scaling with Gnome

All application must take high definition scaling

$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "[{'Gdk/WindowScalingFactor', <2>}]"
$ gsettings set org.gnome.desktop.interface scaling-factor 2

You can edit this with tool like “dconf” for easier interface and also easier way to revert the changes.

Resize and Rotate

Zoom in normal monitor to make 5120x2160 goes back to 2560x1080.

The scale indicate zoom factor denoted as z where

  • z>1 = zoom in
  • z<1 = zoom out
xrandr --output DP-0 --scale 1x1 --output HDMI-0 --scale 2x2

Check the result

$ xrandr --verbose

You will see the output like:

Screen 0: … current 8960 x 2160, maximum 32767 x 32767
HDMI-0 connected 5120x2160+3840+0 … 673mm x 284mm
DP-0 connected primary 3840x2160+0+0 … 597mm x 336mm

and also the scaling. You will see the transformation matrix to be scaling matrix without any distortion on the normal output like this:

Transform: 2 0 0
0 2 0
0 0 1

Hope this help.