Speaking about xrandr . I tried some GUI applications, like arandr, to switch between various multimonitor configurations — but found that they all are using just a limited subset of xrandr features. For example, I can't use mixed DPI settings or scale some outputs with arandr, but I can do it with xrandr: https://mas.to/@evgandr/114394277310057344. Yes, the X can do that! The well-known rumors (usually spreaded by Wayland fans) that only Wayland can do such things — looks like a fake. There are some utilities to configure newly connected display(s) automatically, like autorandr or xlayoutdisplay. But I prefer to issue xrandr commands by my hands, when I attach additional display(s) to my laptop. Because automation not always works the necessary way. For example, let's play with a big Benq XI2420z 24" monitor with 1920x1080 as a maximal available resoultion. I connected it to my laptop via good old VGA cable. So by default it reports not so much useful resolutions: ~ λ xrandr Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 8192 x 8192 DP-3 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 277mm x 155mm 2560x1440 59.95*+ 39.97 VGA-1 connected (normal left inverted right x axis y axis) 1024x768 60.00 800x600 60.32 56.25 848x480 60.00 640x480 59.94 HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) HDMI-3 disconnected (normal left inverted right x axis y axis) DP-2 disconnected (normal left inverted right x axis y axis) I can use the --auto key to let the xrandr use some automation and connect my Benq as the monitor right of my main monitor: ~ λ xrandr --output VGA-1 --right-of DP-3 --auto ~ λ xrandr Screen 0: minimum 320 x 200, current 3584 x 1440, maximum 8192 x 8192 DP-3 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 277mm x 155mm 2560x1440 59.95*+ 39.97 VGA-1 connected 1024x768+2560+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x768 60.00* 800x600 60.32 56.25 848x480 60.00 640x480 59.94 HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) HDMI-3 disconnected (normal left inverted right x axis y axis) DP-2 disconnected (normal left inverted right x axis y axis) And it looks like not so good: X output for primary display with 2560x1440 resolution and secondary with 1024x768 resolution No problem! I'll add 1920x1080 resolution by myself! To calculate the proper modeline for necessary resolution, the cvt utility exists (see man 1 cvt). It accepts the desired resolution (and refresh rate if necessary) and outputs the modeline string, which should be just passed to the xrandr. Then, added modeline could be attached to the desired video output — to the VGA-1 in my case: ~ λ cvt -r 1920 1080 # 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz Modeline "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ~ λ xrandr --newmode "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ~ λ xrandr --addmode VGA-1 1920x1080R ~ λ xrandr Screen 0: minimum 320 x 200, current 3584 x 1440, maximum 8192 x 8192 DP-3 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 277mm x 155mm 2560x1440 59.95*+ 39.97 VGA-1 connected 1024x768+2560+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x768 60.00* 800x600 60.32 56.25 848x480 60.00 640x480 59.94 1920x1080R 59.93 HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) HDMI-3 disconnected (normal left inverted right x axis y axis) DP-2 disconnected (normal left inverted right x axis y axis) And, as a result I can use the newly created modeline to "reconnect" my second monitor with 1920x1080 resolution: ~ λ xrandr --output VGA-1 --right-of DP-3 --mode 1920x1080R X output for primary display with 2560x1440 resolution and secondary with 1920x1080 resolution Resulting output of xrandr : ~ λ xrandr Screen 0: minimum 320 x 200, current 4480 x 1440, maximum 8192 x 8192 DP-3 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 277mm x 155mm 2560x1440 59.95*+ 39.97 VGA-1 connected 1920x1080+2560+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x768 60.00 800x600 60.32 56.25 848x480 60.00 640x480 59.94 1920x1080R 59.93* HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) HDMI-3 disconnected (normal left inverted right x axis y axis) DP-2 disconnected (normal left inverted right x axis y axis) Note, how size of "virtual" framebuffer changed with this operation. When I used 1024x768 resolution it was 3584x1440 . And after switching to 1920x1080 resolution for the second monitor it became: 4480x1440 . Looks good, but on this second monitor things looks soo big, comparing with my primary laptop monitor. No problem! I can scale down the output on the second monitor, so more UI elements wil fit in it: ~ λ xrandr --output VGA-1 --right-of DP-3 --mode 1920x1080R --scale 1.9 --filter nearest Result: X output for primary display with 2560x1440 resolution and secondary with 1920x1080 resolution (scaled) Now the screen sizes on the both displays are representing a real monitor dimensions (not ideally). The number after the --scaled option was set after some experiments. Ideally, it should has the some value which allows the GIU element with 2 cm length on the primary screen has the same length on the secondary display. But I just don't need such level of accuracy, so I set this value "by eye". Note, how size of virtual framebuffer changed again: ~ λ xrandr Screen 0: minimum 320 x 200, current 6208 x 2052, maximum 8192 x 8192 DP-3 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 277mm x 155mm 2560x1440 59.95*+ 39.97 VGA-1 connected 3648x2052+2560+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x768 60.00 800x600 60.32 56.25 848x480 60.00 640x480 59.94 1920x1080R 59.93* HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) HDMI-3 disconnected (normal left inverted right x axis y axis) DP-2 disconnected (normal left inverted right x axis y axis) Here the one problem lies. See the maximum 8192 x 8192 string? If I connect tons of external monitors to my laptop, then I'll be constrained with the 8192x8192 pixels as a size of global framebuffer. So, some big resolutions will become unaccessible, e.g. if I connect two additional 2K/4K monitors and try to use them with my laptop's 2K monitor. Looks like (according to the little search in the Internet: https://bugs.freedesktop.org/show_bug.cgi?id=102508), the maximal resolution depends on the used graphical drivers or hardware…