0

I have Dell XPS 15 7590 with 4K touch display (resolution 3840 x 2160). Then I have a Samsung 27" monitor with resolution 2560x1440 which is placed above my laptop's screen.

I would somehow like to achieve to set scale on laptop's 4K to 200% (as 100% on 15 inch 4K is making everything super small) and external Samsung display to 100%. However it looks like it is not possible to have different scales on Ubuntu 18.04.

I found here that there is possibility to make it work like that using xrandr to (in my case) double Samsung's resolution and then just set all to 200%. However I am not very familiar with this and I am not sure how exactly to execute it in my case and not break it. This is how standard xrandr command output looks like in my case:

Screen 0: minimum 320 x 200, current 3840 x 3600, maximum 16384 x 16384
eDP-1 connected primary 3840x2160+0+1440 (normal left inverted right x axis y axis) 344mm x 194mm
   3840x2160     60.00*+  59.98    59.97  
   3200x1800     59.96    59.94  
   2880x1620     59.96    59.97  
   2560x1600     59.99    59.97  
   2560x1440     59.99    59.99    59.96    59.95  
   2048x1536     60.00  
   1920x1440     60.00  
   1856x1392     60.01  
   1792x1344     60.01  
   2048x1152     59.99    59.98    59.90    59.91  
   1920x1200     59.88    59.95  
   1920x1080     60.01    59.97    59.96    59.93  
   1600x1200     60.00  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   1400x1050     59.98  
   1600x900      59.99    59.94    59.95    59.82  
   1280x1024     60.02  
   1440x900      59.89  
   1400x900      59.96    59.88  
   1280x960      60.00  
   1440x810      60.00    59.97  
   1368x768      59.88    59.85  
   1360x768      59.80    59.96  
   1280x800      59.99    59.97    59.81    59.91  
   1152x864      60.00  
   1280x720      60.00    59.99    59.86    59.74  
   1024x768      60.04    60.00  
   960x720       60.00  
   928x696       60.05  
   896x672       60.01  
   1024x576      59.95    59.96    59.90    59.82  
   960x600       59.93    60.00  
   960x540       59.96    59.99    59.63    59.82  
   800x600       60.00    60.32    56.25  
   840x525       60.01    59.88  
   864x486       59.92    59.57  
   800x512       60.17  
   700x525       59.98  
   800x450       59.95    59.82  
   640x512       60.02  
   720x450       59.89  
   700x450       59.96    59.88  
   640x480       60.00    59.94  
   720x405       59.51    58.99  
   684x384       59.88    59.85  
   680x384       59.80    59.96  
   640x400       59.88    59.98  
   576x432       60.06  
   640x360       59.86    59.83    59.84    59.32  
   512x384       60.00  
   512x288       60.00    59.92  
   480x270       59.63    59.82  
   400x300       60.32    56.34  
   432x243       59.92    59.57  
   320x240       60.05  
   360x202       59.51    59.13  
   320x180       59.84    59.32  
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 connected 2560x1440+720+0 (normal left inverted right x axis y axis) 597mm x 336mm
   2560x1440     59.95*+
   1920x1080     60.00    50.00    59.94  
   1680x1050     59.88  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1440x900      59.90  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08
0

I did some research and found one way (based on this solution) to do that.

First I set 200% scale in Display settings.

Command to check current setup:

xrandr --current | grep -w connected

In my case returning:

eDP-1 connected primary 3840x2160+0+1440 (normal left inverted right x axis y axis) 344mm x 194mm
DP-3 connected 2560x1440+731+0 (normal left inverted right x axis y axis) 597mm x 336mm

And these are 2 commands to change it as I want:

xrandr --output DP-3 --scale 2x2 --mode 2560x1440 --fb 5120x5040 --pos 0x0
xrandr --output eDP-1 --scale 1x1 --pos 640x2880

Notes about numbers I used (to have laptop's screen in the middle below external monitor:

2560*2 = 5120
1440*2 = 2880
Max(3840,5120)=5120
2160+2880=5040
(5120-3840)/2=640

After that I have:

eDP-1 connected primary 3840x2160+640+2880 (normal left inverted right x axis y axis) 344mm x 194mm
DP-3 connected 5120x2880+0+0 (normal left inverted right x axis y axis) 597mm x 336mm

To revert back:

xrandr --output DP-3 --scale 1x1 --mode 2560x1440 --fb 3840x3600 --pos 731x0
xrandr --output eDP-1 --scale 1x1 --pos 0x1440

This is still quite tricky way to do it so I will be happy for any other solutions.

UPDATE:

This change is actually causing that mouse cursor is flickering. I found solution based on this post and run one extra command to fix it (even though it is kind of a hacky solution):

xrandr --output eDP-1 --scale 0.9999x0.9999

So the full command in my case is:

xrandr --output DP-3 --scale 2x2 --mode 2560x1440 --fb 5120x5040 --pos 0x0; xrandr --output eDP-1 --scale 1x1 --pos 640x2880; xrandr --output eDP-1 --scale 0.9999x0.9999

Note: I experienced this flickering only while using intel graphics. I did not see any flickering with nvidia (using prime-select and restart to switch).

UPDATE 2: Using scale 0.9999x0.9999 is not a good idea. It slows down monitor reactions and you can notice some lags when watching videos.

| improve this answer | |
  • Case when laptop's 4k display is left from external: xrandr --output DP-3 --scale 2x2 --mode 2560x1440 --fb 8960x2880 --pos 3840x0 && xrandr --output eDP-1 --scale 1x1 --pos 0x720 – matt525252 Apr 16 at 17:31

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.