Switching to Linux from Mac / external display help

I’m trying to see if I can replace my MacBook Pro with a Dell Precision 5520 (very similar to Dell XPS 15, Xeon and Quadro instead of i7 and regular Nvidia).

I generally would work from a laptop,connected to an external monitor on my desk, then take the laptop to meetings or roll up to other people’s desks, then put the laptop back and connect it to an external monitor.

This particular laptop has a 15" 4k screen, that’s pretty unusable at native 4k; with 1.5x scaling it’s perfect.
The monitor I’m attaching it to is a 32" 4k, that’s perfect at 1:1.

How can I set up scaling so that when used on the go without the external monitor I get 2560x1440 equivalent size;
and then when used with an external monitor I get 1920x1080 equivalent on the internal, and full 4k resolution on the external?

Should I have KDE render everything at 3x scale then have xrandr --panning setups for each use case?

Or is there some way to do something with multiple GPUs? e.g. put external monitor always on nvidia somehow. How do I get multiple X screens with apps shifting from one to the other, can kwin do that?

KDE seems to have global scaling, but from my experience this tends to be bad for mixed resolution situations as it effectively ruins your monitors that are alright at native resolution.

I’ve had a look and it seems that xrandr may be what you’re looking for.

Take a look at these articles, they might be able to help you:

And here is Gentoo’s wiki page for xrandr:

I haven’t personally used this before, but if you’re up for it then have a play around. I’m sure someone on the forum could help you out if you hit a snag.

1 Like

I made some progress in the meantime, but I still need to verify it looks good.

Sadly because of how x11 works, it’s nearly impossible for an application to change scaling on the fly, with Wayland, this is easier but not yet implemented.

One strategy I was looking into was asking KDE to render everything at 1.5x.

Without an external monitor connected this is ok, resulting in a 2560x1440 effective size, rendered over 3840x2160 at --scale 1x1.

With an external monitor connected, to get 1920x1080 effective size I’d apply a --scale 0.75x0.75, which will have an effect of stretching 2880x1620 rendered pixels, onto the small 4k screen.

On an external 4k monitor, to have an effective size of 3840x2160 with KDE scaling at 1.5, I’d have to render 5760x3240 and run it with --scale 1.5.

The problem I was running into before was that there’s 2 drivers (xorg drivers or ddx-es) for the integrated intel GPU, one is older soon to be deprecated “intel”. Another one which I was getting by default is called “modesetting”.

For some reason, the “modesetting” ddx limits the texture sizes to 8k*8k, which means that without wayland, in xorg, I can only have a screen at most 8192pixels big, and for 1.5x scaling as described above I need 8640.

With the older, deprecated-ish “intel” xorg driver, I get 32kx32k texture sizes, but I only found that out later. I’ve tried 1.3x scaling in kde, it was blurry and kde was freaking out… Still need to try 1.5x

I’ve also been trying to use the proprietary nvidia 375.66 driver… I’ve made stuff work on one screen by throwing together a 2liner that lightdm would run to setup display with xrandr right before starting the session, but I’ve noticed that while idling it was using 7W more than without it (up to 19-20W from a baseline of a about 12-12.5W). I’ve since decided to remove proprietary Nvidia driver, and blacklist nouveau and use acpi_call to turn off the GPU and not use it at all. (It’s a Quadro M1200, pretty ancient anyway).

Now that I figured out how to get 1.5x scaling, I need to try how this scaling looks, and how it works with plugging in, and unplugging monitors, once I get my my usb-c <-> displayport cable.

Looking forward to Wayland making things better one day in this department.