14

I have a Dell p2715q 27" 4K monitor and a HP 23xi pavilion 23" 1080p monitor for my dual monitor setup. The Dell monitor is currently running at a resolution of 3840x2160 @ 60Hz, while the HP is running at 1920x1080 @ 60Hz. When I initially setup the monitors on my desktop computer, which is running Linux Mint 17.3 Cinnamon (version 2.8.6) 64-bit, the scaling on the Dell was still set at 1, so everything was really tiny in comparison to the HP, which was scaling everything appropriately since it is not a HiDPI monitor like the Dell. When I changed the scaling to 2, everything on the Dell looked great, but the HP now makes everything twice as large.

Is there a way to scale the HiDPI Dell monitor at 2x, while keeping the HP monitor at 1x to make everything on both screens scale properly?

6 Answers 6

8

Using Linux Mint 18.1 Cinnamon in trial mode (live boot) I was able to configure my Dell XPS 13 9360 laptop and external monitor by following these instructions. For me, scale worked better than scale-from.

Internal HiDPi monitor: 3200x1800

External VGA monitor to the right of laptop: 1920x1080

First set "user interface scaling" to double in Preferences > General

Then run the following code in a Terminal window:

xrandr --output DP1 --scale 1.5x1.5 --panning 2880x1620+3200+0 --fb 6080x1800 --right-of eDP1

DP1 is my external monitor, eDP1 is the laptop monitor. Find the names of your screens by running:

xrandr

The first two panning values are the VGA monitor size 1920x1080 multiplied by my scale 1.5 i.e. 2880x1620

The second two panning values are the external monitor's offset from the laptop monitor, that is the width of the laptop monitor (horizontal) and 0 (vertical) because they are side by side, i.e. +3200+0

Framebuffer is total horizontal width of screens x total height of screens i.e. (3200 + 2880) x 1800

Edit: if I try a scale of 1.7, my keyboard and mouse stop working and I have to hard-reset the machine. I'd love to know what is the reason for this?

2

There are a number of solutions in various forums and Stack Exchange using scaling (e.g. --scale 2x2 or --scale-from 1920x1440).

While these did work for me, there was a slight blurriness on the up-scaled monitor. It was not very obvious and could be missed easily, but I am very sensitive to such things and it gave me headaches.

A better solution which does not create any blurriness is to use --transform instead of --scale.

The position of the 2 monitors needs to be set properly: the likes of --left-of, --below, etc. don't work as they don't take into account the transformation.

Here is what I am using, with explanations of each value so that you can adapt it to your situation:

xrandr --output DP-1 --mode 2560x1440 --pos 0x0 --transform 2,0,0,0,2,0,0,0,1 --output eDP-1 --mode 3840x2400 --pos 0x2880 --primary

You can find the name and the proper default resolution for your monitors by running xrandr without arguments.

  • My external monitor (DP-1) has a resolution of 2560x1440
  • I need to transform the resolution by a factor of 2
  • My laptop (eDP-1) has a resolution of 3840x2400

I want to have my external monitor above the laptop. --pos is the position of the top left corner of one monitor in the monitor space (the total area occupied by both monitors).

So --pos 0x0 puts the external monitor at the top. To have the laptop below it, I need to get the proper value for the y coordinate (x will of course be 0 in this case).

It is the height of the external monitor (1440) corrected by the transformation (a factor of 2 here):
1440*2 = 2880.

I am thus using --pos 0x2880.


For reference, this is what I am using:
OS: Arch Linux
WM: i3
Laptop: 4k
External monitor: 1080p

3
  • When I apply this transformation --transform 2,0,0,0,2,0,0,0,1 , it makes everything smaller (double the screen space). What would be the transformation to make it not half as big, but double? Or is this not possible with --transform? It seems like --transform 0.5,0,0,0,0.5,0,0,0,1 would do the trick, but it also appears blurry. Aug 13, 2021 at 13:57
  • It all depends on the resolution of your monitors. It sounds like you are possibly applying the transformation on the wrong monitor (the high res one).
    – prosoitos
    Aug 13, 2021 at 17:28
  • 1
    Thanks, finally a solution that works! Yes, the transformation is a bit counter-intuitive, because it sets the inverse transformation (as I understood it), but at the end, the result is the best possible of what I could expect from Linux.
    – avp
    Dec 7, 2021 at 21:57
1

According to this link it's not currently possible due to limitations in X server:

There is only one scale factor for the desktop – I’ve not tested this in a multi-monitor configuration, but I can say that if they’re not both the same DPI (or close) monitors, then one will look good, and the other bad. As far as I know right now this is a limitation in x-server.

2
  • That's kind of what I thought too. I wasn't sure though because I was reading some stuff where people used xrandr to change the scaling on a single monitor. I messed around with this, but kept getting undesirable results.
    – Isaac Mast
    Jan 7, 2016 at 20:37
  • I think the issue is you can change the scaling on the monitors independently with xrandr, but stuff ends up getting rasterized really badly.
    – ocket8888
    Apr 8, 2017 at 16:59
0

Depending on your video card and used driver, this may work out of the box by just using the scaling settings under display options. I have an Nvidia MX150 / intel 620 combi in my laptop and had these issues with the proprietary driver (nvidia 440).

I run Ubuntu 20.04 LTS and with the Nouveau driver (select under additional drivers), this works for my internal HD display set to 100% and my external 4K screen set to 150%.

If you have issues, it might also be because of a bug. Please check my answer here for more details and a bug link, that might help you if the above does not:

https://askubuntu.com/questions/1122132/hidpi-laptop-screen-with-hd-external-monitor-dpi-issues/1267104#1267104

Please post your findings too at the appropriate place, it can help others. thanks

0

On latest installations (writing this on september 2021) you might be able to use Wayland and it's multiple scaling per monitor config (still no official support for nvidia cards, but hopefully that'll change soon!).

0

Simple and easy solution


so if you guys are looking for a simple and easy solution, there are so many confusing numbers but if you are a beginner like me these commands will help you and understand the situation better, lets dive left in..

First you need to know your display names, simple command just xrandr --listmonitors type and press enter

enter image description here

in picture above eDP-1 is my internal laptop LCD and DP-1 is external

after this you simply need to scale your external monitor for this enter the command

xrandr --output DP-1 --scale 1.5x1.5

1.5x1.5 the more the number the more it will zoom out and scale try 1.25x1.25 or 2x2

then sometime you notice the screens overlap to fix simply change your -pos for internal lcd, the command is

xrandr --output eDP-1 --scale 1x1  --pos 1480x0;

play with the 1480 the higher the number the more the screens will move on x-axis (horizontal)

my external monitor is on the left and laptop is in the right

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .