Scaling problem using Ultra HD resolution between a laptop and a monitor

It seems to be that there is a single setting for ultra hd screens, which applies to all attached monitors, even though that may not be suitable, and seems to be a setting from X, maybe.

The Arch Linux wiki has a section on this, with a few options using xrandr to scale the monitor, where eDP1 is the laptop screen:

xrandr --output eDP1 --auto --output HDMI1 --auto --scale 2x2 --right-of eDP1

apparently there can still be a few problems though, with either these two screens overlapping, or secondly the cursor may not cover all of both screens.

if the internal monitor has dimensions AxB, external has CxD and the scaling is ExF, as suggested on the Arch wiki, then a shell script is linked to a user called wvengens Github, which would need the displays being given the appropriate ones. It gives:

xrandr --output eDP1 --auto --pos ${(A-C)/2}x${D} --scale 1x1 \
--output HDMI1 --auto --scale 2x2 --pos 0x0

For the second problem, arch suggest using panning:

xrandr --output eDP1 --auto \
--output HDMI1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP1

and finally, if any of that helped, the ubuntu wiki suggests the xrandr command could be saved in /etc/gdm/Init/Default, just before the line initctl -q emit login-session-start DISPLAY_MANAGER=gdm. (sorry, too low rep for a third link..)


  1. TLDR: It's not a bug, just a less that ideal solution for comfortably using HiDPI screens.

It seems these solutions stem from the fact that most software does not automatically compensate for higher DPI monitors. If we left things as it were (no scaling or DPI settings) a lot of programs end up looking tiny on a HiDPI screen. As such, compensation can be made at the OS level (see Information on HiDPI for Arch Linux), but this causes a problem when you have two screens with different pixel density.

  1. Given an internal HiDPI screen @ 3200x1800 and an external @ 1920x1080, the following configurations should work (tested with a Dell XPS9350 and XPS9360).

Configure external to the right:

xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode 3200x1800 --output 
DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0

Configure external to the left:

xrandr --dpi 276 --fb 7040x3960 --output DP-1 --scale 2x2 --panning
-3840x2160+3200+0 --pos 0x0 --output eDP-1 --mode 3200x1800 --pos 3840x0

If one finds themselves switching a lot, it might be a good idea to put these commands in your .bashrc as an alias. For example:

alias ext-config-right="xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode 
3200x1800 --output DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0"