[arch-general] xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler tylera at privatedemail.net
Tue Jul 31 03:17:44 UTC 2018


Hi,

I am using ArchLinux with i3 on my Dell XPS 13" 9370 @ 3840x2160) HiDPI 
and everything works great with:

.Xresources:

! xft fonts
!----------------------------------------------------------------------
Xft.dpi: 220
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

! urxvt
!---------------------------------------------------------------------
URxvt*font:     xft:DejaVu Sans Mono for Powerline:size=12: \
                     minspace=False:antialias=true, \
                 xft:Segoe UI Emoji:size=12:minspace=False:antialias=true

URxvt*boldFont: xft:DejaVu Sans Mono for Powerline:size=12: \
                     minspace=False:antialias=true, \
                 xft:Segoe UI Emoji:size=12:minspace=False:antialias=true

URxvt.letterSpace: -1



and in /etc/profile.d/hidpi.sh

export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
export QT_AUTO_SCREEN_SCALE_FACTOR=0
export QT_SCREEN_SCALE_FACTORS=2
export QT_QPA_PLATFORMTHEME=qt5ct



However recently I bought a Dell DA300 Mobile Adapter and decided I 
wanted to use my external Dell 30" 3000WFP (2560x1600) over DisplayPort.

I found this blog article 
https://blog.summercat.com/configuring-mixed-dpi-monitors-with-xrandr.html 
which explains exactly what I am trying to do. The only difference is 
the placement of the external screen (mine is on the left of the laptop) 
and the screen size and resolution.

In that article he uses his HiDPI on both screens and then scales down 
on the external screen, which is why he doubles the resolution of the 
external display. The reason he does that is so he doesn't have to touch 
.Xresources or fiddle with toolkit scaling options.

Using this command I was able to get it working great with a single 
external monitor ie the Dell 30" 3000WFP @ (2560x1600)

xrandr --dpi 220 --fb 5120x3200 \
     --output eDP1 --off \
     --output DP1 --scale 2x2 --panning 5120x3200

With the dual-monitor setup I'm struggling to understand the panning 
option. I have looked at https://wiki.archlinux.org/index.php/xrandr and 
the man file and still couldn't figure that track x track y part out. 
It's not very easy to understand.

So far for the external monitor I have this:

xrandr --dpi 220 --fb 8960x5360 \
     --output eDP1 --mode 3840x2160 \
     --output DP1 --scale 2x2 --pos -2560x0 --panning 5120x3200+2560+0

What I want is to be able to access the whole area of both screens. In 
his example he has a laptop at 3200x1800 and an external monitor at 
1920x1080

> Dual monitors
> 
> When I want to use both monitors, this is the command I run:
> 
> xrandr --dpi 276 --fb 7040x3960 \
>     --output eDP-1 --mode 3200x1800 \
>     --output DP-1-2 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0
> 
> Here's an explanation of the options:
> 
>     Global options:
>         --dpi 276 sets the DPI to 276.
>         --fb 7040x3960 creates one screen with resolution 7040x3960. This is the combined resolution of the two monitors. The high DPI monitor has 3200x1800 resolution. The lower DPI monitor has 1920x1080 resolution, but I double it as I scale it by 2 (see below). Combine these like so: 3200+1920*2 x 1800+1080*2 = 7040x3960. Both monitors share this screen.
>     High DPI monitor options (--output eDP-1):
>         --mode 3200x1800 says to use resolution 3200x1800. This is the default, but specifying it is necessary if the monitor is disabled (as it is when using the external monitor by itself) as it enables the monitor.
>     Lower DPI monitor options (--output DP-1-2):
>         --scale 2x2 is similar to zooming out. This is necessary as we set the DPI globally to that of the high DPI monitor.
>         --pos positions it to the right of the laptop monitor.
>         --panning allows our pointer to access the whole area.

Any help or tips would be much appreciated!

-- 
Tyler


More information about the arch-general mailing list